Shell Daily 2026-01-26: 完美传输 (Rsync Progress)
Shell Daily 2026-01-26: 完美传输 (Rsync Progress)
在本地或服务器之间复制大文件时,cp 和 scp 常常让人提心吊胆:光标在那里闪烁,没有任何反馈。你不知道它是卡住了、快完了,还是刚刚开始。更糟糕的是,如果传输到 99% 网络波动断开了,你只能从头再来。
对于大文件传输,请彻底遗忘 cp,拥抱 rsync。
怎么用
rsync 不仅是远程同步工具,也是本地复制的神器。配合 -P 参数,它能提供工业级的传输体验。
-
-P:这是一个组合参数,等同于--partial+--progress。 -
--progress:显示进度条、传输速度和预计剩余时间。 -
--partial:断点续传。如果传输中断,它会保留已传输的半成品文件,下次运行时直接从断点继续,而不是重头开始。 -
兼容性:Linux/macOS 标配(或通过包管理器轻松获取)。
适用场景
- 大文件迁移:移动几十 GB 的数据库备份或 Docker 镜像。
- 不稳定网络:在 VPN 或弱网环境下传输文件。
- 本地拷贝:替代
cp复制大目录,获得进度反馈。
示例 1:本地大文件复制 (带进度条)
想把 50GB 的日志文件备份到挂载的硬盘,cp 是黑盒,rsync 是可视化的。
# -a: 归档模式(保留权限等); -P: 进度+断点续传
$ rsync -aP /var/log/nginx/access.log.huge /mnt/backup/
sending incremental file list
access.log.huge
32,505,856 3% 45.21MB/s 0:15:32 <-- 清晰的反馈
示例 2:远程断点续传 (SSH)
传输进行了一半 SSH 断了?没关系,再次执行完全相同的命令,它会自动识别并继续传输剩余部分。
# 就像用 scp 一样,但更强健
$ rsync -P -e ssh db_dump_2026.sql user@192.168.1.50:/data/backup/

浙公网安备 33010602011771号