gpt4 book ai didi

linux - 在 linux 中压缩文件夹会为不同的用户提供不同的大小

转载 作者:太空宇宙 更新时间:2023-11-04 12:23:22 24 4
gpt4 key购买 nike

我有一个文件夹,我想创建 tgz 文件并计算它的 sha256:

使用以下命令将文件夹转换为 tgz

 "tar -c -C #{Shellwords.escape dir} #{Shellwords.escape basename} " \
"--owner=0 --group=0 --mtime='2000-01-01 00:00:00' | gzip -n > #{Shellwords.escape file}"

现在我使用 2 个不同的用户运行上述过程,它给了我 2 个文件:1 和 2

两个 tgz 文件的大小不同:

-rw-r--r--@ 1 myuser  \Domain Users  9024 Jul 31 14:28 1.tgz
-rw-r--r--@ 1 myuser \Domain Users 9037 Jul 31 14:29 2.tgz

如果我尝试计算文件之间的差异,我看不到任何差异。差异是使用以下命令获得的。

diff  <(tar -tvf 1.tgz | sort) <(tar -tvf 2.tgz | sort)

如果我使用这两个文件的 ruby​​ 计算 sha256,那么它会有所不同。

问题是:为什么从不同的用户运行时,我的 tgz 文件会有所不同。

最佳答案

区别在于文件头,tar 中每个文件的文件头都包含用户和组 ID。见https://en.wikipedia.org/wiki/Tar_(computing)#Header .

现代 tar 还向 header 添加了称为 Ustar 的附加数据:https://en.wikipedia.org/wiki/Tar_(computing)#UStar_format其中还包含所有者用户名。

尝试:

diff  <(gunzip -c 1.tgz | xxd) <(gunzip -c 1.tgz | xxd)

你会发现不同

关于linux - 在 linux 中压缩文件夹会为不同的用户提供不同的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45449575/

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