rsync 显示进度条需按场景选参数:单文件用 -avhP 显示实时进度,多文件用 --info=progress2 查看总体进度,配合 --stats、-h、-i 可增强信息完整性与可读性。

在 Linux 中用 rsync 显示详细的传输进度条,关键不是加一个参数就完事,而是根据你要看的信息类型选对选项:是想盯住单个大文件的实时进度,还是想掌握整个任务的总体完成度?不同场景下,参数效果差别明显。
显示单个文件的实时进度条
适合复制单个大文件(比如 ISO 镜像、视频或数据库备份),能看到当前文件已传多少、速度多快、还剩多久。
- 用 --progress 或简写 -P:两者都显示每个文件的进度条和传输统计(如
ubuntu.iso 2.12G 65% 42.7MB/s 0:01:22) -
-P 更实用,它等价于
--partial --progress,中断后能续传,不会从头开始 - 建议搭配 -h(人类可读单位)和 -v(详细输出),让数字更直观:
rsync -avhP source_file destination/
查看整体传输进度(推荐用于多文件同步)
当要同步几百个文件时,--progress 会刷屏。用 --info=progress2 可以只显示一行总进度,清晰不干扰:
- 它统计的是“所有文件总大小”的完成百分比,而不是逐个文件滚动
- 输出类似:
8.22G 34% 18.6MB/s 0:05:12,含已传字节数、总进度、实时速度、预估剩余时间 - 命令示例:
rsync -av --info=progress2 /src/ /dst/ - 注意:-P 和 --info=progress2 可同时使用,但后者优先级更高,覆盖前者的行为
补充细节让进度更有价值
光有进度条还不够,加上这几个参数能让信息更完整、更可靠:
- --stats:传输结束后给出汇总报告(总文件数、传输量、速度、跳过数量等)
- --human-readable(或 -h):把字节自动转成 KB/MB/GB,避免一长串数字
-
--itemize-changes(或 -i):每行前标出文件变动类型(如
<f> 表示新增文件),方便确认哪些被复制了</f> - 组合示例:
rsync -avh --info=progress2 --stats --itemize-changes /data/ /backup/
断点续传和稳定性保障
网络不稳定或手动中断时,确保下次能接着传,而不是重来:
- 必须启用 --partial(或用 -P,它自带这个功能)
- 配合 --append(仅追加)或 --ignore-existing(跳过已有文件),按需控制行为
- 如果目标是远程服务器,SSH 默认支持断点续传;本地拷贝也生效,只要目标路径没被手动删掉部分文件


















