- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在考虑为 ubuntu 编写一个系统救星应用程序,它可以将系统恢复到较早的状态。这在系统崩溃的情况下非常有用。用户可以之前创建还原点,然后使用它们来还原系统。这最初用于包,然后用于恢复以前版本的文件,有点像 Microsoft Windows 中的系统恢复功能。这是想法页面Idea page
我已经经历了一些像在 Windows 中那样实现它的想法,通过在文件系统中保存有关文件的信息,文件系统足够智能,可以用于此功能。但是我们在linux中没有这样的文件系统,这样的文件系统就是brtfs,但是使用它会导致用户创建分区,这会很麻烦。所以我正在考虑一种“写入时复制和删除时保存”的方法。创建还原点时,我将在应用程序之前创建的还原文件夹中创建一个新的备份目录,例如“backup#1”,然后为需要还原的文件创建硬链接(hard link)。现在,如果任何文件从其原始位置删除,我将拥有其硬链接(hard link),可在需要时用于恢复该文件。但这种方法不适用于修改。对于修改,我正在考虑在文件系统中创建 Hook (使用 redirfs ),它将调用我附加的回调,该回调将检查文件各个部分的修改。我会将所有这些更改保留在数据库中,然后在需要恢复时立即撤消更改。
请建议我一些有效的方法来做到这一点。谢谢
最佳答案
就像建议的评论一样,LVM 快照功能为此类任务提供了良好的基础。它将在每个分区级别上工作,并且仅保存与当前系统状态相比发生变化的扇区。 LVM 指南 gives a good overview .
不过,您必须从一开始就使用 LVM 设置系统,并为快照留出足够的空间。
关于linux - 为 ubuntu 编写一个系统救星,用于将损坏的系统恢复到工作状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7670794/
我是一名优秀的程序员,十分优秀!