Show an rsync summary without a per-file listing
Use --stats without verbose output, read transfer statistics correctly, and keep detailed logs when needed.
Use --stats and omit -v to request an end-of-run summary without the usual verbose per-file listing:
rsync -a --stats /src/dir/ /dst/dir/
The source's trailing slash means copy the directory's contents into the destination. Review paths carefully; output settings do not change which files rsync operates on. The examples here do not request destination deletion.
Read the summary accurately
The exact labels and available statistics depend on the rsync version. Typical fields include the number of files considered, regular files transferred, total file size, transferred-file size, literal and matched data, and bytes sent and received.
These figures measure different things:
- Total file size describes the files in the transfer list, including files whose contents may not need transfer.
- Total transferred file size is the sum of the full sizes of files transferred, not just the changed blocks sent over the connection.
- Literal data is unmatched file-update data supplied by the sender; matched data is data reconstructed from existing receiver content.
- Total bytes sent/received includes protocol traffic and is different from the logical sizes of files.
A high reported speedup is not proof that delta compression saved that exact ratio. Skipping unchanged files, protocol overhead and transfer options all affect the numbers. Local transfers normally use whole-file behavior unless configured otherwise, so matched data can be zero even when existing files are being updated.
Choose the output level
| Options | Purpose |
|---|---|
-a --stats |
Copy with an end summary and diagnostics |
-a --stats -h |
Make summary sizes easier to read |
-av |
Include verbose file reporting |
-av --progress |
Add per-file transfer progress |
-aq |
Suppress non-error output |
Avoid combining -q with a summary requirement: quiet mode suppresses informational output. It does not mean “show only severe errors,” and you should still check the exit status. Extra options, daemon messages and the particular transfer mode can produce output beyond a simple file list.
On modern rsync, --info provides finer control over output categories; check rsync --info=help for the installed version rather than assuming every host supports the same categories.
Keep a detailed log separately
rsync -a --stats --log-file=/var/log/rsync-backup.log /src/ /dst/
Ensure the invoking account can write the log. The log-file feature can record transfer details without enabling a verbose console listing; consult the installed version's default log format or set --log-file-format when you need specific fields. Rotate the log and retain the command's exit status.
A cron job running this command still produces summary output, which cron may email unless redirected. “No per-file listing” is not “no cron email.”
Preview before changing files
rsync -ani /src/dir/ /dst/dir/
-n requests a dry run and -i itemizes proposed changes. The preview is useful for checking scope, but its byte statistics do not represent a completed transfer. Files can also change between preview and execution.
Common questions
Why is total size much larger than the data sent? Many files may already match, or the receiver may reuse parts of changed files. Distinguish logical file sizes from actual transfer data before attributing the difference to one mechanism.
Can I get JSON? Rsync does not provide a general native JSON summary mode. For automation, control locale when parsing statistics, record the rsync version, and allow for format changes. --out-format customizes per-item records; it does not itself produce an aggregate JSON report.
Does a summary prove the backup succeeded? No. Check the exit status and verify the required backup contents. A partial transfer can still leave useful statistics.
References
Contact us
Join the community
to join the community
Try Guance
Start online and pay only for what you use.
Get startedChoose a Guance plan