用同步脚本做备份,加上了删除参数,源目录挂载临时失败一次,目标端的备份被清掉一大片。
真正麻烦的地方在于,几个原因的现象几乎一样。源目录挂载失败变成了空目录,同步照常执行删除。也可能是路径末尾没有斜杠,目录层级对不上。
不容易想到的是,没有做演练就直接在正式数据上跑。
第一件事是用试运行模式看会删什么
rsync -avn --delete 源目录/ 目标目录/
然后确认源目录确实已挂载
findmnt -T 源目录 && ls 源目录 | head
接着加保护参数限制删除范围
rsync -av --delete --max-delete=100 源目录/ 目标目录/
等前面都确认过,再启用删除前二次确认
rsync -av --delete --backup --backup-dir=/data/trash 源目录/ 目标目录/
别只看报错消失,验证要多做一步。试运行结果符合预期后才真正执行,目标端数据完整且删除数量可控。
提醒一点。路径末尾的斜杠决定同步层级,写错就等于换了一个目录;同步脚本必须先挂载检查再执行删除。这类问题最好一次改到位,反复小改反而容易把原因搅混。