rclone --exclude
The exclude flag is the fastest way to remove noisy, risky, or irrelevant paths from a transfer plan. This guide focuses on practical exclusion design so logs, caches, secrets, and generated artifacts are consistently skipped without accidentally filtering business-critical files.
Syntax
rclone copy SRC DST --exclude "PATTERN"
Common Patterns
# skip dependency trees
rclone sync /srv/app remote:backup/app --exclude "**/node_modules/**"
# skip logs
rclone sync /srv/app remote:backup/app --exclude "**/*.log"
# skip git metadata
rclone sync /srv/app remote:backup/app --exclude "**/.git/**"
Notes
- Use quotes around patterns to avoid shell expansion.
**is recursive and usually needed for nested paths.- Prefer dry-run before production changes.
rclone sync /srv/app remote:backup/app --exclude "**/*.tmp" --dry-run -vv
Examples with Output
1. Exclude log files
Input command:
rclone copy /srv/app remote:backup/app --exclude "**/*.log" --dry-run
Expected output:
NOTICE: *.log files skipped
Transferred: 0 / Queued files: 214
2. Exclude node_modules
Input command:
rclone sync /srv/app remote:backup/app --exclude "**/node_modules/**" --dry-run
Expected output:
NOTICE: node_modules trees excluded
Would transfer 128 files
3. Exclude .git metadata
Input command:
rclone copy /srv/app remote:backup/app --exclude "**/.git/**" --dry-run
Expected output:
NOTICE: .git content excluded
Would transfer repository working files only
4. Exclude env files
Input command:
rclone copy /srv/app remote:backup/app --exclude "**/.env*" --dry-run
Expected output:
NOTICE: .env and .env.* excluded
Would transfer 96 files
5. Exclude cache folders
Input command:
rclone sync /srv/app remote:backup/app --exclude "**/cache/**" --dry-run
Expected output:
NOTICE: cache directories excluded
Would transfer 73 files
6. Exclude temp files
Input command:
rclone copy /srv/app remote:backup/app --exclude "**/*.tmp" --dry-run
Expected output:
NOTICE: *.tmp excluded
Would transfer 151 files
7. Exclude uploads older dumps
Input command:
rclone copy /srv/uploads remote:backup/uploads --exclude "**/*.bak" --dry-run
Expected output:
NOTICE: backup suffix files excluded
Would transfer 410 files
8. Exclude hidden directories
Input command:
rclone copy /srv/app remote:backup/app --exclude "/.*" --dry-run
Expected output:
NOTICE: top-level hidden directories excluded
Would transfer 88 files
9. Exclude wordpress cache plugins
Input command:
rclone sync /srv/www remote:backup/www --exclude "**/wp-content/cache/**" --dry-run
Expected output:
NOTICE: wp-content/cache excluded
Would transfer 302 files
10. Exclude sqlite and lock files
Input command:
rclone copy /srv/data remote:backup/data --exclude "**/*.sqlite*" --exclude "**/*.lock" --dry-run
Expected output:
NOTICE: sqlite and lock files excluded
Would transfer 49 files
11. Exclude large media folder
Input command:
rclone copy /srv/app remote:backup/app --exclude "media/raw/**" --dry-run
Expected output:
NOTICE: media/raw excluded
Would transfer 67 files
12. Exclude build artifacts
Input command:
rclone sync /srv/repo remote:backup/repo --exclude "**/dist/**" --exclude "**/build/**" --dry-run
Expected output:
NOTICE: dist/build trees excluded
Would transfer 119 files
13. Exclude JSON logs recursively
Input command:
rclone copy /srv/app remote:backup/app --exclude "**/logs/**/*.json" --dry-run
Expected output:
NOTICE: nested JSON logs excluded
Would transfer 92 files
14. Exclude by suffix and verify
Input command:
rclone copy /srv/app remote:backup/app --exclude "**/*-debug.txt" --dry-run -vv
Expected output:
DEBUG: Excluded file: api-debug.txt
INFO : 1 files excluded by rule
15. Multiple exclude flags
Input command:
rclone sync /srv/app remote:backup/app --exclude "**/*.log" --exclude "**/*.tmp" --exclude "**/.env" --dry-run
Expected output:
NOTICE: 3 exclude rules applied
Would transfer 84 files