2つの異なるが関連するタスクがあります。ファイルのツリー(ファイル名、ディレクトリ構造、ファイルシステムの権限、所有権、その他のメタデータを含む)をバイトストリームにパックすることをアーカイブと呼び
ます。バイトストリームの冗長性を削除して、より小さいバイトストリームを生成することを圧縮と呼びます。
Unixでは、2つの操作は分離されており、それぞれに異なるツールがあります。他のほとんどのプラットフォーム(現在および過去の)では、結合ツールがアーカイブと圧縮の両方を実行します。
(gzipやgzipのインターフェースを模倣するその他のプログラムでは、元のファイル名を圧縮出力に保存するオプションがよくありますが、これは、CRCまたは破損を検出するその他のチェックとともに、保存できる唯一のメタデータです。)
圧縮をアーカイブから分離することには利点があります。アーカイブはプラットフォーム固有です(保存が必要なファイルシステムメタデータは大きく異なります)が、実装は単純で、大部分がI / Oに依存しており、時間の経過とともにほとんど変化しません。圧縮はプラットフォームに依存しませんが、実装はCPUに依存しており、アルゴリズムは絶えず改善されており、最新のハードウェアが問題に持ち込むことができる増加したリソースを活用しています。
最も人気のあるUnixアーカイバはですがtar
、などの他にも存在cpio
しar
ます。(Debianパッケージはar
アーカイブ
cpio
ですが、最初のRAMディスクによく使用されます。)tar
は、(。Z)compress
、gzip
(。gz)、
bzip2
(。bz2)、xz
(。xz)などの圧縮ツールと、最も古いものから最も新しいものへと組み合わされています。 、そして偶然にも、最悪の圧縮から最高の圧縮まで。
作るtar
アーカイブをし、それを圧縮するには、明確な手順は次のとおりです。コンプレッサーは、については何も知らないtar
ファイル形式を。つまり、圧縮されたtar
アーカイブから単一のファイルを抽出するには、前述のすべてのファイルを解凍する必要があります。これはしばしば「固体」アーカイブと呼ばれます。
同様に、tarは「ストリーミング」形式であるため、パイプラインで使用するために必要です。tarアーカイブにはグローバルインデックスがなく、tarアーカイブの内容をリストすることは、それを抽出するのと同じくらいコストがかかります。
対照的に、ZipとRARおよび7-zip(最新のWindowsプラットフォームで最も人気のあるアーカイバー)は通常、各ファイルを個別に圧縮し、メタデータを圧縮します。これにより、アーカイブ内のファイルの安価なリストと個々のファイルの抽出が可能になりますが、同じアーカイブ内の複数のファイル間の冗長性を利用して圧縮率を上げることはできません。一般に、既に圧縮されたファイルを圧縮してもファイルサイズはそれ以上縮小されませんが、zipファイル内にzipファイルが表示されることがあります。最初の圧縮では、多数の小さなファイルが1つの大きなファイルに変換されます(おそらく圧縮が無効になっています)。圧縮して単一のエンティティとして圧縮します。
そこ異なるプラットフォームと哲学の間のクロス受粉は、次のとおりです。gzip
基本的にあるzip
のコンプレッサーは、そのアーカイバなし、かつxz
本質的に7-zip
「そのアーカイバなしのコンプレッサー。
他にも、専用のコンプレッサーがあります。PPMバリアントとその後継モデルZPAQ
は、リソースの消費に関係なく最大の圧縮が得られるように最適化されています。CPUとRAMは、必要な量だけ簡単に消費でき、解凍は圧縮と同じくらい負担になります(対照的に、最も広く使用されている圧縮ツールは
非対称です。解凍よりも圧縮の方が安価です)。
スペクトルのもう一方の端に、lzo
、snappy
及びLZ4
圧縮のコストで、最大速度と最小のリソース消費のために設計された「光」コンプレッサーです。それらはファイルシステムや他のオブジェクトストア内で広く使用されていますが、スタンドアロンのツールほどではありません。
それであなたはどちらを選ぶべきですか?
アーカイブ:
あなたがUbuntuを使っているのでtar
、他の場所で簡単に読めるファイルを作ろうとしているのでない限り、アーカイブ以外のものを使用する本当の理由はありません。
zip
ユビキタスを打ち負かすのは難しいですが、Unix中心ではなく、ファイルシステムのアクセス許可と所有権情報を保持しません。また、組み込まれた圧縮は時代遅れです。7-zipとRAR(およびZPAQ)はより最新の圧縮を備えていますが、Unixファイルシステムのアーカイブには同様に適していません(圧縮プログラムとしてそれらを使用することを妨げるものは何もありません)。RARも独自仕様です。
圧縮:
最大の圧縮を行うには、http://mattmahoney.net/dc/text.htmlにある巨大なベンチマークなどのベンチマークを確認できます。これにより、関連するトレードオフをよりよく理解できます。
ただし、おそらく最大の圧縮は必要ありません。それはあまりにも高価です。
xz
現代のUnixシステムで最も人気のある汎用圧縮ツールです。7-zipはxzファイルも密接に関連しているため、それらも読み取ることができると思います。
最後に、短期ストレージ以外のデータをアーカイブする場合は、オープンソースの、できれば広く普及しているものを選択して、後の頭痛を最小限に抑える必要があります。