tar アーカイブのサイズがアーカイブファイルのサイズより大きい。

tar アーカイブのサイズがアーカイブファイルのサイズより大きい。

tarディレクトリとすべてのコンテンツのアーカイブを作成すると、アーカイブのサイズがすべての元のファイルのサイズを合わせたものよりも大きくなります。

なぜですか?

ファイルサイズを確認するために使用していますls -l

私はcreate archiveを使用していますtar -cvf archive directory

答え1

tarアーカイブに保存されているファイルの名前とその他のメタデータを記録します。この情報だけでは、ファイルあたりの保存バイト数が必要です。

ブロックによって、tarファイル内に空き領域がたくさんある可能性があります。いくつかの狭いテストで0バイトのファイルを保存し、2560バイトのtarファイルを得ました。 1000個の0バイトファイルが約1.5MBのアーカイブを作成しました。

tarたとえば、圧縮フラグなしで使用すると、z大きなファイル以外には何も取得できません。

答え2

1977年の記録は、TARファイルあたり512バイトのメタデータを記録します。

サイズが500バイトのファイルをアーカイブすると、アーカイブに必要なスペースは純粋なファイルの内容よりも2倍以上増加します。

これをファイルシステムのファイルオーバーヘッドと比較すると、通常、ファイルシステム内のファイルに必要な合計スペースよりも少なくなります。

注:1997年、Solarisは新しい拡張TARアーカイブ形式を導入しました。この形式は POSIX.1-2001 で標準化されています。paxまたはと呼ばれますtar with extended headers

これはtar with extended headers、任意の解像度と任意の長さのファイル名でタイムスタンプを保持することをサポートします。拡張ヘッダーを持つアーカイブには、ファイルごとTARに少なくとも1536バイトのオーバーヘッドが必要です。ファイルシステムには、inode情報、ディレクトリエントリ、ACL、その他の拡張メタデータが必要であり、通常はファイルの内容をリストに保存するときにファイルサイズを1..8KBに丸めるため、これは一般的なファイルシステムのオーバーヘッドにすぎません。ファイルシステムのバックエンドに格納されているブロックの数。

関連情報