web-dev-qa-db-ja.com

ファイルを圧縮するためのアーカイブ形式の最良の選択をどのように評価できますか?

一般的に、私は次のことを観察しました。

  • Linux-yファイルまたはツールはアーカイブの配布に bzip2 または gzip を使用します
  • Windows-yファイルまたはツールはアーカイブの配布にZipを使用します
  • 多くの人が独自のアーカイブを作成して配布するために 7-Zip を使用しています

質問:

  • これらのフォーマットの長所と短所は何ですか?これらはすべてオープンフォーマットのように見えますか?いつ/なぜ1つ(たとえば7-Zip)を別の(たとえばZip)よりも選択する必要がありますか?
  • これらはすべてポータブル形式であるにもかかわらず、なぜ上記の傾向が維持されているように見えるのですか?特定のプラットフォームで特定のアーカイブ形式を使用することに特別な利点はありますか?
24
user541686

利用可能な圧縮形式と方法は多種多様であり、まったく圧縮せず、1つのアーカイブに多数のファイルを保存するように設計されているものや、その他の新しい実験用コンプレッサー( [〜#〜] paq [〜 #〜] ベース)は、上記の操作の実行にかかる時間に関係なく、可能な限り積極的に圧縮するように設計されています。

圧縮方法の選択から必要な機能を評価し、それが使用されるコンテキストも考慮する必要があります。

さまざまな機能と考慮事項は次のとおりです。

  • 圧縮能力-ファイルを大幅に縮小しますか?
  • 使いやすさ-ファイルが別のユーザーに送信される場合、アーカイブは簡単に抽出できますか、それともより多くのソフトウェアをインストールする必要がありますか?
  • パスワード保護および/または暗号化-これらのセキュリティ対策は必要ですか?
  • 複数ボリュームのサポート-ターゲットメディアでファイルを適切なチャンクに分割する必要がある場合、フォーマットはこれをエレガントにサポートしますか?たとえば、CDの場合は650MBです。
  • 修復と回復-ファイルが部分的に破損した場合、データの復元に役立つ回復レコードを提供しますか?
  • Unicodeサポート-アーカイバは国際ファイル名をサポートしますか、それとも標準ASCIIのみをサポートしますか?
  • システム要件7-Zip などの最新のコンプレッサーは、より大きな辞書を使用して圧縮効率を向上させる機能を提供します(a辞書は、圧縮ファイル内で一般的に繰り返されるデータの参照です)が、これにより、圧縮時と解凍時の両方でメモリ消費量が増加します。
  • 自己解凍サポート-アーカイブを実行可能ファイルにロールバックして、誰でも使いやすくすることができますか? (また、単一のプラットフォーム用の自己解凍型ファイルしか作成できないことにも注意してください。一般的に、Windowsの自己解凍型ファイルは、Wineのような互換性レイヤーを介して実行しない限り、デフォルトではLinuxでは機能しません)。
  • ファイルシステム属性-コンプレッサーは、抽出時に保持する価値のある関連ファイルシステムのメタデータとアクセス許可を保存していますか?

一般的に言えば、Zipが最も普及している形式ですが、4 GBを超えるサイズは一般的にサポートされていません(あるとしても)。セキュリティサポートは一般に不十分と見なされます(標準パスワードはプレーンテキスト攻撃で侵害される可能性があり、さらに暗号化は一般に商用Zipソフトウェアベンダーによる形式の非公式な派生物として実装されます)。

それとは別に、他のほとんどの一般的な形式は、より多くのソフトウェアをインストールすることにより、すべてのオペレーティングシステムで何らかの形でサポートされます。

私の個人的な選択は7-Zipです。これは、優れた柔軟な圧縮機能を備えているためです。それはWindows上で独特のユーザーインターフェースを持っているにもかかわらず。 LinuxおよびMacOS X用のデコンプレッサがあります(ただし、標準でGUIベースではありません)。

16
Ruairi Fullam

頭に浮かぶことの1つは、Jeff Atwoodからの(2年前の)ブログ投稿です: マルチコア時代のファイル圧縮 。その記事で彼は、3つ以上のコアを実行している場合、bzip2が7-Zipよりも優れていることを発見しました。

8
matpe

最初の質問ですが、7-Zipは、多くのアルゴリズムを使用してデータを圧縮および解凍できるアーカイバです。

2番目の質問では、プラットフォームが特定の形式をサポートするツールをサポートしていることを確認してください。たとえば、Macでは [〜#〜] rar [〜#〜] の使用は避けます。使用することは可能であり、それをサポートする無料のユーティリティがありますが、RARをサポートするWindowsユーティリティが持っているはるかに豊富なインターフェイスが欠けています(私の経験では)。

4
soandos

他の人が述べたように、特定の圧縮形式の選択は、使用法と対象読者に大きく依存します。

  • .tar.gzおよびtar.bz2アーカイブは、Linuxシステムでの使用に最適です(および拡張機能としてLinuxユーザーとファイルを共有するため)。tar、gzip、およびbzip2ツールはプラットフォーム上でほぼ遍在し、.tar形式は完全であるためです。 Unix権限およびその他のプラットフォーム固有のプロパティのサポート。 tarアーカイブを圧縮するためのgzipとbzip2のどちらを選択するかは、主に速度と圧縮率の決定であり、bzip2はより小さなファイルを配信しますが、圧縮速度ははるかに遅くなります。これらの形式の欠点には、Windowsとの互換性が低く、単一のファイルを抽出するためにアーカイブ全体を解凍する必要がある(潜在的な)ことが含まれます。

  • Zipアーカイブは、ネイティブツールを使用してほとんどのプラットフォームで抽出できるため、7-Zipなどのサードパーティのアーカイブソフトウェアのインストールに不安を感じる技術者以外のユーザーにアーカイブを送信する場合に最適です。圧縮レベルは、より高度なアルゴリズムほど良くなく、Unixのアクセス許可をサポートしていませんが、たとえば、休日の写真のアーカイブを祖母に送信したい場合は、優れた形式です。 Zipは、基本的なパスワード保護も提供し、アーカイブ内のどこからでもファイルをすばやく抽出できます。

  • 可能な限り最高の圧縮率が必要な場合は、7-Zipが適しています。 Zipと同様に、Unixファイルのアクセス許可や所有権をサポートしておらず、ほとんどのプラットフォームにデフォルトでインストールされていないため、使用する作業が少し多くなりますが、圧縮率の向上が重要な場合は、Windowsで使用する価値があります。すべてのLinux環境では、「xz」または「lzma」圧縮ツールをtarと一緒に使用することをお勧めします。これらは、「gzip」および「bzip2」とまったく同じように動作しますが、7などのより高度なLZMAアルゴリズムを使用します。 -Zip。

4
user89061

例として、これらの場合に前述の形式を使用します。

  • テキストファイル(特にログ):bz2
  • 配布するファイルのコレクション(ソースコードなど):gz(実際にはtar.gz)。
  • 各種ファイル:7Zip。私は非常に効率的な方法でほとんど何でも圧縮することができます。クロスプラットフォーム、オープンソース、安定、軽量、ファイル(ヘッダーとデータ)暗号化、...他に何かお願いできますか? :)

私はRARを避けます私が知っている誰かからRARファイルを受け取るときはいつでも、それはプロプライエタリであり、おそらく彼/彼女はライセンスのないソフトウェアを使用しているので、そのフォーマットの使用をやめるように彼/彼女に言います(ほとんどの人WinRARの試用版をダウンロードして、永久に使用し続けてください)。

PS:私はUbuntu(主に)とWindows(デュアルブートとVirtualBoxの両方)を実行しています。

2
glarrain

人気のあるツールがそれらを統合しているためにしばしば混同される少なくとも4つの別々の仕事があります:

  1. アーカイブ:複数のファイル(メタデータを含む)を1つのファイルに結合し、可能な限り多くのものを保持する機能。 Linux/Unixの世界では、アーカイブは伝統的にTARファイル形式で行われます。
  2. 圧縮:バイナリデータのストリームのサイズをロスレスで最小化する機能。 Linux/Unixの世界では、これは伝統的にGZipとBZip2によって行われます。
  3. 暗号化:キーでデータをスクランブルする機能
  4. チェックサム:エラーを検出する(場合によっては修正する)機能。

.tar.gzと.tar.bzの遍在性は、すべてを実行する単一のツールではなく、単一のジョブを適切に実行する小さなツールというUnix哲学に対応しています。 TARファイル形式は圧縮または暗号化をサポートしていませんが、任意のコンプレッサー(.tar.Zipまたは.tar.7zを含む)でさらに圧縮できます。 GZipとBZip2の仕事は、単にファイルストリームを別のファイルストリームに圧縮することです。圧縮層は、メタデータ、暗号化、またはチェックサムを保持する方法を気にする必要はありません。しかし、時間の経過とともに、コンプレッサーをより便利に操作するために、tarプログラムにいくつかのショートカットが作成されました。

Zipおよび7zファイル形式では、これらの個別のジョブは、単一のスーパーファイル形式の単一のプログラムによって実行されます。

これらはすべてポータブル形式であるにもかかわらず、なぜ上記の傾向が維持されているように見えるのですか?特定のプラットフォームで特定のアーカイブ形式を使用することに特別な利点はありますか?

プログラミングに使用されるさまざまなツール(makeなど)ではファイルのアクセス許可や変更時間などを保持することが重要であるため、プログラムのソースコードは従来から.tar.gzまたは.tar.bz2として配布されていました。

個別のアーカイブと圧縮のステップは何年にもわたって非常にうまく機能しており、アーカイブと圧縮を自由に組み合わせることができるという明らかな利点があり、その欠点(2ステップの圧縮プロセス)は、よりスマートなツールを開発することで簡単に回避できます(最新のLinux圧縮プログラムのほとんどは、.tar.gzまたは.tar.bz2に直接圧縮し、中間ステップを非表示にします)。

他のファイル形式に移行する強い理由はありません。新しいコンプレッサーは、伝統を破ることを正当化するための大幅に優れた圧縮率を備えておらず、tarはすべてを十分に保存できます。

1
Lie Ryan