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に丸めるため、これは一般的なファイルシステムのオーバーヘッドにすぎません。ファイルシステムのバックエンドに格納されているブロックの数。