首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与sha1sum比较沥青球

与sha1sum比较沥青球
EN

Unix & Linux用户
提问于 2018-08-04 18:13:15
回答 2查看 1.6K关注 0票数 2

我用$(npm pack)创建了一个. .tgz/tarball。

然后我跑:

代码语言:javascript
复制
sha1sum oresoftware-npp-0.0.1001.tgz 

我得到了:

代码语言:javascript
复制
77c58da68593dcdcd14bb16a37f5f63ef42bab63  oresoftware-npp-0.0.1001.tgz

我想比较一下远程服务器上的另一个tarball。我可以通过以下方式查询国家预防机制登记册上的tarball的shasum:

代码语言:javascript
复制
 npm view @oresoftware/npp@latest dist.shasum

产生的结果:

代码语言:javascript
复制
3c2e7328110ba57e530c9938708b35bde941c419

这个shasum与上面的另一个不同,但这是预期的,因为我更改了.tgz tarball文件的内容。

我的问题有三重:

  1. 当我生成由sha1sum生成的.tgz文件时,这是正确的方法吗?要在创建tar文件之后生成sha1sum吗?
  2. 我假设如果sha1sum有相同的内容,那么它将是相同的?如果文件在不同的时间被创建/修改,即使它们有相同的内容,它们会有所不同吗?
  3. 有没有更好的方法来检查两个油炸球是否有相同的内容?这就是我想做的。
EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2018-08-04 18:59:46

NPM注册中心提供的校验和提供了两个功能:它们允许您验证下载是否已损坏;如果您能够验证带外校验和,则下载的文件未被更改。除非NPM档案是可重复构建的,否则校验和不允许您验证您使用npm pack构建的存档包含它应该包含的内容。

tarballs的问题在于它们包含元数据:由tar存储的存储文件的所有权、权限和时间戳,以及最上面的压缩元数据。如果所有这些值都是预先商定的,则可以指定它们来覆盖从文件系统获得的值,但这需要预协议。

要比较两个任意焦油球的内容,唯一可靠的方法是提取它们的内容并进行比较。

票数 2
EN

Unix & Linux用户

发布于 2018-08-04 21:22:57

这种校验和比较是否对您有用,取决于您使用的是什么tar命令,以及使用的tar存档类型。

例如,自1986年以来,star包含了所有三种时间戳,这使得tar档案在相同内容下也有所不同,因为上一次访问时间不同。

随着2001年新的POSIX tar增强,还有三个时间戳--取决于tar实现是实现原始标准还是以后的更改。

如果您不关心时间戳,比较归档校验和不是正确的方法。

因此,比较两个tar档案并从中进行陈述通常是不可能的。

但是,如果您可以打开这两个档案中的一个,那么有一种很好的方法可以将内容和元数据与用于比较的一组可配置的元数据进行比较。使用star -diff,请参阅http://schilytools.sourceforge.net/man/man1/star.1.html

如果你打电话给:

代码语言:javascript
复制
star -diff -v diffopts=!times < archive.tar.gz

比较文件内容和除所有时间戳以外的所有元数据。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/460539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档