Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 压缩文件夹以创建tgz文件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我有一个文件夹,我想创建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.
我有一个文件夹,我想创建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.Diff是使用以下命令获得的.

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

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

问题是:为什么我从不同用户运行时获得tgz文件的差异.

编辑:
阅读评论和一些谷歌搜索后,我发现每次添加文件的顺序并不固定.

看这https://reproducible-builds.org/docs/archives/#file-ordering.

我会尝试这个并添加细节.

解决方法

这可能是有很多原因造成的.

> tar存储的元数据(以及gzip存储的元数据,可能包括tar存档的修改时间).我看到你正在使用一些可能会重置此元数据的某些部分的GNU tar选项,但我打赌这些选项并非穷尽所有变量属性.
>文件的顺序.当您将文件解压缩到文件系统时,对于大多数应用程序来说,顺序几乎不重要(尽管每个目录条目通常在基础文件系统的同一个dirent中的任何其他条目之前或之后).但是,不保证tar存档中文件的顺序.
> gzip压缩.通过文件格式保证压缩文件将被解压缩到原始文件,但是,不一定保证它们的压缩格式必须相同.此外,如果输入内容不同(即使它保持相同的大小),那么同样地,您将看到两个档案甚至可能因文件大小不同而不同.

总之,如果您尝试确定两个文件夹的内容是否相同,使用.tgz存档可能不是最好的方法.

大佬总结

以上是大佬教程为你收集整理的linux – 压缩文件夹以创建tgz文件全部内容,希望文章能够帮你解决linux – 压缩文件夹以创建tgz文件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。