Skip to content
Youness Fkhach · Writing · · 2 min readHomeWorkWritingResume

Scrubfs: Effortless on-the-fly metadata cleaning

A VPN hides your location, but file metadata leaves fingerprints everywhere. I built scrubfs to strip metadata on read without modifying original files.

RustLinuxPrivacyOpen Source

A VPN hides your IP address, but your digital fingerprints remain everywhere. Every time you upload a photo or document, hidden metadata leaks your exact GPS coordinates, camera serial numbers, author names, and edit history.

Uploading these files to public platforms, clients, or web forms leaks private data by default.

The friction and impact

Cleaning metadata manually is tedious:

I needed a system that sanitizes metadata automatically during upload without altering my local files.

Solving it with scrubfs

I built scrubfs, a virtual FUSE filesystem written in Rust.

Instead of modifying files on disk, scrubfs mounts a single virtual directory (defaulting to ~/scrubfs) that mirrors configured source folders. When an application or browser opens a file through the ~/scrubfs path, scrubfs intercepts the read, passes a temporary copy through mat2, and serves the metadata-stripped bytes from memory.

Original files on disk are never touched.

What this architecture provides:

How to use it

scrubfs runs on Linux and requires FUSE 3 and mat2.

Building and installing from source:

cargo build --release
sudo install -Dm755 target/release/scrubfs /usr/local/bin/scrubfs

Adding folders to the virtual drive:

scrubfs add ~/Downloads
scrubfs add ~/Documents
scrubfs add ~/work/client-docs --name client

Starting the virtual drive:

scrubfs

The drive mounts at ~/scrubfs with the following structure:

~/scrubfs/
├── Downloads/
├── Documents/
└── client/

To upload a clean file, choose ~/scrubfs inside any browser upload dialog or file manager instead of the source directory.

Stopping the daemon:

scrubfs stop

The source code is published on GitHub.