用 rsync 做镜像备份,源端删了文件,备份端还在。以为是同步失败。

原因:没加 --delete。不加这个参数,rsync 只增量复制,不同步删除。

但加了 --delete 又有新风险:源端路径写错,会把备份端清空。

我的做法:

  • 用 --delete 但配合 --dry-run 先看一遍
  • 备份路径用绝对路径,且脚本里加路径存在性检查
  • 分两个阶段:先同步到临时目录,成功后再切换软链

还有:--delete 配合 --exclude 要注意,排除的目录不会被删,但父目录可能被删。这条踩过,备份里的 uploads 目录被清空了。

加日志:每次备份记录删除的文件列表,出问题能查。

主楼