通过命令“pv”压缩的文件与普通压缩文件不同
Posted
技术标签:
【中文标题】通过命令“pv”压缩的文件与普通压缩文件不同【英文标题】:file compressed through command "pv" are different from ordinary compressed file 【发布时间】:2020-12-03 10:11:35 【问题描述】:这是我的脚本:
tar cf - testdir | pv -s $(du -sb testdir | awk 'print $1') | pigz -1 > pv.tar.gz
tar cf - testdir | pigz -1 > nopv.tar.gz
diff pv.tar.gz nopv.tar.gz
然后输出是“二进制文件 pv.tar.gz 和 nopv.tar.gz 不同”。
我执行hexdump
我发现这两个文件只有第一行略有不同
pv.tar.gz: 8b1f 0008 9e24 5fc8 0304 bdec 5f7b c71b
nopv.tar.gz: 8b1f 0008 9c18 5fc8 0304 bdec 5f7b c71b
但是我解压后又对比了一下,testdir是一模一样的。
我想问的是,如何让两个tar.gz文件一致?
【问题讨论】:
您的 hexdump 看起来有问题。前 4 个字节应该是8b 1f 08 00
,而不是 ...00 08
。你能确认是你打错了,还是有其他问题。
【参考方案1】:
这与pv
无关。 gzip 标头中的字节 5 到 8 是时间戳。每次运行命令时都会有所不同。你可以告诉pigz
不要用-m
开关存储它,所以你的命令是:
tar cf - testdir | pv -s $(du -sb testdir | awk 'print $1') | pigz -1 -m > pv.tar.gz
tar cf - testdir | pigz -1 -m > nopv.tar.gz
这应该给你相同的内容。当您hexdump
时,您会注意到更改的值现在都是00
。
【讨论】:
以上是关于通过命令“pv”压缩的文件与普通压缩文件不同的主要内容,如果未能解决你的问题,请参考以下文章