验证从不可靠介质传输的文件的完整性

验证从不可靠介质传输的文件的完整性

我正在尝试将大量家庭视频文件传输到/从外部 1 TB 硬盘驱动器传输。这个硬盘驱动器是从沃尔玛购买的,价格为 70 美元,是我遇到过的最令人头疼的问题。它喜欢在执行过程中随机断开连接。遗憾的是,这是我拥有的唯一可以将如此多数据传输到另一台 PC 的东西(无需花费太多时间)。

那么,我该如何验证硬盘上的文件和传输到第二台 PC 上的文件的完整性?有没有办法在不实际观看或重复编码的情况下做到这一点?正如我所说,它们是视频文件 (.avi)。

我更喜欢一种独立于发行版的方法,因为这一切都源于我从 Kubuntu 切换到 Arch。如果需要,我可以使用实时 ISO 中的文件,但如果不必这样做,我会更喜欢

编辑

我应该澄清的是,这些文件目前位于我正在输入的笔记本电脑的内部硬盘上...它们将被传输到外部硬盘,然后再传输到另一个内部硬盘

答案1

在源磁盘上,生成 md5 哈希值:

md5sum *.avi >my_avi_files.md5

这将生成一个文件,每个文件占一行。每行包含 md5sum 和文件的名称。此类文件的一个示例是:

58ba3b679b03c1deb6e30918311af726  boxed-correct.avi
cecfda865db60d3cf09a68c7f2030e9e  boxed-delete.avi
c373735b9c231d86244b28f3be9403e8  boxed-join.avi
63c3a103071507aa90b1353f42eead8d  boxed-split.avi

在目标磁盘上,通过运行以下命令验证完整性:

md5sum -c  my_avi_files.md5

这将单独检查列出的每个文件my_avi_files.md5

那么子目录怎么样?

作为处理子目录中的文件的示例,在源目录中使用此示例:

md5sum *.avi */*.avi >my_avi_files.md5

这可能会产生如下输出:

a99f357d1f52eb8437e0572e98ebb012  FlickAnimation.avi
58ba3b679b03c1deb6e30918311af726  en-US/boxed-correct.avi
cecfda865db60d3cf09a68c7f2030e9e  en-US/boxed-delete.avi

在目标目录上,检查以相同的方式完成:

md5sum -c  my_avi_files.md5

在执行此检查时,md5sum希望在相同的子目录中找到相同的文件。如果您更改了子目录名称,则可以my_avi_files.md5使用任何普通文本编辑器编辑文件并更新路径。

如果您的文件分布在多层子目录中,请使用find

find . -name '*.avi' -type f -exec md5sum {} + >my_avi_files.md5

md5 的替代品

虽然 md5 长期以来一直是此类检查的标准,但还有另一种选择sha1sum。其工作方式相同:

sha1sum *.avi >my_avi_files.sha1
sha1sum -c my_avi_files.sha1

sha1 提供更好的保护打击那些试图伪造文件的黑帽子。

相关内容