Checksum

可以依賴用 bzip2 壓縮的文件是確定性的(可重現的)嗎?

  • July 22, 2019

我正在嘗試確定是否存在bzip2用於壓縮需要 100% 可重現的文件的任何潛在問題。具體來說:元數據(名稱/inode、lastmod 日期等)或其他任何內容是否會導致相同的文件內容在生成的存檔上產生不同的校驗和.bz2

例如,除非使用 gzip,否則預設情況下 gzip 不是確定性-n的。

到目前為止,我的粗略測試表明,在給定相同的輸入數據(無論元數據、平台、文件系統等)的情況下,bzip2 確實確實始終如一地生成相同的文件,但如果有更多的軼事證據,那就太好了。

bzip2文件僅包含基本格式簽名、壓縮數據和解壓縮該數據所需的資訊。它們不包含任何文件特定的元數據;相反,它們依賴於壓縮文件的元數據(因此,無論原始文件名和原始時間戳如何,file.bz2都未壓縮為file,時間戳為)。file.bz2

壓縮的一部分可以變化,即輸入隨機化;但這在實踐中已經被禁用了很長時間,並且目前版本bzip2不會隨機化他們的輸入。

因此,輸出bzip2僅取決於輸入數據和壓縮級別。輸出是確定性的。

我不確定您是否會找到所有這些的權威來源;bzip2我能提供的最好證據是Debian reproducible builds notes中沒有提到任何內容。在 Debian 中使用,所以如果它確實引起了問題,它bzip2會得到提及,就像.gzip

引用自:https://unix.stackexchange.com/questions/531494