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: -P

This 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:      2m13s

Detailed

# 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 10s

Simplified

# Compact one-line display (great for logs)
rclone copy /local remote: --stats-one-line

# With progress
rclone copy /local remote: --progress --stats-one-line

Output:

2024/01/01 12:00:00 INFO: 1.2 GiB / 5.6 GiB, 22%, 12.3 MiB/s, ETA 6m32s

Advanced

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, G

Save 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.log

JSON 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 filenames

Quick 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 parsing

For 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?