技術ノート Linux Linux で tar を使用してファイルを圧縮および解凍する方法

Linux で tar を使用してファイルを圧縮および解凍する方法

Linux で tar を使用してファイルを圧縮および解凍する方法

Tar は単なるアーカイブ ユーティリティではありません。tar には、ファイルをアーカイブすると同時にファイルを圧縮および解凍できるいくつかの優れた組み込み機能が付属しています。この記事などで詳細を学びましょう。

tar とは何ですか? インストール方法は何ですか?

tar マニュアルに従って (次のように入力してアクセスできます)

 man tar

tar はアーカイブ ユーティリティです。ファイルをアーカイブする際のオンザフライの圧縮および解凍など、多くの機能をサポートしています。 tar をインストールして始めましょう。

Debian/Apt ベースの Linux ディストリビューション (Ubuntu や Mint など) に tar をインストールするには、ターミナルで次のコマンドを実行します。

 sudo apt install tar

RedHat/Yum ベースの Linux ディストリビューション (RHEL、Centos、Fedora など) に tar をインストールするには、ターミナルで次のコマンドを実行します。

 sudo yum install tar

次に、いくつかのサンプル データを作成します。

 mkdir テスト; CDテスト

abcdefをタッチする

エコー 1 > a;エコー 5 > e;エコー ‘22222222222222222222’ > b

ここでは、ディレクトリ テストを作成し、 touch コマンドを使用してその中に 6 つの空のファイルを作成しました。また、ファイル a e b にいくつかの番号を追加しましたが、特にファイル b には繰り返しデータが含まれており、適切に圧縮されます。

圧縮の仕組みについて詳しく知りたい場合は、「 ファイル圧縮の仕組み」をご覧ください。 記事。

Linux で tar を使用してファイルを圧縮および解凍する方法

非圧縮アーカイブの作成

tar -hcf all_files.tar *

ls -l | grep -v 合計 | awk ‘{print $5″tbytes for: “$9}’ |ソート -n

ここでは、 tar -hcf all_files.tar * コマンドを使用して、非圧縮アーカイブを作成しました。このコマンドで使用されるオプションを見てみましょう。

まず、 -h がありますが、この特定のケースでは必須ではありませんが、 tar コマンドに常に含めることを強くお勧めします。このオプションは dereference の略で、シンボリックリンクを逆参照 (または追跡) し、シンボリックリンクが指すファイルをアーカイブおよびダンプします。

次に、 -c オプションと -f オプションがあります。これらは -h - と一緒に書かれているだけであることに注意してください。つまり、別の - を指定する代わりに、単に他の短縮オプションにタグを付けているだけです。早くて簡単。

-c オプションは、「 新しいアーカイブの作成」 を表します。 –no-recursion オプションも使用しない限り、デフォルトではディレクトリは再帰的にアーカイブされることに注意してください。 -f オプションを使用すると、アーカイブの名前を指定できます。したがって、アーカイブ ファイル名をその後ろに直接追加できるように、(オプションが必要なため) オプション チェーンの最後に来る必要があります。 tar -fch test.tar * を使用しても機能しません。

tar が生成された後、ファイルごとのバイト数を明確に示す変更された ls 出力を使用します。ご覧のとおり、tar ファイルはすべてのファイルを合わせたよりもはるかに大きくなります。ファイルは単純にアーカイブされてお​​り、 tar の全体的なオーバーヘッドが追加されています。

興味深い補足として、コマンド プロンプトで file コマンドを使用するだけで、どの種類のファイルが処理されているかを確認することもできます。

ファイルc

ファイルb

ファイル all_files.tar

Linux で tar を使用してファイルを圧縮および解凍する方法

非圧縮アーカイブの作成

非常に一般的な圧縮アルゴリズムは GZIP です。同じオプション ( -z ) を短縮コマンド ライン オプションのチェーンに追加し、これがファイル サイズにどのような影響を与えるかを見てみましょう。

 tar -zhcf all_files.tar.gz [af]

ls -l | grep -v 合計 | awk ‘{print $5″tbytes for: “$9}’ |ソート -n

今回は、 a から f という名前のファイルのみを使用する正規表現を指定し、 tar コマンドが新しい all_files.tar.gz ファイル内に all_files.tar ファイルを含めないようにしました。

実際に正規表現をどのように使用するのかを参照してください。 正規表現についてさらに詳しく知りたい場合は 、「sed を使用して正規表現を使用してテキストを変更する」を参照してください

また、データのダンプが完了したら、GZIP 圧縮を使用して結果の .tar ファイルを圧縮する -z オプションも含めました。最終的に 186 バイトのファイルが得られるのは素晴らしいことです。これは、この場合、約 10Kb の tar ヘッダー/オーバーヘッドが非常に適切に圧縮できることを示しています。

アーカイブの合計サイズはファイルの合計サイズの 7.44 倍ですが、この架空の例は、データが事前に圧縮されているか、圧縮されていない限り、ほとんどの場合損失ではなく利益が見られる大きなファイルの圧縮を表すものではないため、あまり重要ではありません。さまざまなアルゴリズムを使用して簡単に圧縮できないような形式です。それでも、異なるデータセットでは、あるアルゴリズム (GZIP など) が別のアルゴリズム (BZIP2 など) よりも優れている場合もあり、その逆も同様です。

Linux で tar を使用してファイルを圧縮および解凍する方法

高レベル圧縮を使用してより多くのバイトを獲得する

ファイルをさらに小さくすることはできますか?はい。 tar -I オプションを使用することで、GZIP の最大圧縮オプションを設定できます。これにより、使用する圧縮プログラムを指定できます ( stackoverflow ユーザーの ideaman42 に感謝します)。

 tar -I 'gzip -9' -hcf all_files.tar.gz [af]

ls -l | grep -v 合計 | awk ‘{print $5″tbytes for: “$9}’ |ソート -n

ここでは、使用する圧縮プログラムとして -I 'gzip -9' を指定し、 -z オプションを削除しました (組み込みの tar GZIP 構成を使用する代わりに、使用する特定のカスタム プログラムを指定しているため)。 GZIP による (レベル -9 での) より優れた (しかし一般に遅い) 圧縮試行の結果、結果は 12 バイト減少しました。

一般に、圧縮が速くなるほど (圧縮試行のレベルが低い、つまり -1 )、ファイル サイズは大きくなります。また、圧縮が遅いほど (圧縮試行のレベルが高いほど、つまり -9 )、ファイルは小さくなります。圧縮レベルを -1 (高速) から -9 (低速) まで変更することで、独自の設定を行うことができます。

Linux で tar を使用してファイルを圧縮および解凍する方法

その他の圧縮プログラム

調査およびテストできる一般的な圧縮アルゴリズムが他に 2 つあります (アルゴリズム オプションが異なれば、サイズ変更の結果も異なり、追加の圧縮オプションがある場合もあります)。それは、 bzip2 です。これは、 tar -j オプションを指定することで使用できます。 -J オプションを指定することで使用できる XZ

あるいは、 -I コマンドを使用して、 bzip2 の最大圧縮オプション ( -9 ) を設定できます。

xz の場合は -9e

ご覧のとおり、この場合の結果は、ある程度標準的な GZIP アルゴリズムを使用した場合よりも劣ります。それでも、 bzip2 および xz アルゴリズムは、他のデータ セットでは改善が見られる可能性があります。

Linux で tar を使用してファイルを圧縮および解凍する方法

ファイルの解凍

元の圧縮方法が何であれ、そのような圧縮アルゴリズムがコンピュータに存在していれば、ファイルの解凍は非常に簡単です。たとえば、元の圧縮アルゴリズムが bzip2 (tar ファイル名の .bz2 拡張子で示される) の場合、ターゲット コンピュータで sudo apt install bzip2 (または sudo yum install bzip2 ) を実行して、圧縮を解凍する必要があります。ファイル。

 rm abcdef

tar -xf all_files.tar.gz

ls

-x を指定するだけで、 all_files.tar.gz ファイルを 展開 または解凍し、前と同様に -f 短縮オプションを再度使用してファイル名を示します。

ファイルを圧縮すると、ストレージ デバイス上のスペースを大幅に節約できます。利用可能な圧縮オプションと tar を組み合わせて使用​​する方法を知っておくと、それが役立ちます。アーカイブを再度抽出する必要がある場合は、アーカイブからデータを解凍または抽出するために使用するコンピュータで適切な解凍ソフトウェアが利用可能であれば、簡単に行うことができます。 楽しむ!

「 Linux で tar を使用してファイルを圧縮および解凍する方法」に関するベスト動画選定!

[Windows 11/10 活用Tips] ファイルを圧縮・解凍する方法
圧縮されたファイルやフォルダを解凍する方法