rsync通过增量同步、断点续传、校验和保护机制保障大目录安全复制:默认-a选项保留权限时间戳,--checksum强制校验一致性,-n预览防误覆盖,--bwlimit控资源,配合空间权限检查与复制后md5抽样验证确保完整性。

安全复制大体积目录,核心是保证数据完整性、避免中断丢失、控制资源占用,并防止覆盖误操作。不是简单用 cp -r 就完事。
用 rsync 替代 cp:断点续传 + 校验 + 增量同步
rsync 是 Linux 下最稳妥的大目录复制工具,它默认启用增量传输和快速校验:
-
基础安全命令:
rsync -avh --progress /source/ /destination/
注意源路径末尾的/——它表示“复制目录内容”,不带斜杠则会把整个目录名也复制进去 -
加校验保一致:加上
--checksum强制逐文件比对 checksum(而非仅看大小和时间),适合对一致性要求高的场景(如备份、迁移生产数据) - 防中断重来:若中途断开,再次运行相同命令会自动跳过已传完的文件,只续传未完成或变更的部分
-
限速控负载:加
--bwlimit=5000(单位 KB/s)可避免占满 I/O 或网络带宽,例如rsync -avh --bwlimit=2000 ...
复制前检查空间与权限
大目录容易因目标盘空间不足或权限拒绝而失败,提前验证能避免白跑一趟:
- 用
df -h /destination确认目标挂载点剩余空间 ≥ 源目录估算大小(可用du -sh /source快速查看) - 确保当前用户对目标路径有写权限;若需保留属主/属组,目标父目录应允许创建子目录(如
drwxr-xr-x不够,drwxrwsr-x更稳妥) - 若涉及 root 权限(如复制
/etc或/var/lib/docker),建议用sudo rsync,但避免全程用 root 运行——先测试普通用户可读的子目录
避免覆盖关键文件:加保护开关
误覆盖配置或系统文件可能引发故障,几个实用防护措施:
-
预览不执行:加
-n(dry-run)参数模拟运行,列出所有将被复制/覆盖的文件,确认无误再删掉-n真正执行 -
跳过已有文件:加
--ignore-existing,目标中已存在的同名文件不覆盖(适合追加式同步) -
排除干扰项:用
--exclude='*.log' --exclude='cache/'跳过日志、缓存等非必要内容,减少体积和风险(注意引号防 shell 展开) -
保留原始时间戳与权限:
-a已包含-p(权限)、-t(时间)、-r(递归)等,无需额外加
复制后务必验证
传完不等于成功。尤其跨设备或网络复制,必须验证:
- 对比目录结构和文件数:
find /source -type f | wc -l和find /destination -type f | wc -l - 抽样校验关键文件 MD5:
md5sum /source/config.yaml与md5sum /destination/config.yaml是否一致 - 若启用
--checksum,rsync 本身会在结束时报告 “sent … bytes received … bytes” 和 “total size is …”,数值匹配即大概率完整











