从 rdiff-backup 中删除文件

Jas*_*per 8 rdiff-backup

我们有一个正在运行的系统,它使用 rdiff-backup 进行备份。但是,备份分区空间不足,因此我们需要重新检查这种情况。我们确实需要一个永久的解决方案,但在那之前,我们只需要在备份分区上释放一些空间。

我找到了许多可以删除的文件*,但我想知道我应该如何执行此操作。第一步当然是从实际文件系统中删除文件。但是,接下来我需要从备份中删除它(这就是我们需要空间的地方),但我不知道如何去做。有没有人知道如何做到这一点?

*某人 - 长期不在办公室 - 在他的主目录中有游戏和个人照片,多个虚拟硬盘副本

Dan*_*ley 11

空间不足时处理删除的过程在如何从备份集中删除文件下的非官方常见问题解答中进行了描述。在这里重复只是为了完整性。


此方法非常危险,不应使用,除非您要删除的文件导致备份驱动器空间不足,并且删除这些文件的唯一替代方法是删除整个增量。

重要提示:正确地说,您应该为 mirror_metadata 的每个增量执行步骤 4 。1.1.1 之前的 Rdiff-backup 不介意以这种方式从备份集中删除的文件有额外的 mirror_metadata 条目,除非在 mirror_metadata 的最新版本中。但是,在 1.1.1 中,mirror_metadata 处理发生了变化——rdiff-backup 现在对元数据文件进行了区分——并且不知道这些 diff 文件中的额外条目是否会影响还原操作。(技术说明:mirror_metadata 差异与文件差异使用的方法不同。它们不是 rdiff delta 文件,而是纯文本文件(不,它们也不是普通的文本差异)。因此,它是安全的- 编辑它们,因此如果您需要,您可以对这些差异执行第 4 步。)

  1. 检查时间——确保它不接近 rdiff-backup 的预定运行时间。还要确保 rdiff-backup 没有运行。

  2. 进入您的镜像目标目录并删除那里的文件或目录。

  3. 进入目标上的 rdiff-backup-data/increments 并删除那里的文件/目录的所有痕迹。重要的!如果您要删除一个目录,请确保您也找到并删除它的所有 *.dir 文件!如果它是一个文件,请确保找到并删除所有 *.missing 文件(如果有)。请注意不要删除与您要删除的内容无关的任何内容,否则您可能无法恢复其他文件。

  4. 重要的一步!(并警告这是未经 rdiff-backup 1.1.1 或更高版本测试)返回到 rdiff-backup-data 并用枪压缩最新的镜像元数据文件。在性能良好的文本编辑器中编辑 mirror_metadata 文件(警告!不要使用 pico 或 nano 或任何其他可能自动换行的东西!)并删除对您删除的文件或目录的所有引用。小心不要弄乱文件的格式。


小智 8

rdiff-backup 的官方 github 存储库现在有一个脚本可以执行此操作:

https://github.com/rdiff-backup/rdiff-backup/blob/master/src/rdiff-backup-delete

其他答案中引用的脚本似乎不再可用。