首页/数据/备份与容灾速查/rsync --delete 同步删除

rsync --delete 同步删除

让目标端与源端保持一致:目标端多余文件会被删除;用错时可能把备份端的历史数据一并抹掉,执行前必须先用 --dry-run 确认。

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

rsync --delete 是什么

--delete 让目标端与源端保持一致:目标端存在而源端没有的文件会被删除。它适合镜像型同步,但把镜像当成备份就危险了——源端误删会顺着同步传到目标端,历史数据一并消失。使用前必须先用预演确认删除清单。

基本信息

作用删除目标端在源端不存在的文件
配套选项--delete-excluded 连被排除文件也删;--delete-after 传输完成后再删
语义让两侧内容一致,属于镜像而不是留底
安全前提执行前用 -n 预演,路径与方向反复确认

安全使用顺序

安全使用顺序
rsync -avn --delete /data/ /backup/data/    # 1) 预演,核对删除清单
rsync -av  --delete /data/ /backup/data/    # 2) 确认无误后执行
# 只删被排除的文件(默认保留)
rsync -av --delete --delete-excluded /data/ /backup/data/

删除相关选项

选项行为注意
--delete删除目标端多余文件最常用,也最容易误伤
--delete-excluded被排除的文件也一并删除改变排除语义,升级脚本前需重新预演
--delete-after传输完成后统一删除减少传输过程中的目标端变动
--delete-before扫描前先删除可缓解目标端空间压力
--max-delete限制单次删除数量异常大量删除时能及时止损

典型使用场景

  • 镜像站点目录:让备份端精确反映生产端当前状态,控制副本体积
  • 共享目录同步:两侧保持一致,避免已下线的文件长期残留
  • 发布目录更新:把新版本目录完整覆盖到目标机,删除旧版本残留文件
  • 硬链接快照:与 --link-dest 配合,让每份快照目录呈现完整视图
  • 清理策略:目标端磁盘吃紧时用一次完整镜像回收空间
镜像同步不是备份:源端误删会通过 --delete 同步过来,镜像副本之外仍需保留历史版本(如 --link-dest 快照或独立归档)。
预演输出中的删除行容易淹没在大量传输信息里,建议单独过滤关键字统计条数,删除量异常时先停下来排查源端路径是否挂载成功。

易错点

  • 源与目标路径写反:把备份端当源会把旧数据全部删除
  • --delete-excluded 会改变排除文件的处理语义,升级脚本前需重新预演确认
  • 源端挂载点未挂上时同步仍会成功,结果是目标端被清空
  • 删除只在目标端生效而没有任何留底,误删后没有回退路径

数据来源与参考

  • rsync 手册(--delete 系列选项)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌