A powerful Python CLI tool that simplifies rclone operations with an intuitive interface for managing file transfers, mounting cloud storage, serving files, and automating sync tasks.
- 📤 Upload/Download: Interactive file transfers with overwrite protection
- 🔗 Mount Remotes: Mount cloud storage as local directories with FUSE
- 🌐 Serve Files: Share local/remote files via HTTP, WebDAV, or FTP
- 🔄 Sync Pairs: Automate recurring sync tasks with configurable modes (11 modes)
- ☁️ Multi-Cloud: Support for Google Drive, Mega, Google Photos, and all rclone backends
- 📊 Status Dashboard: View active mounts with live transfer stats and sync pairs
- 🛠️ Storage Utils: Checksum verification, deduplication, space usage, copy-between remotes
- 🖥️ Web UI: Browser-based file manager (optional Streamlit)
- 🧪 Tested: 86 unit tests + 4 integration tests, CI pipeline
- Google Drive (including shared drives)
- Mega
- Google Photos
- Any rclone-supported backend (S3, Dropbox, OneDrive, etc.)
- Python 3.10+
- rclone installed and configured
- uv package manager (recommended)
- fzf (optional, recommended for fuzzy search)
- Windows only: WinFsp required for
rman mount(kernel driver for FUSE support)
- Clone the repository:
git clone https://github.com/Onehand-Coding/rclone-manager.git
cd rclone-manager- Install dependencies:
uv sync- Configure rclone remotes:
rclone config- Generate default config (optional):
uv run rclone-manager generate-configThis creates configs/config.ini with example settings. Edit it to customize credentials and rclone flags.
All configuration files live in the configs/ directory:
rclone-manager/
├── configs/
│ ├── config.ini # Main configuration (create from .example)
│ ├── config.ini.example # Template with defaults
│ └── sync-pairs.json # Automated sync pair definitions
Contains:
- DEFAULT section: Log level, port, username/password for serving, bind address, XSRF/CORS toggles
- rclone_flags section: Custom flags per remote type (mega, drive, google photos)
- filters section: Global exclude/include patterns for transfers
Key security defaults (all configurable):
| Setting | Default | Description |
|---|---|---|
BIND_ADDRESS |
127.0.0.1 |
Bind serve/Web UI to localhost only |
ENABLE_XSRF_PROTECTION |
true |
Cross-site request forgery protection |
ENABLE_CORS |
true |
CORS restricted to origin |
PASSWORD |
(required) | No default — must be explicitly set |
Credentials for rclone serve are passed via environment variables (RCLONE_USER/RCLONE_PASS) — never exposed on the command line or in process listings.
Defines automated sync tasks with modes like upload-only, download-only, sync, and two-way bisync.
Global exclude/include patterns are applied to all upload, download, and sync operations.
Default exclude patterns:
.git/,.venv/,__pycache__/*.pyc,*.pyo,.DS_Store,Thumbs.db*.tmp,*.swp,.cache/,node_modules/
Manage filters:
# Interactive filter management
uv run rclone-manager filters
# Add temporary excludes during upload/download
# Prompts for patterns like: *.log, temp/, .git/Per-pair filters (in sync-pairs.json):
{
"name": "Work Docs",
"local": "/home/user/Work",
"remote": "drive:Backup/Work",
"mode": "upload_only",
"filters": {
"exclude": ["*.tmp", "drafts/"]
}
}uv run rclone-manager upload [--overwrite]Interactive upload with file/folder selection and remote destination choice.
uv run rclone-manager download [--overwrite]Interactive download from remote storage.
uv run rclone-manager sync [--dry-run] [--preview] [--force]Direct sync between two remote storages (no local download).
sync is destructive — files on the destination that don't exist in the source will be deleted.
Options:
--dry-run— Show what would be transferred without making changes--preview— Show files that would be copied/deleted/overwritten, then ask for confirmation--force— Skip confirmation (use with caution!)
Examples:
# Preview what would happen (recommended first)
uv run rclone-manager sync --preview
# Dry run to test without changes
uv run rclone-manager sync --dry-run
# Force sync without confirmation (scripted use)
uv run rclone-manager sync --forceuv run rclone-manager mountMount a remote as a local directory (FUSE).
uv run rclone-manager unmountUnmount active rclone mounts.
uv run rclone-manager serve-remoteServe remote storage over HTTP, WebDAV, or FTP.
uv run rclone-manager serve-localServe local directories over the network.
# Interactive menu
uv run rclone-manager sync-pairs
# Direct actions
uv run rclone-manager sync-pairs add
uv run rclone-manager sync-pairs list
uv run rclone-manager sync-pairs run
uv run rclone-manager sync-pairs removeSync Modes:
upload_only: Copy local → remote (safe, no deletions)download_only: Copy remote → local (safe, no deletions)upload_delete: Sync local → remote (deletes extra remote files)download_delete: Sync remote → local (deletes extra local files)two_way: Bidirectional sync using rclone bisync
uv run rclone-manager statusShow active mounts with transfer stats and configured sync pairs.
uv run rclone-manager lsNavigate and list remote directory contents.
uv run rclone-manager checksumVerify file integrity between local and remote.
uv run rclone-manager dedupeFind and remove duplicate files on a remote.
uv run rclone-manager spaceShow quota and storage usage for remotes.
uv run rclone-manager copy-betweenCopy files directly between two remotes.
uv run rclone-manager bisyncBidirectional sync between two remotes.
uv run rclone-manager web-uiLaunch browser-based file manager.
uv run rclone-manager configManage rclone flags in config.ini interactively.
uv run rclone-manager filtersInteractively manage global exclude/include patterns.
When fzf is installed and USE_FZF = true in config.ini, all selection interfaces use fuzzy search:
- Type to filter: Start typing to narrow down items instantly
- Multi-select: Press
TaborShift+Tabto select multiple items - Navigate: Use arrow keys or
Ctrl+j/Ctrl+k - Confirm: Press
Enterto confirm selection - Cancel: Press
EscorCtrl+cto cancel
If fzf is not installed or USE_FZF = false, the classic numbered-list interface is used:
- Single item:
1(select item 1) - Multiple items:
1,2,3(select items 1, 2, and 3) - Go up:
..(navigate to parent directory) - Select current:
.ord(select current directory/path)
uv run rclone-manager upload
# Navigate to your folder, select Google Drive remote, choose destinationuv run rclone-manager mount
# Select remote, choose mount point, access via ~/mnt/<name>uv run rclone-manager sync-pairs add
# Name: "Work Docs"
# Local: /home/user/Documents/Work
# Remote: drive:Backup/Work
# Mode: upload_only
# Run anytime with: uv run rclone-manager sync-pairs runuv run rclone-manager status- Remote not found: Run
rclone configto set up remotes - Mount fails: Ensure FUSE is installed (
sudo apt install fuseon Linux) - Permission denied: Check file permissions and rclone remote access
- Network issues: Verify firewall settings for serving functionality
- Use VFS cache mode for better streaming performance
- Adjust cache size based on available disk space
- Use
--overwriteflag carefully to avoid unnecessary transfers
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
MIT License - see LICENSE file for details.
Note: This tool requires a properly configured rclone installation. Credentials for serving are passed via environment variables (not CLI args), and all services bind to 127.0.0.1 by default. Configure XSRF protection and CORS via config.ini. Set PASSWORD explicitly — there is no default fallback.