Tips & Tricks
Progress Bar & Stats
How to monitor rclone transfers with progress bars and detailed statistics
Progress Bar and Statistics
Using progress flags gives you a live, detailed view of exactly what rclone is doing and how long it will take.
Usage
Default
# Add --progress or -P to any command
rclone copy /local remote: --progress
# Short version
rclone copy /local remote: -PThis shows a real-time, updating display:
Transferred: 1.234 GiB / 5.678 GiB, 22%, 12.34 MiB/s, ETA 6m32s
Checks: 120 / 456, 26%
Transferred: 12 / 45, 27%
Elapsed time: 2m13sDetailed
# Show stats every 10 seconds
rclone copy /local remote: --stats 10s
# More detailed stats
rclone copy /local remote: --stats 10s -v
# Stats with progress
rclone copy /local remote: --progress --stats 10sSimplified
# Compact one-line display (great for logs)
rclone copy /local remote: --stats-one-line
# With progress
rclone copy /local remote: --progress --stats-one-lineOutput:
2024/01/01 12:00:00 INFO: 1.2 GiB / 5.6 GiB, 22%, 12.3 MiB/s, ETA 6m32sAdvanced
Custom Units
# Human-readable (default - automatic units)
rclone copy /local remote: --progress
# Always use specific units
rclone copy /local remote: --progress --stats-unit bits # bits, B, K, M, GSave to File
# Log everything
rclone copy /source remote: \
--progress \
--log-file transfer.log \
--stats-log-level INFO
# Separate stats log
rclone copy /source remote: \
--progress \
--stats-log-level NOTICE \
--log-file transfer.logJSON Output
# Output stats as JSON (for parsing)
rclone copy /source remote: \
--progress \
--stats 10s \
--use-json-log
# Parse with jq
rclone copy /source remote: --use-json-log | jq '.stats'Scripting
#!/bin/bash
# Monitor long transfer
LOG="transfer-$(date +%Y%m%d).log"
# Run with progress, capture output
rclone copy /huge/folder remote: \
--progress \
--stats 10s \
--log-file "$LOG" 2>&1 | tee progress.txt
# Parse results
echo "Transfer complete!"
echo "Total transferred: $(grep "Transferred:" "$LOG" | tail -1)"Terminal width
# Adjust for narrow terminals
rclone copy /source remote: \
--progress \
--stats-file-name-length 40 # Shorter filenames
# For wide terminals
rclone copy /source remote: \
--progress \
--stats-file-name-length 120 # Longer filenamesQuick reference
# Essential progress flags
--progress (-P) # Real-time progress bar
--stats 10s # Statistics interval
--stats-one-line # Compact output
--stats-log-level INFO # Log level for stats
-v # Show individual files
-vv # Show even more detail
--use-json-log # JSON output for parsingFor interactive (terminal) sessions, lean on --progress. For background jobs, --stats is your friend (especially if you log to a file).
Tweaking the stats frequency based on transfer size can keep your logs cleaner, while adding -v lets you see exactly which files are moving.
Combining these with --dry-run is the best way to preview exactly what your command will do as well as how long it will take.
How is this guide?