【发布时间】:2016-04-07 01:11:19
【问题描述】:
我们先创建两个内容相同的文件:
echo "content" > file1
echo "content" > file2
现在,如果我们使用gzip 来压缩每个文件,那么文件是相同的,这不足为奇:
gzip --no-name file1
gzip --no-name file2
diff -u file1.gz file2.gz
(不出所料,diff 命令不返回任何输出。)
但是,假设我们对文件执行此操作:
tar cf - file1 | gzip --no-name > file1.tar.gz
tar cf - file2 | gzip --no-name > file2.tar.gz
当我们运行diff 时会发生什么?
% diff -u file1.tar.gz file2.tar.gz
Binary files file1.tar.gz and file2.tar.gz differ
这让我很惊讶。我需要将哪些选项传递给tar,以便两个tar ... | gzip ... 命令的输出相同?
作为参考,当我运行时
tar cf - file | gzip --no-name > file1.tar.gz
tar cf - file | gzip --no-name > file2.tar.gz
输出是相同的。所以 不是 tar 的输出会根据我运行它的时间而改变,所以tar 必须将其输入的最后修改时间合并到 tarred 输出中。这不是我想要的行为。
【问题讨论】:
标签: linux unix compression gzip tar