
圧縮とは、スペースや転送時間を節約するためにデータのサイズを縮小することであることはよく知られていますが、圧縮されたファイルを解凍すると、サイズが大きくなることが予想されます。tar 形式 (95KB) のファイルをダウンロードし、解凍するとサイズが縮小され (5.7KB)、その下には 0 バイトと表示されるファイルもいくつかありました。原因は何でしょうか。
答え1
Tar 形式は圧縮されません。ただし、アーカイブ内の各ファイルまたはディレクトリの先頭にヘッダーが追加されます。ヘッダーは、tar がファイル名、タイムスタンプなどを伝えるために使用されます。この情報はファイル内のデータの一部ではありませんが、tar がファイルを再作成するために必要です。各ヘッダーは通常 512 バイトですが、ファイル名が 100 文字を超える場合は、これより大きくなる可能性があります。tar アーカイブの最後には、空白のヘッダーが付きます。これらのヘッダーは通常、アーカイブとそこから抽出されたすべてのものとの間のサイズの違いを説明します。
tar ヘッダーのサイズでは説明できない違いもあるかもしれませんが、それらはほとんどが例外的なケースであり、tar ファイルまたは少なくともそのリストを見なければ診断が困難です。大きな違い (tar ファイルは大きいが、そこから抽出されるものはほとんどない) の原因として考えられるのは、アーカイブに同じファイルのコピーが多数含まれている場合です。これは、おそらくバックアップ戦略として、誰かが最後に新しいバージョンを追加し続けた場合に発生する可能性があります。tar 抽出では、スペースを消費することなく、毎回同じファイルを上書きし続けるだけです。