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
には繰り返しデータが含まれており、適切に圧縮されます。
圧縮の仕組みについて詳しく知りたい場合は、「 ファイル圧縮の仕組み」をご覧ください。 記事。
非圧縮アーカイブの作成
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
非圧縮アーカイブの作成
非常に一般的な圧縮アルゴリズムは 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 など) よりも優れている場合もあり、その逆も同様です。
高レベル圧縮を使用してより多くのバイトを獲得する
ファイルをさらに小さくすることはできますか?はい。
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
(低速) まで変更することで、独自の設定を行うことができます。
その他の圧縮プログラム
調査およびテストできる一般的な圧縮アルゴリズムが他に 2 つあります (アルゴリズム オプションが異なれば、サイズ変更の結果も異なり、追加の圧縮オプションがある場合もあります)。それは、
bzip2
です。これは、
tar
に
-j
オプションを指定することで使用できます。
-J
オプションを指定することで使用できる
XZ
。
あるいは、
-I
コマンドを使用して、
bzip2
の最大圧縮オプション (
-9
) を設定できます。
xz
の場合は
-9e
。
ご覧のとおり、この場合の結果は、ある程度標準的な GZIP アルゴリズムを使用した場合よりも劣ります。それでも、
bzip2
および
xz
アルゴリズムは、他のデータ セットでは改善が見られる可能性があります。
ファイルの解凍
元の圧縮方法が何であれ、そのような圧縮アルゴリズムがコンピュータに存在していれば、ファイルの解凍は非常に簡単です。たとえば、元の圧縮アルゴリズムが 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
を組み合わせて使用する方法を知っておくと、それが役立ちます。アーカイブを再度抽出する必要がある場合は、アーカイブからデータを解凍または抽出するために使用するコンピュータで適切な解凍ソフトウェアが利用可能であれば、簡単に行うことができます。
楽しむ!





