file1 echo "content" > file2 现在,如果我们使用 gzip 来压缩每个文件,则文件是相同的,这并不奇怪:-6ren">
gpt4 book ai didi

linux - 为什么在 `tar cf` 之前通过 `gzip` 运行我的文件会更改其内容?

转载 作者:太空宇宙 更新时间:2023-11-04 04:38:49 25 4
gpt4 key购买 nike

我们首先创建两个内容相同的文件:

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 输出中。这不是我想要的行为。

最佳答案

TAR file format包含文件名和其他目录信息,因此文件会有所不同,除非它们包含具有相同名称、大小等的相同文件。

关于linux - 为什么在 `tar cf` 之前通过 `gzip` 运行我的文件会更改其内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36464983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com