能让 rsync 只输出传输摘要(不逐文件刷屏)吗?

可以:rsync 加 --stats 在结束时输出传输统计摘要(文件数、字节数、速度等),不加 -v 即可避免逐文件输出;要更安静用 -q。本文给出常用输出级别组合。

最佳实践
能让 rsync 只输出传输摘要(不逐文件刷屏)吗?封面

做法:加 --stats 选项,并且不要加 -v——rsync 默认只输出错误,结束时 --stats 会打印一份摘要:传输文件数、总字节数、实际传输量、速度等;具体字段随版本变化,不保证有完整作业耗时。想彻底安静用 -q(连错误之外的一切都静默)。

基本用法

rsync -a --stats /src/dir/ /dst/dir/

输出示例(结尾处):

Number of files: 12,430
Number of files transferred: 152
Total file size: 4.21G bytes
Total transferred file size: 96.4M bytes
Literal data: 96.4M bytes
Matched data: 0 bytes
File list size: 287K
Total bytes sent: 97.1M
Total bytes received: 3.2K
sent 97.1M bytes  received 3.2K bytes  12.9M bytes/sec
total size is 4.21G  speedup is 43.36

关键指标:传输文件数、逻辑文件大小与实际发送/接收字节数。speedup 是总文件大小除以发送加接收字节数,不是耗时加速倍数。

输出级别菜单

选项组合 输出内容
(默认) 只有错误
--stats 错误 + 结尾统计摘要
-v 逐文件列表
-v --progress 逐文件 + 每个文件进度条
-q 抑制非错误消息,错误仍可输出
--stats -h 摘要用人类可读单位(K/M/G)

脚本中的推荐姿势

备份/同步脚本里既要不刷屏、又要留痕:

rsync -a --stats --log-file=/var/log/rsync-backup.log /src/ /dst/

详细进日志文件,终端只看摘要;cron 仍可能将终端摘要作为邮件发送;不需要邮件时须重定向 stdout 或配置 MAILTO。

常见问题(FAQ)

Q:--stats 里的 total size 和 transferred 差很多?
A:正常。total 是文件列表中的逻辑总大小,Total transferred file size 是此次传输文件的完整逻辑大小,不是网络传输量;网络量看 Total bytes sent/received。未变化文件被跳过也会提高 speedup,不能仅凭它认定增量算法收益。

Q:想要"只列出会传什么"但不真传?
A:加 -n(dry run)配 -i(变更原因),先看清单再真跑。

Q:摘要能输出成机器可解析格式吗?
A:rsync 没有 JSON 输出;脚本里解析 --stats 文本或改用 rsync --out-format 自定义逐条格式后自行聚合。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台