【问题标题】:Creating the same .tgz file on different machines在不同的机器上创建相同的 .tgz 文件
【发布时间】:2010-07-20 17:01:06
【问题描述】:

我正在使用 giternal,它将外部引用的 .git 目录压缩到一个 .tgz 文件中。不幸的是,每次我“冻结”外部文件时,都会为 repo 创建一个新的 .tgz 文件。

即使 .git 目录的内容相同,也会创建一个带有差异的新 .tgz 文件。这会导致回购膨胀。

有没有办法让 tar czf 在不同的机器上创建一个具有完全相同的打包二进制内容的 .tgz 文件?

【问题讨论】:

    标签: bash shell gzip tar


    【解决方案1】:

    随着文件时间的推移,uid 和 gid 与 tar 存档中的文件内容一起存储,因此很难获得完全相同的存档。 我只能提供一个毛茸茸的解决方案,例如将 tar 文件更改为常用时间和 uid。 pax 实用程序的 POSIX 定义中解释了ustar 交换格式。 或者您可以解压缩最后一个和当前的快照并对其进行比较,从而确定它们是否相同以及您是否需要最后一个。

    【讨论】:

    • +1:我最近反复重新打包一些代码,想知道为什么我会为相同的代码得到不同的校验和。我最终意识到改变的是文件时间戳,而不是文件。
    • uid/gid 可以是faked,times 可以是set,但目录遍历顺序也可能很重要,我敢肯定我们都缺少其他东西……
    猜你喜欢
    • 2020-12-20
    • 2019-11-20
    • 2017-04-14
    • 2021-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多