将一个磁盘上的文件与另一磁盘上的注册表信息进行比较的工具?

将一个磁盘上的文件与另一磁盘上的注册表信息进行比较的工具?

自从我深入了解 Unix 以来已经很长时间了,所以当我说“注册表”时,我什至可能没有使用正确的术语,但情况是这样的。

我有一个磁盘快要死了。很多 I/O 错误。因此,我正在将所有文件从该磁盘复制到另一个磁盘。

但肯定有一些文件没有成功。有没有一种方法可以查看坏磁盘上的文件“注册表”,并将其与新磁盘上存在的文件进行比较,并确定哪些文件丢失了?

我知道我可以尝试在两个文件系统之间进行操作diff,但担心读取坏磁盘上的每个文件只会出错 - 而我希望坏磁盘上存在的文件列表仍然存在在未损坏的扇区上。

或者Unix(实际上这都是OSX,而​​不是纯粹的Unix)甚至不包含全局注册表文件?

答案1

如果磁盘损坏,将整个磁盘(或每个分区本身)复制到文件可能会更明智。当磁盘开始出现故障时,它们通常很快就会完全消失。然后,您可以环回安装副本,并使用您喜欢的取证工具来尝试挽救一切可能的情况。

答案2

在符合 UNIX 的FHS,系统范围的配置通常存储在/etc(某些部分可能驻留在/usr/local/etc/opt/app/etc)中,用户配置存储在主目录中,几乎总是在以点(.vim/,,.libreoffice...)开头的文件和目录中。没有单一的设置数据库,如果通过单一你就明白了单个文件。一些大型软件可能会将其全部或大部分配置存储在单个文件中,但整个系统则不然。因此,您需要复制上述文件,以恢复设置,这也是为什么不时将它们与“常规”数据一起备份(或者甚至将它们保存在版本控制系统下)通常是个好主意的原因。

也就是说,一旦您保存了最重要的内容,我强烈建议使用GNU地址救援获得尽可能好的文件系统副本并处理这些副本。由于ddrescue可以在文件系统以下的级别上工作,因此它通常能够比仅仅复制恢复更多的数据(而且速度更快)。

答案3

系统上没有包含文件名列表的“注册表”(这不是常见的事情)。每个目录中的文件名列表存储在该目录中。您可以使用以下命令生成系统上所有文件名的列表find命令。

find / -xdev | sort >/tmp/file-list

这将创建一个排序的文件名列表/tmp/file-list。该-xdev选项指示find不要进入其他已安装的文件系统,例如操作系统特殊文件系统或可移动驱动器。

知道哪些文件是相同的可能会更有用。我建议复制文件并将rsync错误输出保存rsync在文件中,然后分析该文件以查看哪些内容成功,哪些内容没有。

答案4

我会使用rsync。它会在复制过程中智能地比较文件,并为您提供随后无法复制的文件列表。

rsync -av /路径/到/源/路径/到/目标

相关内容