![验证从不可靠介质传输的文件的完整性](https://linux22.com/image/1405168/%E9%AA%8C%E8%AF%81%E4%BB%8E%E4%B8%8D%E5%8F%AF%E9%9D%A0%E4%BB%8B%E8%B4%A8%E4%BC%A0%E8%BE%93%E7%9A%84%E6%96%87%E4%BB%B6%E7%9A%84%E5%AE%8C%E6%95%B4%E6%80%A7.png)
我正在尝试将大量家庭视频文件传输到/从外部 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 提供更好的保护打击那些试图伪造文件的黑帽子。