lvi*_*ani 8 tar files reproducible-build
我有两个相同的文件夹,具有相同的结构和内容,如下所示:
folder_1
hello.txt
subfolder
byebye.txt
folder_2
hello.txt
subfolder
byebye.txt
Run Code Online (Sandbox Code Playgroud)
如果我将它们压缩为 tar.xz 格式,我会得到两个具有两种不同文件大小的不同存档(只有几个字节,但它们并不相同)。
$ cd folder_1 && tar -Jcf archive.tar.xz *
$ cd folder_2 && tar -Jcf archive.tar.xz *
Run Code Online (Sandbox Code Playgroud)
我得到:
folder_1/archive.tar.xz != folder_2/archive.tar.xz
Run Code Online (Sandbox Code Playgroud)
当然,如果我md5sum或sha1sum他们我会得到两个不同的哈希值
这就是我的问题......我需要检查提供的档案是否与我存储中的档案相同。我不能使用散列,也不能只检查文件大小。
使用 zip 而不是 tar.xz 可以工作,因为 zip 总是从相同的文件产生相同的 achives。为什么会这样?有什么办法可以预防吗?
好的,ddnomad 给出的解释是正确的。这是关于时间戳的。
这是解决方案:
添加--mtime='1970-01-01 00:00:00'到 tar 命令:
tar --mtime='1970-01-01 00:00:00' -Jcf archive.tar.xz *
Run Code Online (Sandbox Code Playgroud)
这将强制内容时间戳为固定值,从而导致相同的档案。