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

a3n*_*3nm 7 backup rsync

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

替代方法是rsync --delete,但这意味着已删除的文件也将在我第一次运行备份时被删除,如果挂载点变为空,那么我也有删除备份的风险。

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

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

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

zep*_*lin 9

您可以使用--backup

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

--backup-dir结合使用

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

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

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