rsync 预演 -n

-n/--dry-run 只显示将要执行的动作而不落盘,配合 -i/--itemize-changes 逐项列出变化类型,是执行危险同步前的例行步骤。

备份与容灾速查数据更新于 2026-10-13

rsync 预演是什么

预演选项让 rsync 只显示将要执行的动作而不真正落盘,配合逐项输出选项可以看清每个文件的处理类型:新增、更新、删除还是跳过。它是执行危险同步前的例行步骤,尤其在带删除选项或路径刚刚调整过时,几分钟的预演能避免一次不可逆的误操作。

基本信息

作用只显示动作,不修改目标端
配套选项逐项变化标记,用于看清每个文件的处理类型
输出解读传入、删除、新增、大小与时间戳变化各有标记
存档价值输出重定向到日志,事后可回溯判断依据

预演与逐项输出

预演与逐项输出
rsync -avni --delete /data/ /backup/data/
# 输出样例:
# >f+++++++++ newfile.txt      新增文件
# >f.st...... changed.log      内容与时间戳变化
# *deleting   old.txt          将被删除
# 单独统计删除条数,删除量异常时立即停下排查
rsync -avni --delete /data/ /backup/data/ | grep -c '^\*deleting'

变化标记解读

标记含义
> 开头文件被传入目标端
+ 号目标端原本不存在的文件
s 与 t大小变化与时间戳变化
deleting目标端将被删除的文件
cd 前缀目录的创建或删除动作

使用要点

  • 预演结果要与预期比对:预期只新增几个文件却列出大量删除时,先检查源路径写错或挂载丢失
  • 预演输出很长时不要只看结尾,把删除行单独过滤出来统计条数更有效
  • 预演与正式执行之间源端仍在变化,超大数据量应先冻结写入或改用存储快照
  • 把预演输出重定向存档:出问题时可以核对当时的判断依据
  • 新脚本上线前必须走一次预演,尤其是包含删除与排除规则的组合
把预演输出重定向存档,例如输出到日志目录按日期命名,出问题时可回溯判断依据,比事后凭记忆复盘可靠得多。

易错点

  • 预演与正式执行之间源端仍在变化,超大数据量的窗口内应先冻结写入或改用存储快照
  • 只预演不读输出:海量删除行很容易被忽略,应过滤删除标记单独确认
  • 预演时源端挂载点恰好掉落,得到一份看似正常的空同步计划,正式执行会清空目标
  • 把预演当成万无一失:预演只反映当时的源与目标状态,无法预测执行期间的变化

数据来源与参考

  • rsync 手册(--dry-run、--itemize-changes)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌