システム管理者として、抽出する必要のあるアーカイブをダウンロードした可能性があります。 彼らのファイルを明らかにするために。
データベース全体をバックアップすることもできます。 1つのアーカイブに集約したい多種多様な小さなファイルで構成されています。
アーカイブ およびファイルの圧縮 Unixの世界では一般的な操作であり、システム管理者によって非常に定期的に実行されます。
幸いなことに、Linuxは、アーカイブからファイルをアーカイブ、圧縮、解凍、および抽出するために、さまざまなコマンドのセットを公開しています。
このチュートリアルでは、tarコマンドと、Linuxのスペースを節約するために使用できるさまざまな圧縮方法について詳しく学習します。
準備はいいですか?
tarを使用してLinuxでファイルをアーカイブする
タール システム管理者の間で非常に人気のあるコマンドです。
tarballと呼ばれることもあります 、tarは歴史的に、当時ファイルシステムがなかったデバイスにデータを書き込むために使用されていました。
その結果、tarコマンドは 1979に導入されました。 「tp」を置き換えるため 」当時使用されていたプログラム。
現在、tarコマンド ファイルをアーカイブするために広く使用されています(つまり、ファイルを1つのアーカイブにまとめる)。
tarを使用してLinuxでファイルをアーカイブするには、「 tar」を実行します 」と「cvf 」オプション。
$ tar -cvf archive.tar file1 file2 directory1 directory2
file1/
file2/
directory1/
directory2/
この場合、3つの異なるオプションを使用しました:
- -c :アーカイブの作成の場合、選択したファイルから作成された新しいアーカイブを作成する場合は、かなり自明のオプションです。
- -v :詳細については、これが、実行時にアーカイブに追加されたファイルをコマンドが表示する理由です。
- -f :ファイルの場合、このオプションは、作成するアーカイブのファイル名(この場合はarchive.tar)を指定するために使用されます
これらのオプションは、Linuxでファイルをアーカイブするためのおそらく最も重要なオプションです。
「-f」フラグを指定してtarコマンドを実行すると、現在の作業ディレクトリに新しいアーカイブが作成されました。
$ ls -l
total 20
-rw-rw-r-- 1 schkn schkn 10240 Nov 9 10:41 archive.tar
drwxrwxr-x 2 schkn schkn 4096 Nov 9 10:41 directory1
drwxrwxr-x 2 schkn schkn 4096 Nov 9 10:41 directory2
-rw-rw-r-- 1 schkn schkn 0 Nov 9 10:41 file1
-rw-rw-r-- 1 schkn schkn 0 Nov 9 10:41 file2
ご覧のとおり、アーカイブのサイズは、アーカイブ内のファイルの合計よりも大きくなっています。
なぜですか?
tarアーカイブを作成することは、単にファイルとディレクトリを大きなボックスに入れるだけではありません。アーカイブは、かなりのスペースを必要とする可能性のある特別なファイルヘッダーで作成された特別なファイルでもあります。
結果として、アーカイブはその中のファイルの合計よりもはるかに大きくなります。
これは非常に重要な事実です。ファイルのアーカイブは、ファイルがその中で圧縮されていることを意味するわけではないことを理解できるからです。
アーカイブ時にファイルを圧縮するには、tarコマンドに他のオプションを提供する必要があります。
ファイルの圧縮については、次の章で説明します。
Linuxでtarを使用してファイルを抽出する
アーカイブファイルを作成したので、アーカイブにあるファイルを抽出することをお勧めします。
tarコマンドを使用してファイルを抽出するには、「 -x」を追加します 最初の「-c」オプションの代わりに「」オプション。
$ tar -xvf archive.tar
file1
file2
directory1/
directory2/
ファイルを抽出しても、アーカイブが現在の作業ディレクトリから削除されるわけではないことに注意してください。
$ ls -l
total 28
-rw-rw-r-- 1 schkn schkn 10240 Nov 9 12:01 archive.tar
drwxrwxr-x 2 schkn schkn 4096 Nov 9 10:41 directory1
drwxrwxr-x 2 schkn schkn 4096 Nov 9 10:41 directory2
-rw-rw-r-- 1 schkn schkn 0 Nov 9 12:00 file1
-rw-rw-r-- 1 schkn schkn 0 Nov 9 10:41 file2
Linuxでファイルを抽出する場合、注意が必要なちょっとした落とし穴があります。
現在の作業ディレクトリのファイルがアーカイブ内のファイルと同じ名前の場合、作業ディレクトリのファイルの内容はアーカイブのファイルに置き換えられます。
説明のために、ファイルの1つにコンテンツを追加し、ファイルを抽出して、ファイルのコンテンツを再検査します。
$ echo "Added some content to the file" > file1
$ tar -xvf archive.tar
$ cat file1
<empty>
ローカルファイルとアーカイブファイルの比較
処理中にデータが消去されるのを防ぐために、tarコマンドはファイルを比較することができます。 アーカイブ内のファイルとともに現在の作業ディレクトリにあります。
前に説明した例に戻って、「file1」ファイルにコンテンツを追加してみましょう。
$ echo "Added some content to the file" > file1
ファイルをtarと比較するには、「-d」オプションを使用します。
$ tar -dvf archive.tar
file1
file1: Mod time differs
file1: Size differs
file2
directory1/
directory2/
ご覧のとおり、tarはタイムスタンプを比較します 具体的には、ファイルの最新の変更日です。
ローカルファイルの変更日がアーカイブファイルの変更日よりも新しい場合、tarコマンドは変更時刻が異なることを示す通知を表示します。
同様に、tarはファイルサイズを検査し、ファイル間のサイズの違いを強調表示できます。
ファイルの消去を回避するために、スターを使用できます。 既存のtarコマンドの優れた代替コマンドです。
スターを使用してファイルの上書きを防止する
デフォルトでは、starユーティリティがシステムにインストールされていない可能性があります。
スターユーティリティをインストールするには、YUMユーティリティを実行します
$ sudo yum install star
次に、starを使用してファイルをアーカイブするには、「-c」オプションを指定して「star」を実行します。
$ star -c -f=archive.tar file1 file2
次に、gzipまたはgunzipユーティリティを使用して、新しいアーカイブを圧縮できます。
$ gzip archive.tar
結果として、最初のtarファイルはtar.gzアーカイブに変換されます。
これで、まったく同じ名前のファイルを作成した場合、starユーティリティはデフォルトでそのファイルを上書きしません。
$ echo "This is some content" > file1
$ gzip -d archive.tar.gz
$ star -x -f=archive.tar
star: current 'file1' newer.
star: current 'file2' newer.
star: 1 blocks + 0 bytes (total of 10240 bytes = 10.00k).
$ cat file1
This is some content
コンテンツを失うことを恐れているときに非常に便利です!
Linuxでgzipを使用してファイルを圧縮する
tarアーカイブの準備ができたので、次のステップは、サイズを小さくするために圧縮することです。
そのために、最初に gzipを使用します ユーティリティ。
デフォルトでは、gzipユーティリティがインストールされているはずですが、そうでない場合は、ディストリビューションに応じてインストールしてください。
$ sudo apt-get install gzip
$ sudo yum install gzip
gzipがインストールされたので、「gzip」を実行して、作成したアーカイブを引数として渡します。
$ gzip archive.tar
gzipコマンドを実行すると、 tar.gzが作成されます 現在の作業ディレクトリにあるファイル。
最も重要なのは、最初のtarファイルがtar.gzにアップグレードされるため、最初のアーカイブがなくなることです。
$ ls -l
total 12
-rw-rw-r-- 1 schkn schkn 184 Nov 9 10:41 archive.tar.gz
drwxrwxr-x 2 schkn schkn 4096 Nov 9 10:41 directory1
drwxrwxr-x 2 schkn schkn 4096 Nov 9 10:41 directory2
-rw-rw-r-- 1 schkn schkn 0 Nov 9 10:41 file1
-rw-rw-r-- 1 schkn schkn 0 Nov 9 10:41 file2
ご覧のとおり、ファイルサイズは10 Kbから驚異的な184バイトに劇的に縮小され、gzipはファイルサイズを98%以上縮小しました。
ただし、gzipユーティリティを使用したくない場合は、オプションを指定してtarコマンドを使用してファイルを圧縮することもできます。
圧縮率を向上させることができると思いますか?
tarを使用したLinuxでのファイルの圧縮
最初のセクションで説明したように、tarコマンドを使用して、ファイルを1行でアーカイブおよび圧縮できます。
ファイルを圧縮するために tarを使用して、「-z」を追加するだけです。 現在のオプションセットのオプション。
$ tar -cvzf archive1.tar.gz file1 file2 directory1 directory2
実行した最初のtarコマンドと同様に、新しい圧縮アーカイブファイルが現在の作業ディレクトリに作成されます。
作成されたファイルを検査するには、「ls」コマンドを再度実行するだけです。
$ ls -l
total 28
-rw-rw-r-- 1 schkn schkn 184 Nov 9 10:41 archive.tar.gz
-rw-rw-r-- 1 schkn schkn 172 Nov 9 11:10 archive1.tar.gz
drwxrwxr-x 2 schkn schkn 4096 Nov 9 10:41 directory1
drwxrwxr-x 2 schkn schkn 4096 Nov 9 10:41 directory2
-rw-rw-r-- 1 schkn schkn 0 Nov 9 10:41 file1
-rw-rw-r-- 1 schkn schkn 0 Nov 9 10:41 file2
ご覧のとおり、作成された圧縮アーカイブは、gzipで作成されたアーカイブよりもわずかに軽量です。
bzip2を使用したファイルの圧縮
ほとんどの場合、gzipコマンド ファイルまたはアーカイブを圧縮するために使用されます。
ただし、これは歴史的にソフトウェアエンジニアリングで利用できる唯一の圧縮方法ではありません:bzip2も使用できます。
gzipとbzip2の主な違いは、gzipがLZ77圧縮アルゴリズムを使用するという事実です。 bzip2はBurrows-Wheelerアルゴリズムを使用します 。
Bzip2はgzipアルゴリズムよりもかなり遅いことが知られていますが、bzip2を使用して圧縮する方法を知っていると便利な場合があります。
bzip2を使用してファイルを圧縮するには、圧縮するファイル名で「bzip2」を実行するだけです。
$ bzip2 archive.tar
bzip2を使用して圧縮されたファイルを解凍するには、コマンドに「-d」オプションを追加するだけです。
$ bzip -d archive.tar.bz2
または、tarコマンドを使用し、「-j」オプションを指定してbz2アーカイブを作成することもできます。
$ tar -cjf archive.tar.gz2 file1 file2
tarを使用すると、さまざまな圧縮方法の幅広いパネルを使用して圧縮するオプションがあります:
- -j :bz2圧縮方式を使用してファイルを圧縮します;
- -J :xz圧縮ユーティリティを使用します;
- –lzip :lzip圧縮ユーティリティを使用します;
- –lzma :lzma圧縮ユーティリティを使用します;
- –lzop :lzopを使用してファイルを圧縮します
- -z :gzipまたはgunzipユーティリティと同等です。
結論
このチュートリアルでは、アーカイブの方法を学びました および圧縮 Linuxでtarユーティリティを使用するファイル。
また、利用可能なさまざまな圧縮方法と、ファイルやディレクトリのサイズを縮小するためにそれらを使用する方法についても学びました。
Linuxシステム管理に興味がある場合は、WebサイトにLinuxシステム専用の完全なセクションがありますので、必ずご覧ください。