次のように同じ構造と内容を持つ2つの同じフォルダがあります。
folder_1
hello.txt
subfolder
byebye.txt
folder_2
hello.txt
subfolder
byebye.txt
tar.xz形式に圧縮すると、ファイルサイズが異なる2つの異なるアーカイブが作成されます(わずか数バイトしかありませんが、同じではありません)。
$ cd folder_1 && tar -Jcf archive.tar.xz *
$ cd folder_2 && tar -Jcf archive.tar.xz *
私は得る:
folder_1/archive.tar.xz != folder_2/archive.tar.xz
もちろん、私や彼らは、md5sum
2sha1sum
つの異なるハッシュを取得します。
私の問題は次のとおりです。提供されたアーカイブが私のリポジトリのアーカイブと同じであることを確認する必要があります。ハッシュは利用できず、ファイルサイズのみを確認することはできません。
tar.xzの代わりにzipを使用すると、zipは常に同じファイルから同じアーカイブを生成するため、問題はありません。なぜこれが起こるのですか?それを防ぐ方法はありますか?
ベストアンサー1
さて、ddnomadによって提供された説明は正しいです。タイムスタンプについてです。
解決策は次のとおりです。
--mtime='1970-01-01 00:00:00'
tar コマンドに追加:
tar --mtime='1970-01-01 00:00:00' -Jcf archive.tar.xz *
これにより、コンテンツタイムスタンプが固定値に強制され、同じアーカイブが作成されます。