Answers:
非官方常见问题解答中的 “ 如何从备份集中删除文件”中介绍了处理空间不足时的删除过程。在这里重复只是为了完整性。
此方法非常危险,不应使用该方法,除非要删除的文件导致备份驱动器空间不足,并且删除这些文件的唯一替代方法是删除整个增量。
重要说明:正确地说,您应该对mirror_metadata的每个增量执行步骤4 。1.1.1之前的Rdiff备份不介意为通过这种方式从备份集中删除的文件提供额外的mirror_metadata条目,最新版本的mirror_metadata除外。但是,在1.1.1时,mirror_metadata处理已更改-rdiff-backup现在可以对元数据文件进行差异化-并且未知在这些差异化文件中是否有其他条目会影响还原操作。(技术说明:mirror_metadata diff与文件diff使用的方法不同。它们不是rdiff delta文件,而是纯文本文件(不,它们也不是普通的文本diff)。因此,使用起来很安全-编辑它们,因此如果需要,可以对这些差异进行第4步。)
检查时间-确保与计划的rdiff-backup运行时间不接近。还要确保rdiff-backup没有运行。
进入镜像目标目录,然后在该目录中删除文件或目录。
进入目标上的rdiff-backup-data / increments并删除该文件/目录的所有痕迹。重要!如果要删除目录,请确保同时找到并删除所有* .dir文件!如果是文件,请确保找到并删除所有* .missing文件(如果有)。注意不要删除与您要删除的东西无关的任何东西,否则您可能无法恢复其他文件。
重要的一步!(并且警告未经rdiff-backup 1.1.1或更高版本测试过)返回到rdiff-backup-data并用枪压缩最新的镜像元数据文件。在行为良好的文本编辑器中编辑mirror_metadata文件(警告!请勿使用pico或nano或可能自动进行换行的其他任何方式!),并删除对已删除文件或目录的所有引用。要非常小心,不要弄乱文件的格式。
似乎有人制作了执行上述步骤的脚本https://www.eugenemakerspace.com/wiki/Sites/Rdiff-backup-delete
我没有测试它,而是通过运行以下命令来删除所有已经保存了2周的文件:
rdiff-backup --remove-older-than 2W host.net::/remote-dir
rdiff-backup的官方github存储库现在具有执行此操作的脚本:
https://github.com/rdiff-backup/rdiff-backup/blob/master/misc/rdiff-backup-delete.py
其他答案中引用的脚本似乎不再可用。