这是我的问题:我需要将大量(最大30到40 GB)大文件(最多60 TB)归档到tar文件中。我想在归档之前对这些文件进行校验和(md5,sha1等)。然而不读每一个文件两次(一次执行校验,两次tar'ing)或多或少的必需品,以达到很高的归档性能(LTO-4要120 MB / s的持续,以及备份窗口是有限的)。
因此,我需要某种方式来读取文件,在一侧提供一个校验和工具,在另一侧构建一个tar到磁带,类似于:
tar cf - files | tee tarfile.tar | md5sum -
除了我不希望整个档案的校验和(此示例shell代码仅执行此操作),而是要档案中每个文件的校验和。
我研究了GNU焦油,Pax,Star选项。我查看了Archive :: Tar的源代码。我认为没有明显的方法可以实现这一目标。看来我必须手工用C或类似的东西来实现我所需要的。Perl / Python / etc根本无法降低性能,并且各种tar程序都缺少必要的“插件架构”。在开始编写代码之前,是否有人知道任何现有的解决方案?
7z
你可以选择哈希和打印的方式,sha1sum
并且sha256sum
可以理解:7zip.bugaco.com/7zip/7zip_15_09/MANUAL/cmdline/commands/...(和sami-lehtinen.net/blog/...)尝试一下:(7z h -scrcsha256 mydir/* | sed --regexp-extended 's, +[0-9]+ +, ,g' > mydir.sha256sum ; sha256sum -c mydir.sha256sum
使用p7zip 15.09 beta版进行了测试)
tar
如果您决定编写,那听起来当然是有用的补充;)