如何检查文件系统中的所有文件是否都可以无错误读取?

如何检查文件系统中的所有文件是否都可以无错误读取?

我使用带有 ext4 文件系统的外部硬盘进行备份。我使用的备份软件 (faubackup) 将文件层次结构 1:1 复制到硬盘上以时间戳命名的文件夹中,并以将内容未更改的文件的新副本硬链接到上一次备份的相应子文件夹中的相同文件的方式进行增量备份。由于我最近的备份驱动器坏了,我现在想确保写入的所有文件都可以在没有 I/O 错误的情况下真正读取,这样我就知道我可以依赖我的备份。

一种方法是读取整个分区,例如将dd其写入/dev/null。但是,磁盘大小为 3TB,这样做大约需要 7 个小时(通过 USB 3.0)。

另一种方法是使用e2fsck选项-c,但这也需要很长时间。

我认为应该可以通过不检查整个磁盘而只检查文件(仅占整个磁盘大小的一小部分)来加快该过程。例如,可以通过将所有文件写入 tar 存档来实现,该存档不写入磁盘,而是发送到/dev/null。这里的问题是硬链接:如果我有 10 个增量备份,那么存储量也只是磁盘的一小部分,但它似乎比这大 10 倍左右。

我的问题:有没有办法只读取磁盘上的文件,并且每组文件中只有一个文件硬链接到同一个存储空间?或者有没有办法e2fsck -c或类似方法只检查文件系统的使用部分(分配的块)?

答案1

GNU tar 不会多次复制硬链接文件的内容。请阅读第一个答案这个问题或者官方文档关于此主题。您可以通过管道输出(存档)来测试柏油通过厕所tar cf - -C <mountpoint of your disk> . | wc -c并验证档案大小(以字节为单位)(你可以将其与结果进行比较柏油选项--hard-dereference)。

相关内容