Linuxファイル圧縮オプションと比較

Linux File Compression Options



一般に、圧縮は、元のデータよりも少ないデータを使用して情報を本質的にエンコードする便利な方法です。 Linuxの場合、さまざまな圧縮オプションがあり、それぞれに独自の利点があります。

一般的なLinuxディストリビューションは、いくつかの非常に便利でシンプルな圧縮メカニズムへのアクセスを提供します。この記事ではそれらにのみ焦点を当てます。







圧縮タイプ

圧縮とは、元のビット数よりも少ないビット数を使用して情報をエンコードおよび表現することです。ファイル圧縮の場合、圧縮方法は独自のアルゴリズムと数学的計算を利用して、通常は元のファイルのサイズよりも小さい出力を生成します。さまざまな圧縮の仕組みとファイルのランダムな性質により、マイレージは大きく異なる場合があります。



圧縮には2つのタイプがあります。



  • 非可逆圧縮 :これはリスクの高いタイプの圧縮であり、データの整合性を保証するものではありません。基本的に、一度圧縮すると、圧縮されたアーカイブを使用して元のファイルを再構築できないリスクがあります。
    このタイプの圧縮の確かな例は、よく知られているMP3形式です。元のオーディオファイルからMP3を作成すると、元のソース音楽ファイルよりも大幅に小さくなります。これにより、一部のオーディオ品質が失われます。
  • 可逆圧縮 :これは最も広く使用されているタイプの圧縮です。可逆圧縮方式を使用すると、圧縮ファイルから元のファイルを再構築できます。この記事で説明する圧縮方法は、すべて可逆圧縮方法です。

Linux圧縮

圧縮方法の大部分はツールから利用できます タール 。 zip圧縮については、 ジップ 道具。システムにこれらのツールがすでにインストールされていると仮定して、始めましょう。





まず、テストファイルが必要です。次のコマンドを実行して作成します。

$base64/開発者/urandom| -NS 20000000 >>file.txt



20MBのサイズのテキストファイルを作成します。

それでは、ファイルのコピーを10個作成しましょう。合わせて200MBです。

圧縮用のZip

Zipは非常に一般的です。 zipファイルを作成するには、zipツールに次のコマンド構造が必要です。

$ジップ <出力>>。ジップ<入力>>

テストディレクトリの下にあるすべてのファイルを単一のzipファイルに圧縮するには、このコマンドを実行します。

$ジップtest.zip*

入力サイズは200MBでした。圧縮後、現在は152MBです。

デフォルトでは、zipツールはDEFLATE圧縮を適用します。ただし、bzip2圧縮を使用することもできます。それだけでなく、パスワードで保護されたzipファイルを作成することもできます。 zipの詳細

Linuxでの圧縮用タール

タールは圧縮方法ではありません。代わりに、アーカイブの作成に最もよく使用されます。ただし、アーカイブに多くの一般的な圧縮方法を実装できます。

tar(tarballとも呼ばれます)アーカイブを処理するためのtarツールがあります。タールの詳細をご覧ください。通常、tarツールは次のコマンド構造を使用します。

$タール <オプション>> <output_file>> <入力>>

テストファイルを単一のtarアーカイブに追加するには、次のコマンドを実行します。

$タール -cvftest.tar*

ここでは、ファイルサイズは同じままです。

Linuxでの圧縮用Gzip

GNU Zipまたはgzipは、もう1つの一般的な圧縮方法であり、私の意見では、圧縮率が高いため、従来のzipよりも優れています。これは、元々UNIXに取って代わる運命にあったMarkAdlerとJean-LoupGaillyによって作成されたオープンソース製品です。 圧縮する 効用。

gzipアーカイブを管理するために、tarとgzipの2つのツールを使用できます。両方をチェックしてみましょう。

まず、gzipツール。 gzipコマンドの構造は次のようになります。

$gzip <オプション>> <入力>>

たとえば、次のコマンドはtest1.txtをtest1.txt.gz圧縮ファイルに置き換えます。

$gzip -vtest1.txt

gzipを使用してディレクトリ全体を圧縮する場合は、このコマンドを実行します。ここで、-rフラグは再帰的圧縮用です。 Gzipはすべてのフォルダーを調べ、各フォルダー内の個々のファイルを圧縮します。

$gzip -NS <folder_path>>

Gzipは、1(最小圧縮、最速)から9(最高圧縮、最低)までのさまざまな圧縮強度値をサポートします。

$gzip -v -9 <ファイル>>

出力と使いやすさをより適切に制御するには、tarがタスクに適しています。次のコマンドを実行します。

$タール -cvzftest.tar.gz*

結果は、DEFLATEを使用したzipと同様であり、圧縮後に152MBになります。

Linuxでの圧縮用のBzip2

Bzip2は、圧縮にBurrows-Wheelerアルゴリズムを使用する無料のオープンソースツールです。 1996年に最初に導入されたbzip2は、gzip圧縮の代わりに頻繁に使用されます。

gzipと同様に、bzip2を操作するためのツールはtarとbzip2の2つです。

bzip2ツールはgzipツールと同様に機能します。一度に1つのファイルでしか機能しません。コマンドの構造は次のとおりです。

$bzip2 <オプション>> <入力>>

test1.txtファイルを圧縮してみましょう。ここで、-vフラグは冗長モード用です。

$bzip2 -vtest1.txt

gzipと同様に、bzip2も、1(デフォルト、メモリ使用量が少ない)から9(極端な圧縮、メモリ使用量が多い)までのさまざまなレベルの圧縮をサポートしています。

$bzip2 -v -9 <ファイル>>

bzip2圧縮を使用するより良い方法は、tarを使用することです。次のコマンドを使用します。

$タール -cvjftest.tar.bz2*

圧縮は以前のものよりわずかに改善されています。現在、ファイルサイズは151.7MBに縮小されています。

Linuxでの圧縮用XZ

圧縮の分野では比較的新参者です。 2009年に最初にリリースされて以来、使用量は着実に増加しています。

xz圧縮ツールは、gzipやbzip2と比較して圧縮率が高いことで知られているLZMA2アルゴリズムを使用しているため、ディスク容量を最大限に節約したい場合に最適です。ただし、これには、より高いメモリ要件と時間の消費というコストが伴います。

XZ圧縮ツールで作成されたファイルの拡張子は.xzです。単一のファイルを圧縮する場合は、XZツールを直接呼び出すことができます。

$xz<オプション>> <ファイル>>

たとえば、次のコマンドを実行して、test1.txtファイルを圧縮します。

$xz-vtest1.txt

前述の他の圧縮方法と同様に、xzは、1(最低の圧縮、最速)から9(最高の圧縮、最低)までのさまざまな範囲の圧縮強度もサポートします。時間に関係なく、スペースを節約したいだけの場合は、極端な方法を選択してください。

$xz-v -9 <ファイル>>

すべてのテストファイルから圧縮XZファイルを作成するには、このコマンドを実行します。

$タール -cvJftest.tar.xz*

ここで、出力ファイルサイズは153.7MBです。

圧縮されたアーカイブの抽出

作成したアーカイブの抽出は、作成するよりも簡単です。 zipファイルを抽出するには、次のコマンド構造を使用します。

$解凍 <ファイル名>>。ジップ-NS <行き先>>

作成したzipアーカイブを抽出するには、このコマンドを実行します。これにより、同じディレクトリ内のすべてのコンテンツが抽出されます。

$解凍test.zip

tar、tar.gz、tar.bz2、およびtar.xzアーカイブを抽出するには、 タール 道具。次のtarコマンドは、それらすべてを抽出するために適用できます。

$タール -xvf <archive_filename>>

たとえば、bz2圧縮アーカイブからすべてのファイルを抽出してみましょう。

$タール -xvftest.tar.bz2

gzip(tar.gzではない)ファイルを解凍するには、このコマンドを実行します。

$gzip -NS <gzip_file>>

同様に、次のコマンドはbzip2アーカイブを解凍します。

$bzip2 -NS <bzip2_file>>

同じコマンド構造がxzアーカイブに適用されます。

$xz-NS <xz_​​file>>

最終的な考え

うまくいけば、これでさまざまな状況で圧縮タスクを処理するのに十分な知識が得られました。特定の要件に応じて、すべての圧縮方法は非常に魅力的な機能を提供します。

注意すべき重要な点の1つは、圧縮結果が常に同じになるとは限らないということです。データ入力が異なると、出力も異なります。たとえば、場合によっては、xzは非常識な圧縮結果を提供できますが、この例では提供しませんでした。同じことが他の方法にも当てはまります。

これらのツールの詳細については、それぞれのマニュアルページを確認してください。

$ ジップ