おそらくほとんどの人は、Zip ファイルの作成、送信、受信に精通しているでしょう。Zip はファイルのコレクションを取得し、それらを Zip アーカイブ ファイルに保存し、その過程でデータを圧縮します。
ファイルの内容を保存するだけでなく、オブジェクトに関連付けられた追加情報であるすべてのメタデータも保存します。ファイルの場合は、変更時刻、その所有者と権限、そしてもちろん各ファイルの名前が含まれます。
アーカイブを解凍すると、これらの情報がすべて抽出され、元のファイル セットがまったく同じように再作成されます。これは非常に便利です。
アーカイブにはいくつかの用途がありますが、最も一般的な用途には、ダウンロード用に一連のファイルをバンドルすること (単一ファイルの方が扱いやすく、圧縮によりダウンロードが速くなります) やバックアップの作成が含まれます。Zip は古くから存在しているため、誰でも使用でき、すべての OS で処理できます。それにもかかわらず、Zip には多くの欠点があります。
主な問題は、現代の基準からすると圧縮率が低いことです。過去 25 年にわたって圧縮テクノロジは進歩し、Zip には改良が加えられてきましたが、より優れた代替手段もいくつかあります。
Zip のもう 1 つの欠点は、Zip がファイルにアーカイブすることを目的としているのに対し、データを別のデバイスやサービスに送信したい場合があることです。
タールを理解する
Linux や Mac OS X などの Unix 系オペレーティング システムの標準アーカイブ プログラムは Tar です。Tar はもともとテープ ドライブ (Tape ARchive) にバックアップを保存するために使用されていたため、このように呼ばれます。
これは、アーカイブされたすべてのデータを標準出力に送信し、多くのテープ ドライブにはすでにハードウェア圧縮が組み込まれているため、デフォルトではデータを圧縮しないため、Zip とは異なる方法で動作します。
圧縮コードがないことは欠点のように思えるかもしれませんが、実際には便利です。Tar は外部圧縮プログラムを介してデータをパイプできるため、Tar プログラムの開発時に存在しなかった圧縮プログラムであっても、任意の圧縮プログラムを使用できます。
圧縮プログラムは 1 つのファイルまたはデータ ストリームを処理し、1 つの圧縮ファイルまたはストリームを生成するため、ジョブがアーカイブと圧縮の 2 つの部分に分割されます。これはより複雑に見えるかもしれませんが、Tar は詳細自体を完全に処理できます。
fooというディレクトリがあるとします。私たちは、tarball と呼ばれることが多いそのアーカイブを作成したいと考えています。次のいずれかのオプションを実行できます。
tar cf foo.tar foo
tar czf foo.tar.gz foo
tar cjf foo.tar.bz2 foo
tar cJf foo.tar.xz foo
cオプションは Tar プログラムにアーカイブを作成していることを伝え、fオプションは指定された名前を使用してファイルにアーカイブを保存していることを伝えます。したがって、最初のコマンドはfoo.tarという非圧縮アーカイブを作成します。
後続のコマンドは、使用する特定の圧縮タイプを Tar に指示する追加オプションを追加します。z はgzip圧縮を使用し、jは bzip2 圧縮を使用し、Jは xz 圧縮を使用します。(大文字小文字に注意してください!)
Tar の引数とオプション
これらの引数には、コマンドを読みやすくするための長いバージョンもありますが、ほとんどの人は怠け者で、入力しやすい短いバージョンを使用しています。ただし、次のようにしたい場合は、このコマンド ラインを使用することもできます。
tar --create --gzip --file foo.tar.gz foo
ファイル拡張子は必須ではありませんが、これは人々がアーカイブの種類を正確に理解しやすくするための慣例です。システム自体は、これらすべてを独自に処理できるため、そのような助けを必要としません。アーカイブを解凍するには、単にc をxに置き換えるか、--create を--extractに置き換えるだけです。ただし、Tar が判断するため、圧縮タイプを指定する必要はありません。
tar xf foo.tar.gz
Tar が何を行っているかを示すために、 vまたは--verboseを追加することもできます。
tarball を受け取った場合は、解凍せずにその中身を確認したいと思うかもしれません。アーカイブ、特にバックアップを作成した場合は、それを信頼する前に、それが正しいかどうかを確認することをお勧めします。テスト オプションは整合性をチェックし、アーカイブの内容を一覧表示します。
タール TVF foo.tar.gz
これらは主な Tar オプションですが、このプログラムには、新しいアーカイブを作成する代わりに既存のアーカイブにファイルを追加するAや--concatenateなど、他にも多くのオプションがあります。
将来性のあるもの
Tar は圧縮を別のプログラムに渡すため、今後登場するあらゆる新しい圧縮形式を処理できると述べました。gzip、bzip2、xz にはこれを自動的に行うコマンド ライン オプションがありますが、誰かが新しいコンプレッサーを思いついた場合はどうなるでしょうか?
sdc - 超高性能コンプレッサーのようなものを言いますか? 非圧縮の tarball を作成し、それを sdc を使用して圧縮することもできますが、無駄が多く、時間がかかります。代わりにパイプを使用します。
タル・シー・フー | sdc >foo.tar.sdc
unsdc foo.tar.sdc | タールXV
ここでは、 Tar では--createオプションのみを使用します。宛先がないため、Tar はアーカイブ データを標準出力に送信し、その後 sdc 圧縮プログラムにパイプされます。2 番目のコマンドはプロセスを逆に実行し、アーカイブを解凍し、抽出のために Tar に送信します。
- この記事は、Linux、オープンソース開発、ディストリビューション リリースなどに関する知識を高めるためのナンバーワンの雑誌である Linux Format によって TechRadar に提供されたものです。ここからLinux Format の印刷版またはデジタル版を購読してください(新しいタブで開きます)