rsync --delete 的替代方案将文件移动到另一个目录而不是删除

rsync --delete 的替代方案将文件移动到另一个目录而不是删除

我用来rsync备份远程计算机上的大型硬盘驱动器。默认情况下,rsync当本地计算机上不再存在文件时,不会删除远程计算机上的文件。这很有用,因为它可以恢复,例如,如果我想恢复一个被错误删除的文件,这也意味着我不需要担心 rsync'ing 一个空目录(如果硬驱动器死掉或未安装)。问题是它需要远程主机上的大量磁盘空间,而且如果我需要恢复备份,它将被这些已删除的文件污染。

另一种选择是rsync --delete,但这意味着已删除的文件也会在我第一次运行备份时被删除,并且如果挂载点变空,那么我也会冒删除备份的风险。

理想情况下,我希望有一种方法可以告诉您rsync执行类似操作--delete,但它可以将它们移动到不同的备份层次结构,而不是删除文件。这样,如果需要,我仍然可以恢复这些文件,并且可以清理第二个层次结构中的较大文件以节省空间,而主备份层次结构将是我的驱动器的干净备份。

有没有办法模仿这种行为? (或一些类似的行为)

(我没有足够的磁盘空间来在远程主机上维护两个完整的备份。另外,我知道存在增量备份工具,例如博格备份,但我想要一个不依赖于具有自定义存储格式的重型工具的解决方案。我对使用硬链接的解决方案也有点警惕,但如果这是最好的选择,我就同意它们。)

答案1

您可以使用--备份

-b, --backup 使用此选项,在传输或删除每个文件时,将重命名预先存在的目标文件。

结合--备份目录

--backup-dir=DIR 与 --backup 选项结合使用,这告诉 rsync 将所有备份存储在接收端的指定目录中。这可用于增量备份。

将任何修改和删除的文件的副本保留在接收方的单独目录中。

如果您只想在备份中保留已删除的文件,您可以在同步后单独清除更新的文件(例如像这样)。

相关内容