首页/系统/Linux 运维命令速查/场景:rsync 干跑核对同步差异
文件与目录76 条

场景:rsync 干跑核对同步差异

正式同步/删除前先 -n 空跑,把将发生的每处变化(新增/修改/删除)列出来确认。

Linux 运维命令速查系统更新于 2026-10-13

干跑为什么要先做

正式同步之前先空跑是使用 rsync 的基本纪律:加上 -n 后 rsync 只报告「将会做什么」,不写入任何文件。配合 --delete 与 --itemize-changes,能逐条看到将要新增、修改与删除的对象,其中删除清单必须人工过一遍——--delete 是备份与镜像同步中最容易造成数据丢失的选项。还要记住干跑与实跑之间存在时间差,源数据会变化,所以确认后应尽快执行,不要把干跑结果当成最终依据。

基本信息

适用平台Linux/macOS(rsync)
命令语法rsync -avn --delete --itemize-changes 源/ 目标/
常用选项-n 干跑不落地 -a 归档 -v 详细 -i 逐项输出变化 -c 按校验和比较 --delete 删除目标端多余文件
关键动作先核对 deleting 清单,再执行实际同步
权限说明与正式同步相同,需对目标目录有写权限

典型使用场景

  • 首次同步:审计两边差异,避免把大量文件一次性推过去
  • 镜像同步:执行带 --delete 的操作前核对删除清单
  • 发布核对:确认本次同步将改动哪些文件
  • 迁移评估:了解数据量与差异规模,安排窗口
  • 结果异常:同步后与预期不符时用干跑复现差异

常用示例

常用示例
rsync -avn --delete --itemize-changes /data/site/ /backup/site/
rsync -avn --delete /data/site/ /backup/site/ | grep '^deleting'   # 只看删除清单
rsync -avni --delete /data/site/ /backup/site/ | head -n 50        # 逐项变化
rsync -avn --delete /data/site/ /backup/site/ | tail -n 5          # 总量统计
# 确认无误后去掉 -n 再正式执行

逐项输出标记

标记含义说明
大于号开头的标记文件将被传输到目标新增或内容发生变化
deleting目标端该文件将被删除必须人工确认,风险最高的一类
含 c 的标记校验和不同内容确实变化
含 s 或 t 的标记大小或时间不同可能只是时间戳差异
点开头的标记属性变化但内容未变只涉及元数据更新
完整标记含义见 rsync 手册。日常只需分清两类:会传输哪些文件、会删除哪些文件,其中删除清单要逐条确认。
干跑输出照常打印,容易被误当成「已执行成功」的凭证。要让日志能区分,可在脚本里把干跑与实跑的输出写到不同文件。

易错点

  • 干跑与实跑间隔太久,期间数据变化导致实跑结果与预演不一致
  • 只扫一眼总行数,没有逐条核对 deleting 清单就执行带 --delete 的同步
  • 把干跑输出当作已执行记录,任务实际并未运行
  • 干跑时不加 -c,对于属性与时间戳相同但内容不同的文件不会出现在清单里

数据来源与参考

  • man 1 rsync(rsync 官方手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌