能让 rsync 只输出传输摘要(不逐文件刷屏)吗?
可以:rsync 加 --stats 在结束时输出传输统计摘要(文件数、字节数、速度、耗时),不加 -v 即可避免逐文件输出;要更安静用 -q。本文给出常用输出级别组合。
做法:加 --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
关键指标:Number of files transferred(实际变了多少)、speedup(增量传输的效率倍数)。
输出级别菜单
| 选项组合 | 输出内容 |
|---|---|
| (默认) | 只有错误 |
--stats |
错误 + 结尾统计摘要 |
-v |
逐文件列表 |
-v --progress |
逐文件 + 每个文件进度条 |
-q |
连警告都静默,只剩严重错误 |
--stats -h |
摘要用人类可读单位(K/M/G) |
脚本中的推荐姿势
备份/同步脚本里既要不刷屏、又要留痕:
rsync -a --stats --log-file=/var/log/rsync-backup.log /src/ /dst/
详细进日志文件,终端只看摘要;cron 里跑也不会糊你一脸邮件。
观测云对照
同步任务的成功证据集中留存。 rsync 日志文件被 DataKit 采集后,每次同步的文件数与耗时在观测云可查可对趋势,同步失败/量异常(比如突然 0 文件)可以配告警。
常见问题(FAQ)
Q:--stats 里的 total size 和 transferred 差很多?
A:正常。total 是全部文件体积,transferred 是本次实际传输(增量算法只传变化部分),speedup 高说明增量生效了。
Q:想要"只列出会传什么"但不真传?
A:加 -n(dry run)配 -i(变更原因),先看清单再真跑。
Q:摘要能输出成机器可解析格式吗?
A:rsync 没有 JSON 输出;脚本里解析 --stats 文本或改用 rsync --out-format 自定义逐条格式后自行聚合。