【发布时间】:2025-11-21 00:40:01
【问题描述】:
我正在考虑为 ubuntu 编写一个系统救生应用程序,它可以将系统恢复到更早的状态。这在系统中断的情况下可能非常有用。 用户可以在之前创建还原点,然后使用它们来还原他们的系统。 这最初将用于包,然后用于恢复以前版本的文件,有点像 microsoft windows 中的系统恢复功能。 这是想法页面Idea page
我已经经历了一些实现它的想法,就像在 Windows 中完成的那样,通过将有关文件的信息保存在文件系统中,文件系统足够智能,可以用于此功能。但是我们在 linux 中没有这样的文件系统,这样的文件系统之一是 brtfs 但使用它会导致用户创建分区,这会很麻烦。所以我正在考虑一种“写时复制和删除时保存”的方法。创建还原点后,我将在之前由应用程序创建的还原文件夹中创建一个新的备份目录,例如“backup#1”,然后为需要还原的文件创建硬链接。现在,如果从其原始位置删除任何文件,我将拥有它的硬链接,可用于在需要时恢复文件。但是这种方法不适用于修改。对于修改,我正在考虑在文件系统中创建挂钩(使用 redirfs ),这将调用我附加的回调,它将检查文件各个部分的修改。我会将这些所有更改保留在数据库中,然后在需要恢复时立即撤消更改。
请建议我一些有效的方法来做到这一点。 谢谢
【问题讨论】:
-
您考虑过修订控制系统吗?此外,这感觉不像是 * 式的问题。
-
您应该查看 LVM 快照。
-
@Mel 好的。我认为这可能是一个好主意,git 和其他 svc 监视给定文件中的变化的方式,但我怀疑它在扩展到整个系统时的性能。你能建议我在哪里问这个问题吗
-
@caf LVM 快照是个好主意,但问题是空间问题,如果有某种方法可能需要比拥有几乎大多数文件的副本更少的空间用户可能不会修改。
-
听起来像是日志文件系统的工作。当您修改文件系统时,请保留旧信息和提交跟踪,以便您知道要撤消什么以及如何撤消。如果“用户创建分区”是一个问题,我觉得你应该解决这个问题。为什么会出现问题?他们不是已经创建分区了吗?您不能将其范围限制为新安装,并在安装程序中进行分区吗?