跟踪、保存和恢复 Linux 下程序对文件系统所做的修改

跟踪、保存和恢复 Linux 下程序对文件系统所做的修改

我希望能够在运行诸如安装程序之类的程序时跟踪对我的文件系统所做的修改列表,以便我可以随后恢复它们。

编辑:这涉及到无包装程序。我尽可能使用 apt-get。

理想情况下我希望能够做类似的事情:

(sudo) catch-modifs some-installer.bin > fsmodifs.patch

进而:

(sudo) revert-modifs fsmodifs.patch

有没有方便的方法可以做到这一点?

答案1

可能最简单的方法就是使用带有“持久数据分区”的 LiveUSB 启动。(或者,自己在 chroot jail 中复制效果:在 ro 层上安装 rw 层。)拍摄 rw 文件系统的快照(在全新启动后应该非常小),然后运行安装程序。它更改或创建的每个文件都将位于 rw“持久数据”覆盖分区上。即使已删除的文件也将显示为“魔法点文件”。

答案2

也许可以看看tripwire?Tripwire比您的主动示例更被动,但它仍可能对您有用。

http://www.linuxjournal.com/article/8758

Tripwire 是一种入侵检测系统 (IDS),如果您的关键系统文件和报告被黑客破坏或修改(或被错误破坏),它就会持续自动地控制它们。它允许系统管理员立即知道哪些文件和报告被破坏并修复。

答案3

答案4

如果安装程序使用一些打包工具(例如,.deb用于 Debian/Ubuntu/... 的软件包、.rpm用于 RedHat/CentOS/... 的软件包等),那么软件包安装程序应该知道在安装和删除时该做什么。我相信你应该使用现有的包装系统,而不是发明自己的安装程序。(Linux 通常没有像 Windows 那样的安装程序)。

如果你确实想跟踪某个进程所做的文件更改,可以使用straceltrace来捕获系统调用。你也可以通知及相关设施。

但我不知道您想要catch-modifs什么。revert-modifs

我确实建议不要为你的应用程序制作安装程序,而是使用包管理器,从而为你的应用程序提供.deb(和/或.rpm)包。它们会比你自己的安装程序更好地处理依赖关系问题。

相关内容