在AIX系统(v 7.1)sha1sum
中,将其直接管道传输到的输出tar
与读取文件时相比,正在计算不同的哈希码。
原因是什么?是否有解决方法,可以直接从tar
管道输出中获取哈希码?
(在Debian和Ubuntu等其他系统中,通过管道传输sha1sum
到tar
输出效果很好)
folder=myfolder
tarfile=myfolder.tar
tar -cf $tarfile $folder && sha1sum $tarfile
fe2dcba2b25d4bbb35460309c8bb87a1d2514d7d myfolder.tar
tar -cf $tarfile $folder && sha1sum $tarfile
fe2dcba2b25d4bbb35460309c8bb87a1d2514d7d myfolder.tar
tar -cf - $folder > $tarfile && sha1sum $tarfile
fe2dcba2b25d4bbb35460309c8bb87a1d2514d7d myfolder.tar
tar -cf - $folder > $tarfile && sha1sum $tarfile
fe2dcba2b25d4bbb35460309c8bb87a1d2514d7d myfolder.tar
tar -cf - $folder | sha1sum
f1dd1a0c4e82dd5c441664869b656c7bce799270 -
tar -cf - $folder | sha1sum
f1dd1a0c4e82dd5c441664869b656c7bce799270 -
该问题的原因是命令tar
。它具有由固定数量的512字节块组成的内部记录。每个记录的块数可以使用参数设置-b
。
一些实现可以根据文件描述符(如果它是磁带设备,常规文件或管道)自动调整块的数量。
使用-b
参数固定块数可解决此问题。就像:tar -b1 -cf - $folder | sha1sum
。但是要匹配我必须使用的问题的前两个命令中预定义的默认块-b20
(对于常规文件中存储的归档,默认记录为10240字节):
$ tar -b20 -cf - $folder > $tarfile && sha1sum $tarfile
fe2dcba2b25d4bbb35460309c8bb87a1d2514d7d myfolder.tar
$ tar -b20 -cf - $folder |sha1sum
fe2dcba2b25d4bbb35460309c8bb87a1d2514d7d
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句