我使用 NAS 备份了几个监控太阳能发电厂的小型系统,使用的是 rsync。效果很好。现在我想备份整个 NAS 驱动器。
每台 Linux 机器都有子目录 — — 一共有 8 个。
随着我了解的越来越多,并调整了我的排除规则,我发现有很多我之前忘记排除的剩余内容。
以前我排除了/lost+found
目录,但没有想过/.trash-1000
,现在却有很多。
只需将它们添加到
--exclude
列表中,即使--delete
不会删除它们,因为排除会使 rsync 程序完全跳过它们。
它的操作方式与 Robocopy/MIR 不同。
因此,让我们从 .Trash 开始,我想如果我找到我最初忘记排除的其他文件,答案将会对我有所帮助。
显然,一种解决方案是依次删除每个服务器的整个目录,然后使用新的排除集重新运行完整的 rsync。
但至少可以说,这是一项艰巨的工作。
所以我的问题是,当我对 NAS 驱动器进行完整 rsync 时,是否有通用方法可以排除所有 .Trash-1000 文件夹?如果可行,我可能会交换驱动器并使用更干净的驱动器恢复操作。
我正在寻找这样的东西:
--exclude="*.Trash*"
...所以它不会复制它们,无论它们在目录结构中的位置如何。
我真的想知道如何使用 rsync 来做到这一点,并且正在寻找一种解决方案来解决添加排除导致 rsync 跳过它们而不是删除它们的问题。
或者,我不想在 rsyncs 期间执行此操作,而是希望得到一个答案,向我展示如何在原始 NAS 驱动器上查找和销毁这些目录。
答案1
以下是一些关于替代方案的问答:
我认为,解决当前问题的最佳方法是通过在包含其他系统的完整备份的目录中执行此操作将它们从原始驱动器中删除:
cd /mnt/full
sudo rm -rf `sudo find -type d -name '.Trash-1000'`
搜索并摧毁,呼啦!
它确实发挥了作用,并且会使将来的 rsync 工作得更快。
但这并不能解决 rsync 错误。
如果有人能给出答案,让 rsync 删除我稍后添加到--exclude
列表中的目录,那么我会很乐意接受这个答案。
答案2
至于答案的第一部分:如何使其像 Robocopy /MIR (/PURGE) 一样工作,
事实证明 rsync 有一个
--delete-excluded
转变。
问题就解决了。