はじめに
Linux の tar コマンドは、ファイルやディレクトリをアーカイブするために使用される強力なユーティリティです。このツールを使用すると、ユーザーは複数のファイルやディレクトリを単一のアーカイブファイルにまとめることができ、データの保存、転送、バックアップをより効率的に行うことができます。この実験では、tar コマンドを使用してアーカイブを作成し、その内容を表示し、ファイルを抽出する方法を学びます。これらのスキルは、システム管理者、開発者、および効率的にデータを管理する必要のあるすべての Linux ユーザーにとって不可欠です。
アーカイブ用のディレクトリ構造を作成する
アーカイブを作成する前に、操作対象となるいくつかのファイルとディレクトリが必要です。このステップでは、後でアーカイブ化する様々なファイルを含むディレクトリ構造を作成します。
まず、デフォルトの作業ディレクトリに移動しましょう。
cd ~/project
次に、reports、specifications、references という 3 つのサブディレクトリを持つ document_library というディレクトリを作成しましょう。
mkdir -p ~/project/document_library/{reports,specifications,references}
mkdir コマンドはディレクトリを作成し、-p オプションを使用すると、親ディレクトリが存在しない場合にも作成できます。中括弧 {} は、複数のサブディレクトリを一度に作成するために使用されます。
次に、これらの各ディレクトリにいくつかのサンプルファイルを作成しましょう。
touch ~/project/document_library/reports/{quarterly,annual,monthly}.txt
touch ~/project/document_library/specifications/{product,service,system}.txt
touch ~/project/document_library/references/{guide,manual,handbook}.txt
touch コマンドは空のファイルを作成します。この場合、各サブディレクトリに 3 つのテキストファイルを作成しています。
ls コマンドに -R オプションを指定してディレクトリの内容を再帰的に表示することで、ディレクトリ構造が正しく作成されたことを確認しましょう。
ls -R ~/project/document_library
以下のような出力が表示されるはずです。
/home/labex/project/document_library:
references reports specifications
/home/labex/project/document_library/references:
guide.txt handbook.txt manual.txt
/home/labex/project/document_library/reports:
annual.txt monthly.txt quarterly.txt
/home/labex/project/document_library/specifications:
product.txt service.txt system.txt
これは、サンプルファイルを含むディレクトリ構造が正常に作成されたことを示しています。次のステップでは、tar コマンドを使用してこれらのファイルのアーカイブを作成する方法を学びます。
tar でアーカイブを作成する
ディレクトリ構造が設定されたので、tar コマンドを使用して document_library ディレクトリ全体のアーカイブを作成しましょう。tar コマンドは非常に汎用性が高く、多くのオプションがありますが、ここでは最も一般的なオプションに焦点を当てます。
tar でアーカイブを作成する基本的な構文は次の通りです。
tar [options] [archive-name] [files or directories to archive]
一般的なオプションは以下の通りです。
-c: 新しいアーカイブを作成する-z: gzip を使用してアーカイブを圧縮する-v: 詳細モード(進行状況を表示する)-f: アーカイブのファイル名を指定する-C: 操作を実行する前に指定されたディレクトリに移動する
document_library ディレクトリの圧縮アーカイブを作成しましょう。
tar -czvf ~/project/documents_archive.tar.gz -C ~/project document_library
このコマンドでは、
-cはtarに新しいアーカイブを作成するよう指示します。-zはtarに gzip を使用してアーカイブを圧縮するよう指示します。-vは詳細モードを有効にし、処理されているファイルを表示します。-f ~/project/documents_archive.tar.gzはアーカイブファイルの名前を指定します。-C ~/projectはtarにアーカイブを作成する前に~/projectディレクトリに移動するよう指示します。document_libraryはアーカイブしたいディレクトリです。
アーカイブに追加されるすべてのファイルが一覧表示される出力が表示されるはずです。これはアーカイブが正常に作成されていることを示しています。
アーカイブが作成されたことを確認するために、その存在とサイズを確認しましょう。
ls -lh ~/project/documents_archive.tar.gz
出力は次のように表示されるはずです。
-rw-r--r-- 1 labex labex 237 Sep 22 10:00 /home/labex/project/documents_archive.tar.gz
ls の -lh オプションは、人間が読みやすいファイルサイズを含む詳細情報を表示します。実際のファイルサイズは異なる場合がありますが、サンプルファイルが空であるため、比較的小さくなるはずです。
おめでとうございます!ディレクトリ構造の圧縮アーカイブを正常に作成しました。次のステップでは、このアーカイブを展開せずに内容を表示する方法を探ります。
アーカイブの内容を表示する
アーカイブを展開する前に、その内容を表示して、期待するファイルが含まれていることを確認したり、特定のファイルを探したりすることは、しばしば役立ちます。tar コマンドには、アーカイブを展開せずにその内容を一覧表示するオプションがあります。
作成したアーカイブの内容を一覧表示するには、次のコマンドを使用します。
tar -tvf ~/project/documents_archive.tar.gz
このコマンドでは、
-tはtarにアーカイブの内容を一覧表示するよう指示します。-vは詳細モードを有効にし、詳細情報を表示します。-f ~/project/documents_archive.tar.gzは調べるアーカイブファイルを指定します。
次のような出力が表示されるはずです。
drwxr-xr-x labex/labex 0 2023-09-22 10:00 document_library/
drwxr-xr-x labex/labex 0 2023-09-22 10:00 document_library/references/
-rw-r--r-- labex/labex 0 2023-09-22 10:00 document_library/references/guide.txt
-rw-r--r-- labex/labex 0 2023-09-22 10:00 document_library/references/handbook.txt
-rw-r--r-- labex/labex 0 2023-09-22 10:00 document_library/references/manual.txt
drwxr-xr-x labex/labex 0 2023-09-22 10:00 document_library/reports/
-rw-r--r-- labex/labex 0 2023-09-22 10:00 document_library/reports/annual.txt
-rw-r--r-- labex/labex 0 2023-09-22 10:00 document_library/reports/monthly.txt
-rw-r--r-- labex/labex 0 2023-09-22 10:00 document_library/reports/quarterly.txt
drwxr-xr-x labex/labex 0 2023-09-22 10:00 document_library/specifications/
-rw-r--r-- labex/labex 0 2023-09-22 10:00 document_library/specifications/product.txt
-rw-r--r-- labex/labex 0 2023-09-22 10:00 document_library/specifications/service.txt
-rw-r--r-- labex/labex 0 2023-09-22 10:00 document_library/specifications/system.txt
この出力には、アーカイブ内の各ファイルとディレクトリのパーミッション、所有者、サイズ、変更日付、およびパスが表示されます。
アーカイブ内の特定のファイルを検索したい場合は、出力を grep にパイプで渡すことができます。たとえば、名前に "annual" が含まれるすべてのファイルを検索するには、次のようにします。
tar -tvf ~/project/documents_archive.tar.gz | grep annual
これにより、次のように表示されます。
-rw-r--r-- labex/labex 0 2023-09-22 10:00 document_library/reports/annual.txt
アーカイブの内容を表示することは、展開する前に中身を確認する必要がある場合、特に大きなアーカイブを扱う場合や特定のファイルのみに関心がある場合に便利です。次のステップでは、アーカイブからファイルを展開する方法を学びます。
アーカイブからファイルを抽出する
アーカイブの作成方法と内容の表示方法がわかったので、次はアーカイブからファイルを展開する方法を学びましょう。これは、バックアップからファイルを復元する必要がある場合や、他の人からアーカイブを受け取った場合に便利です。
これを実証するために、まず元のディレクトリ構造が失われたシナリオをシミュレートしましょう。document_library ディレクトリを削除します。
rm -rf ~/project/document_library
rm コマンドはファイルやディレクトリを削除します。-rf オプションは、再帰的に操作し、確認を求めずに強制的に削除するよう指示します。実際のシナリオでこのコマンドを使用する場合は注意してください。このコマンドはファイルを永久に削除します。
ディレクトリが削除されたことを確認しましょう。
ls -la ~/project
一覧に document_library が表示されないはずですが、documents_archive.tar.gz ファイルはまだ表示されるはずです。
では、アーカイブを展開してファイルを復元しましょう。tar で展開する基本的な構文は次の通りです。
tar [options] [archive-name]
一般的な展開オプションは以下の通りです。
-x: アーカイブからファイルを展開する-z: gzip を使用して解凍する-v: 詳細モード(進行状況を表示する)-f: アーカイブのファイル名を指定する-C: 展開する前に指定されたディレクトリに移動する
アーカイブを展開しましょう。
tar -xzvf ~/project/documents_archive.tar.gz -C ~/project
このコマンドでは、
-xはtarにファイルを展開するよう指示します。-zはtarに gzip で圧縮されたアーカイブを解凍するよう指示します。-vは詳細モードを有効にし、展開されるファイルを表示します。-f ~/project/documents_archive.tar.gzはアーカイブファイルを指定します。-C ~/projectはtarにファイルを~/projectディレクトリに展開するよう指示します。
アーカイブを作成したときと同様に、展開されるすべてのファイルが一覧表示される出力が表示されるはずです。
ディレクトリ構造が復元されたことを確認しましょう。
ls -R ~/project/document_library
最初に作成したのと同じディレクトリ構造とファイルが表示されるはずです。
/home/labex/project/document_library:
references reports specifications
/home/labex/project/document_library/references:
guide.txt handbook.txt manual.txt
/home/labex/project/document_library/reports:
annual.txt monthly.txt quarterly.txt
/home/labex/project/document_library/specifications:
product.txt service.txt system.txt
アーカイブから特定のファイルのみを展開したい場合は、アーカイブ名の後にそれらのパスを指定することができます。たとえば、reports ディレクトリのみを展開するには、次のようにします。
mkdir -p ~/project/extracted_reports
tar -xzvf ~/project/documents_archive.tar.gz -C ~/project/extracted_reports document_library/reports
これにより、reports ディレクトリとその内容のみが extracted_reports ディレクトリに展開されます。
おめでとうございます!tar コマンドを使用してアーカイブからファイルを展開する方法を成功裏に学びました。このスキルは、バックアップの復元、ソースからのソフトウェアのインストール、およびその他多くの Linux 操作に不可欠です。
まとめ
この実験では、Linux で tar コマンドを使用してファイルアーカイブを管理する方法を学びました。いくつかの重要なスキルを練習しました。
- アーカイブの準備として、ファイルを含むディレクトリ構造を作成する
-czvfオプションを使用してtarコマンドで圧縮アーカイブを作成する-tvfオプションを使用してアーカイブを展開せずにその内容を表示する-xzvfオプションを使用してアーカイブからファイルを展開してデータを復元する
これらのスキルは、バックアップと復元手順、ソフトウェアのインストール、ファイル管理など、多くの Linux 操作において基本的です。tar コマンドは Linux 環境における強力なツールであり、その効果的な使い方を理解することで、データを効率的に管理することができます。
tar コマンドの重要なオプションを覚えておきましょう。
-c: 新しいアーカイブを作成する-x: アーカイブからファイルを展開する-t: アーカイブの内容を一覧表示する-z: gzip 圧縮を使用する-v: 詳細モード(進行状況を表示する)-f: アーカイブのファイル名を指定する-C: 操作を実行する前に指定されたディレクトリに移動する
これで、Linux 環境で tar コマンドを自信を持って使用して、バックアップの作成、ファイルの共有、データの復元を行うことができます。



