为什么同一个项目的 'tar cvf' 的两个结果不匹配?
Why two results of 'tar cvf' of a same project not matched?
我有一个 go project names hello,它只包含一个 main.go
源文件。
我使用 go build
获取名为 hello
的可执行文件,然后 md5sum hello
获取其 md5:9d51bcdbddd40320ba3057f91952865e
。然后我使用 tar cvf hello.tar hello
得到 hello.tar
并计算它的 md5:63fda573908ec8c1bfa58ac46419efbe
.
接下来,我 rm hello hello.tar
重做上面的事情:
hello
md5: 9d51bcdbddd40320ba3057f91952865e (还是一样)
hello.tar
md5: 880dea1e12e5c69b24b83cf13db6606b(已更改)
我已经了解到,如果我使用 tar czf
命令,md5 肯定会更改,因为存档中的时间戳已更改。但是为什么 tar cf
也改变了 md5?
参考:
当您获取 hello
的哈希值时,它会获取内容并计算哈希值。
但是当你得到 hello.tar
时,它会在 hello
文件旁边包含 header 类型,其中包括文件 hello
的修改时间等变量。这些时间戳改变了 hello.tar
的内容(和散列)
参考 tar
header 你可以查看 here.
我有一个 go project names hello,它只包含一个 main.go
源文件。
我使用 go build
获取名为 hello
的可执行文件,然后 md5sum hello
获取其 md5:9d51bcdbddd40320ba3057f91952865e
。然后我使用 tar cvf hello.tar hello
得到 hello.tar
并计算它的 md5:63fda573908ec8c1bfa58ac46419efbe
.
接下来,我 rm hello hello.tar
重做上面的事情:
hello
md5: 9d51bcdbddd40320ba3057f91952865e (还是一样)
hello.tar
md5: 880dea1e12e5c69b24b83cf13db6606b(已更改)
我已经了解到,如果我使用 tar czf
命令,md5 肯定会更改,因为存档中的时间戳已更改。但是为什么 tar cf
也改变了 md5?
参考:
当您获取 hello
的哈希值时,它会获取内容并计算哈希值。
但是当你得到 hello.tar
时,它会在 hello
文件旁边包含 header 类型,其中包括文件 hello
的修改时间等变量。这些时间戳改变了 hello.tar
参考 tar
header 你可以查看 here.