| name | rclone |
| description | This skill should be used when uploading, syncing, or managing files across cloud storage providers using rclone. It handles transfers to S3, Cloudflare R2, Backblaze B2, Google Drive, Dropbox, or any S3-compatible storage. |
rclone File Transfer Skill
Setup Check (Always Run First)
Before any rclone operation, verify installation and configuration:
command -v rclone >/dev/null 2>&1 && rclone version || echo "NOT INSTALLED"
rclone listremotes 2>/dev/null || echo "NO REMOTES CONFIGURED"
If rclone is NOT installed
Guide the user to install:
brew install rclone
d=$(mktemp -d -t rclone-install.XXXXXXXX) && mkdir -p ~/.local/bin && curl -sfL https://downloads.rclone.org/rclone-current-linux-amd64.zip -o "$d/rclone.zip" && unzip -q "$d/rclone.zip" -d "$d" && cp "$d"/rclone-*/rclone ~/.local/bin/ && chmod +x ~/.local/bin/rclone && rm -rf "$d"
If NO remotes are configured
Walk the user through interactive configuration:
rclone config
Common provider setup quick reference:
| Provider | Type | Key Settings |
|---|
| AWS S3 | s3 | access_key_id, secret_access_key, region |
| Cloudflare R2 | s3 | access_key_id, secret_access_key, endpoint (account_id.r2.cloudflarestorage.com) |
| Backblaze B2 | b2 | account (keyID), key (applicationKey) |
| DigitalOcean Spaces | s3 | access_key_id, secret_access_key, endpoint (region.digitaloceanspaces.com) |
| Google Drive | drive | OAuth flow (opens browser) |
| Dropbox | dropbox | OAuth flow (opens browser) |
Example: Configure Cloudflare R2
rclone config create r2 s3 \
provider=Cloudflare \
access_key_id=YOUR_ACCESS_KEY \
secret_access_key=YOUR_SECRET_KEY \
endpoint=ACCOUNT_ID.r2.cloudflarestorage.com \
acl=private
Example: Configure AWS S3
rclone config create aws s3 \
provider=AWS \
access_key_id=YOUR_ACCESS_KEY \
secret_access_key=YOUR_SECRET_KEY \
region=us-east-1
Common Operations
Upload single file
rclone copy /path/to/file.mp4 remote:bucket/path/ --progress
Upload directory
rclone copy /path/to/folder remote:bucket/folder/ --progress
Sync directory (mirror, deletes removed files)
rclone sync /local/path remote:bucket/path/ --progress
List remote contents
rclone ls remote:bucket/
rclone lsd remote:bucket/
Check what would be transferred (dry run)
rclone copy /path remote:bucket/ --dry-run
Useful Flags
| Flag | Purpose |
|---|
--progress | Show transfer progress |
--dry-run | Preview without transferring |
-v | Verbose output |
--transfers=N | Parallel transfers (default 4) |
--bwlimit=RATE | Bandwidth limit (e.g., 10M) |
--checksum | Compare by checksum, not size/time |
--exclude="*.tmp" | Exclude patterns |
--include="*.mp4" | Include only matching |
--min-size=SIZE | Skip files smaller than SIZE |
--max-size=SIZE | Skip files larger than SIZE |
Large File Uploads
For videos and large files, use chunked uploads:
rclone copy large_video.mp4 remote:bucket/ --s3-chunk-size=64M --progress
rclone copy /path remote:bucket/ --progress --retries=5
Verify Upload
rclone check /local/file remote:bucket/file
rclone lsl remote:bucket/path/to/file
Troubleshooting
rclone lsd remote:
rclone lsd remote: -vv
rclone config show remote