1

这是我的脚本:

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文件保持一致?

4

1 回答 1

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现在时,你会注意到。

于 2020-12-03T10:39:18.123 回答