2つの同じフォルダを圧縮すると、異なる結果が発生します。

2つの同じフォルダを圧縮すると、異なる結果が発生します。

次のように同じ構造と内容を持つ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

もちろん、私や彼らは、md5sum2sha1sumつの異なるハッシュを取得します。

私の問題は次のとおりです。提供されたアーカイブが私のリポジトリのアーカイブと同じであることを確認する必要があります。ハッシュは利用できず、ファイルサイズのみを確認することはできません。

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 *

これにより、コンテンツタイムスタンプが固定値に強制され、同じアーカイブが作成されます。

おすすめ記事