On-demand virtual filesystem. Multi-backend via rclone. Conflict-safe bidirectional sync. No data loss.
~/GoogleDrive/ ← FUSE3 virtual mount ├── Documents/ │ ├── report.pdf ← hydrated (local cache) │ └── draft.docx ← placeholder (fetched on open) └── Photos/ └── 2025/ ← listing from remote index
Linux has excellent cloud sync tools, but none that combine on-demand hydration, native filesystem integration, and conflict safety.
| Approach | On-demand | Native FS | Conflict-safe | Multi-backend |
|---|---|---|---|---|
| stratosync | yes | yes (FUSE) | yes | yes (70+) |
| rclone mount | yes | yes (FUSE) | no | yes |
| rclone bisync | no | no (CLI) | partial | yes |
| Insync / OverGrive | no | partial | partial | limited |
| GNOME Online Accounts | no | GVFS only | no | limited |
Files appear instantly with real names and sizes. Content downloads only when you open a file. Subsequent reads use the local cache.
Edits save to local cache immediately and upload in the background after a debounce window. fsync() triggers instant upload.
Concurrent edits trigger automatic 3-way merge for text files, or produce .conflict siblings for binary files. Content-hash ETags ensure no silent overwrites.
Bounded LRU cache with configurable quota. Least-recently-used files are evicted locally but remain in the cloud. Pinned files are never evicted.
Powered by rclone. Google Drive, OneDrive, Dropbox, S3, Nextcloud, SFTP—any rclone remote works as a stratosync mount.
FUSE3 mount works with every tool: ls, cat, vim, cp, your IDE, your file manager. No special client needed.
x86_64 or ARM64
with FUSE3 support
apt install fuse3
or dnf install fuse3
From zero to mounted cloud drive in four steps.
1. Configure an rclone remote
rclone config # interactive setup for your cloud provider rclone lsd gdrive: # verify it works
2. Install stratosync
# Debian / Ubuntu curl -LO https://github.com/dmcbane/stratosync/releases/latest/download/stratosync_0.11.0_amd64.deb sudo dpkg -i stratosync_0.11.0_amd64.deb # Fedora / RHEL curl -LO https://github.com/dmcbane/stratosync/releases/latest/download/stratosync-0.11.0-1.x86_64.rpm sudo dnf install ./stratosync-0.11.0-1.x86_64.rpm # Arch (AUR) yay -S stratosync-git # Any distro (tarball) curl -LO https://github.com/dmcbane/stratosync/releases/latest/download/stratosync-0.11.0-linux-x86_64.tar.gz tar xzf stratosync-0.11.0-linux-x86_64.tar.gz sudo cp stratosync-0.11.0-linux-x86_64/stratosync* /usr/local/bin/
ARM64 packages also available — replace amd64/x86_64 with arm64/aarch64.
See all downloads on the releases page.
3. Configure a mount
# ~/.config/stratosync/config.toml [daemon] log_level = "info" [[mount]] name = "gdrive" remote = "gdrive:/" # rclone remote name mount_path = "~/GoogleDrive" # where files appear cache_quota = "10 GiB" poll_interval = "30s"
4. Start the daemon
systemctl --user start stratosyncd ls ~/GoogleDrive/ # your cloud files are here
For development or if prebuilt packages aren't available for your platform.
rustup update stable
apt install libfuse3-dev
apt install pkg-config
git clone https://github.com/dmcbane/stratosync cd stratosync ./install.sh # builds, installs to ~/.local/bin, enables systemd service
Once mounted, cloud files work like any local directory.
Filesystem operations
# Browse ls ~/GoogleDrive/Documents/ # Read (downloads on first access) cat ~/GoogleDrive/report.pdf # Edit (uploads automatically) vim ~/GoogleDrive/notes.md # Create, copy, move, delete cp local.txt ~/GoogleDrive/ mv ~/GoogleDrive/old.txt ~/GoogleDrive/new.txt mkdir ~/GoogleDrive/NewFolder
CLI commands
# Sync status across all mounts stratosync status # List remote contents stratosync ls [path] # Configuration stratosync config show stratosync config test stratosync config edit # Conflict management stratosync conflicts
Three-crate Rust workspace. No runtime dependencies beyond rclone and FUSE3.
Pure types, Backend trait, StateDb (SQLite), BaseStore (SHA-256 object store), delta providers, config structs. No FUSE, no network.
FUSE filesystem, sync engine with 3-way merge, cache manager, inotify watcher, delta poller. Tokio async runtime with FUSE bridge.
User-facing CLI via clap. Status, file listing, config management, conflict resolution.
All settings in a single TOML file at ~/.config/stratosync/config.toml.
Daemon settings
[daemon] log_level = "info" [daemon.fuse] threads = 4 attr_timeout_s = 5 entry_timeout_s = 5 allow_other = false [daemon.sync] max_hydration_concurrent = 4 max_upload_concurrent = 2 upload_debounce_ms = 2000 text_conflict_strategy = "merge" # or "keep_both" base_retention_days = 30
Mount settings (repeatable)
[[mount]] name = "gdrive" remote = "gdrive:/" mount_path = "~/GoogleDrive" cache_quota = "10 GiB" poll_interval = "30s" enabled = true [mount.eviction] policy = "lru" low_mark = 0.80 high_mark = 0.90
Stratosync is pre-alpha. Here's what's done and what's next.
FUSE3 mount with on-demand hydration. Files appear instantly, content downloads on open(). Systemd service, basic CLI.
Write, create, mkdir, rename, delete. Upload queue with debounce. Remote poller. LRU cache eviction. Crash recovery.
3-way text merge via git merge-file. Content-hash ETag detection. Delta APIs for Google Drive and OneDrive. Base version store. Desktop notifications. xattr sync status. conflicts resolve CLI (keep-local, keep-remote, merge, diff).
Pin/unpin for offline. Range-read fast path. Readdir prefetch. Nautilus emblem extension. System tray indicator. WebDAV sidecar backend. Distribution packaging (.deb, .rpm, AUR) for x86_64 and ARM64.
Selective sync with ignore patterns. File versioning. Bandwidth scheduling. Prometheus metrics. Encrypted cache.