通过命令"pv"压缩的文件与普通压缩文件不同
file compressed through command "pv" are different from ordinary compressed file
这是我的脚本:
tar cf - testdir | pv -s $(du -sb testdir | awk '{print }') | pigz -1 > pv.tar.gz
tar cf - testdir | pigz -1 > nopv.tar.gz
diff pv.tar.gz nopv.tar.gz
然后输出是“二进制文件 pv.tar.gz 和没有 pv.tar.gz 不同”。
我执行hexdump
而且我发现这两个文件只有第一行略有不同
pv.tar.gz: 8b1f 0008 9e24 5fc8 0304 bdec 5f7b c71b
没有pv.tar.gz: 8b1f 0008 9c18 5fc8 0304 bdec 5f7b c71b
但是我解压后对比了一下,testdir完全一样
我想问的是,如何让两个tar.gz文件保持一致?
这与 pv
无关。 gzip header 中的字节 5 到 8 是时间戳。每次您 运行 命令时都会有所不同。你可以告诉 pigz
不要用 -m
开关存储它,所以你的命令是:
tar cf - testdir | pv -s $(du -sb testdir | awk '{print }') | pigz -1 -m > pv.tar.gz
tar cf - testdir | pigz -1 -m > nopv.tar.gz
应该会给你相同的内容。当您 hexdump
时,您会注意到更改的值现在都是 00
。
这是我的脚本:
tar cf - testdir | pv -s $(du -sb testdir | awk '{print }') | pigz -1 > pv.tar.gz
tar cf - testdir | pigz -1 > nopv.tar.gz
diff pv.tar.gz nopv.tar.gz
然后输出是“二进制文件 pv.tar.gz 和没有 pv.tar.gz 不同”。
我执行hexdump
而且我发现这两个文件只有第一行略有不同
pv.tar.gz: 8b1f 0008 9e24 5fc8 0304 bdec 5f7b c71b
没有pv.tar.gz: 8b1f 0008 9c18 5fc8 0304 bdec 5f7b c71b
但是我解压后对比了一下,testdir完全一样
我想问的是,如何让两个tar.gz文件保持一致?
这与 pv
无关。 gzip header 中的字节 5 到 8 是时间戳。每次您 运行 命令时都会有所不同。你可以告诉 pigz
不要用 -m
开关存储它,所以你的命令是:
tar cf - testdir | pv -s $(du -sb testdir | awk '{print }') | pigz -1 -m > pv.tar.gz
tar cf - testdir | pigz -1 -m > nopv.tar.gz
应该会给你相同的内容。当您 hexdump
时,您会注意到更改的值现在都是 00
。