用同步脚本做备份,加上了删除参数,源目录挂载临时失败一次,目标端的备份被清掉一大片。

真正麻烦的地方在于,几个原因的现象几乎一样。源目录挂载失败变成了空目录,同步照常执行删除。也可能是路径末尾没有斜杠,目录层级对不上。

不容易想到的是,没有做演练就直接在正式数据上跑。

第一件事是用试运行模式看会删什么

rsync -avn --delete 源目录/ 目标目录/

然后确认源目录确实已挂载

findmnt -T 源目录 && ls 源目录 | head

接着加保护参数限制删除范围

rsync -av --delete --max-delete=100 源目录/ 目标目录/

等前面都确认过,再启用删除前二次确认

rsync -av --delete --backup --backup-dir=/data/trash 源目录/ 目标目录/

别只看报错消失,验证要多做一步。试运行结果符合预期后才真正执行,目标端数据完整且删除数量可控。

提醒一点。路径末尾的斜杠决定同步层级,写错就等于换了一个目录;同步脚本必须先挂载检查再执行删除。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189