はじめに
この実験では、tar
、gzip
、zip
などの一般的なLinuxコマンドを使ってファイルとディレクトリをパッケージ化して圧縮する方法を学びます。これらのツールは、Linuxシステム上のファイルとディレクトリを管理するために欠かせないもので、効率的にデータを保存して転送することができます。基本操作から始めて、徐々により複雑なタスクに進み、各ステップを詳細に説明します。
この実験では、tar
、gzip
、zip
などの一般的なLinuxコマンドを使ってファイルとディレクトリをパッケージ化して圧縮する方法を学びます。これらのツールは、Linuxシステム上のファイルとディレクトリを管理するために欠かせないもので、効率的にデータを保存して転送することができます。基本操作から始めて、徐々により複雑なタスクに進み、各ステップを詳細に説明します。
作業用のサンプル ディレクトリ構造を作成して始めましょう。これにより、異なる種類のファイルやディレクトリでのファイルのパッケージ化と圧縮の仕組みを理解するのに役立ちます。
ターミナルを開き、次のコマンドを入力します。
cd ~/project
mkdir -p test_dir/{subdir1,subdir2}
echo "This is file 1" > test_dir/file1.txt
echo "This is file 2" > test_dir/file2.txt
echo "This is in subdir1" > test_dir/subdir1/subfile1.txt
echo "This is in subdir2" > test_dir/subdir2/subfile2.txt
これらのコマンドが何をするか解説しましょう。
cd ~/project
: これにより、現在のディレクトリをホーム ディレクトリ内の project
フォルダに変更します。mkdir -p test_dir/{subdir1,subdir2}
: これにより、新しいディレクトリ test_dir
とその中に 2 つのサブディレクトリ subdir1
と subdir2
が作成されます。-p
オプションにより、mkdir は必要に応じて親ディレクトリを作成します。echo
コマンドは、新しいディレクトリ構造内の異なる場所にサンプル コンテンツを含むテキスト ファイルを作成します。では、作成した構造を確認しましょう。
tree test_dir
この出力が表示されない場合や、「コマンドが見つかりません」というエラーが表示された場合は、心配しないでください。tree
コマンドがシステムにインストールされていない場合があります。代わりに ls -R test_dir
を使用することができ、同様の出力(ただしグラフィカルなものは少ない)が表示されます。
サンプル ディレクトリ構造ができたので、tar
コマンドを使ってファイルをパッケージ化する方法を学びましょう。tar
は "tape archive" の略で、元々はテープ ドライブにアーカイブを作成するために使用されていました。今日では、複数のファイルやディレクトリを 1 つのファイルにまとめるために一般的に使用されています。
test_dir
をパッケージ化しましょう。
cd ~/project
tar -cvf test_archive.tar test_dir
このコマンドを解説しましょう。
tar
: アーカイブを作成するために使用するコマンド。-c
: このオプションは tar に新しいアーカイブを作成するように指示します。-v
: これは "verbose" の略です。tar にアーカイブに追加するファイルの名前を表示させます。これはオプションですが、何が起こっているかを確認するのに役立ちます。-f
: このオプションの後に作成したいアーカイブ ファイルの名前を指定します。test_archive.tar
: 新しいアーカイブ ファイルに付ける名前です。.tar
拡張子は tar アーカイブの慣例です。test_dir
: アーカイブにパッケージ化するディレクトリです。このコマンドを実行すると、アーカイブに追加されるファイルの一覧が表示されます。
アーカイブを展開せずにその内容を表示するには、次のコマンドを使用できます。
tar -tvf test_archive.tar
このコマンドは、指定された (-f) test_archive.tar
ファイルの内容を詳細に (-v) 一覧表示 (-t) します。
tar アーカイブを圧縮する前に、そこからファイルを抽出する方法を学びましょう。tar アーカイブを扱う際には重要なスキルです。
test_archive.tar
ファイルの内容を抽出するには:
mkdir extracted_tar
tar -xvf test_archive.tar -C extracted_tar
このコマンドを解説しましょう。
mkdir extracted_tar
:これは、アーカイブの内容を置くための新しいディレクトリ extracted_tar
を作成します。tar
:アーカイブを抽出するために使用するコマンド。-x
:このオプションは tar にアーカイブからファイルを抽出するように指示します。-v
:これにより操作が詳細に表示され、抽出される各ファイルが表示されます。-f
:このオプションは操作対象のアーカイブ ファイルの名前を指定します。ファイルを抽出する際には、抽出する tar ファイルのパスまたは名前が続きます。-C extracted_tar
:このオプションは tar にファイルを抽出する前に extracted_tar
ディレクトリに移動するように指示します。このコマンドを実行すると、抽出されるファイルの一覧が表示されます。
抽出を確認するには、次のコマンドを使用できます。
tree extracted_tar
または tree
が利用できない場合:
ls -R extracted_tar
これにより、アーカイブ内にあったディレクトリ構造とファイルが表示されます。
tar アーカイブを作成したので、gzip
を使ってそれを圧縮しましょう。
gzip test_archive.tar
このコマンドは、test_archive.tar
を圧縮して test_archive.tar.gz
にリネームします。元の test_archive.tar
ファイルは圧縮版に置き換えられます。
圧縮されたファイルのサイズを確認するには、次のコマンドを使用できます。
ls -lh test_archive.tar.gz
-lh
オプションは、ファイルサイズを人が読みやすい形式(KB、MB など)で表示します。
.tar.gz
拡張子が一般的ですが、同じものとして .tgz
も見られることに注意してください。
パッケージ化と圧縮の両方を行ったので、これらの操作の違いを理解し、ファイルサイズを比較しましょう。
パッケージ化(アーカイブ化):
tar
(テープ アーカイブ)圧縮:
gzip
、bzip2
、xz
元のディレクトリ、tar アーカイブ、および圧縮された tar.gz ファイルのサイズを比較しましょう。
## 元のディレクトリのサイズ
echo "元のディレクトリのサイズ:"
du -sh test_dir
## tar アーカイブのサイズ(この比較のために再作成します)
tar -cvf test_archive_compare.tar test_dir
echo "tar アーカイブのサイズ:"
ls -lh test_archive_compare.tar
## 圧縮された tar.gz ファイルのサイズ
echo "圧縮された tar.gz ファイルのサイズ:"
ls -lh test_archive.tar.gz
次のことに気付くでしょう。
パッケージ化後のサイズの増加は正常で予想される。tar 形式は、解凍時にディレクトリ構造を正しく再構築するために必要なファイル メタデータを格納するための少量のオーバーヘッドを追加します。このオーバーヘッドは、大きなディレクトリでは通常無視できますが、非常に小さなファイルやディレクトリでは目立つ場合があります。
一方、圧縮は、データ内の冗長性を特定して削除することにより、ファイルサイズを大幅に削減します。これは、テキスト ファイルや繰り返し内容のあるファイルに対して特に効果的です。
tar アーカイブを作成してから圧縮するという個別の手順を理解するのは役に立ちますが、実際にはこれらの手順はしばしば組み合わされます。tar
コマンドには、作成中に gzip を使ってアーカイブを圧縮するための組み込みオプションがあります。
1 ステップで test_dir
の圧縮された tar アーカイブを作成しましょう。
cd ~/project
tar -czvf test_combined.tar.gz test_dir
このコマンドは以前使ったものに似ていますが、重要な追加が 1 つあります。
-z
:このオプションは tar に gzip を使ってアーカイブを圧縮するように指示します。結果として得られる test_combined.tar.gz
ファイルは、前の 2 つの手順で作成したものと同等ですが、1 回ですべて行っています。
この圧縮されたアーカイブを展開せずにその内容を表示するには:
tar -tzvf test_combined.tar.gz
ここでの -z
オプションは、tar に対して gzip で圧縮されたファイルを扱っていることを伝えます。
圧縮されたアーカイブを作成したので、そこからファイルを抽出する方法を知ることが重要です。test_combined.tar.gz
ファイルの内容を抽出しましょう。
mkdir extracted
tar -xzvf test_combined.tar.gz -C extracted
このコマンドを解説しましょう。
mkdir extracted
:これは、アーカイブの内容を置くための新しいディレクトリ extracted
を作成します。tar
:アーカイブを抽出するために使用するコマンド。-x
:このオプションは tar にアーカイブからファイルを抽出するように指示します。-z
:gzip で圧縮されたファイルを扱っているために必要なオプションです。-v
:これにより操作が詳細に表示され、抽出される各ファイルが表示されます。-f
:この後に抽出したいアーカイブ ファイルの名前が続きます。-C extracted
:このオプションは tar にファイルを抽出する前に extracted
ディレクトリに移動するように指示します。このコマンドを実行すると、抽出されるファイルの一覧が表示されます。
抽出を確認するには、次のコマンドを使用できます。
tree extracted
または tree
が利用できない場合:
ls -R extracted
これにより、アーカイブ内にあったディレクトリ構造とファイルが表示されます。
tar
と gzip
は Linux や Unix 互換システムで一般的ですが、zip
形式は Windows システムとの互換性を向上させるためによく使用されます。test_dir
の zip アーカイブを作成しましょう。
cd ~/project
zip -r test_archive.zip test_dir
このコマンドの機能は以下の通りです。
zip
:zip アーカイブを作成するコマンド。-r
:このオプションは zip に再帰的に動作させるように指示し、すべてのファイルとサブディレクトリを含めます。test_archive.zip
:zip ファイルに与える名前です。test_dir
:zip アーカイブに追加するディレクトリです。このアーカイブを解凍するには、次のコマンドを使用できます。
unzip -d unzipped_files test_archive.zip
-d
オプションは解凍先のディレクトリを指定します。unzipped_files
が存在しない場合、unzip
はそれを作成します。
Zip ファイルは、ほぼすべてのオペレーティング システムで簡単に認識でき、利用できるという利点があり、異なるプラットフォームのユーザーとのファイル共有において良い選択肢になっています。
この実験では、Linux で一般的に使用されるいくつかの重要なファイルのパッケージ化と圧縮技術を学びました。
tar
を使用しました。gzip
を使用してファイルを圧縮しました。tar
と gzip
を組み合わせて 1 ステップで圧縮されたアーカイブを作成する方法を学びました。zip
を使用しました。これらのスキルは、Linux での効率的なファイル管理にとって不可欠です。特に大量のデータを扱う場合や、システム間でファイルを転送する場合に役立ちます。圧縮によりファイルサイズを大幅に削減できることを忘れないでください。これにより、保存と転送がはるかに効率的になります。
Linux を使い続けるうちに、これらのコマンドがファイルとディレクトリの管理にとって非常に役立つことに気付くでしょう。これらの操作を練習して、ファイルのパッケージ化と圧縮技術に精通しましょう。