0
Linuxターミナルでファイルを圧縮する方法

このハウツーでは、ファイルのリストを指定し、データ圧縮のレベルを設定し、圧縮されたアーカイブを作成できる便利なユーティリティであるzipコマンドについて説明します。

これらのコマンドに慣れるまでは、サンプルのテスト ファイルとディレクトリを使用して作業することをお勧めします。また、指示に注意深く従うように細心の注意を払う必要があります。

このハウツーで紹介するコマンドはすべて、ほとんどのLinuxマシンで動作します。Ubuntu LTSインストールを使用していますが、Raspberry Piでも実行できます。ハウツーはすべてターミナル経由で実行します。ほとんどのLinuxマシンでは、Ctrl、Alt、Tキーを押すことでターミナルウィンドウを開くことができます。

LinuxでZipアーカイブを作成する

LinuxのZipファイル

(画像提供:Tom's Hardware)

まず、空のテストファイルをいくつか作成し、アーカイブに追加してみましょう。touch コマンドでファイルを作成し、lsコマンドでファイルが作成されたことを確認し、zipコマンドで基本的なアーカイブを作成します。

1.コマンドを安全にテストできるテストディレクトリを作成します。新しいディレクトリに移動してください。

mkdir test_directory
cd test_directory

2.アーカイブに追加するテストファイルをいくつか作成します。3つの異なるファイルサフィックスに注意してください。

$ touch test1.txt test2.h test3.c

3.ファイルを一覧表示して、正しく作成されていることを確認します。

Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。

ls

4. zipコマンドを使用して、新しく作成したファイルのZIP アーカイブを作成します。ZIP アーカイブを作成するには、コマンドzipに続けてアーカイブ名とアーカイブに含めるファイルのリストを指定します。次のコマンドは、test_archive.zipという ZIP アーカイブを作成し、このアーカイブに 3 つのテストファイルを含めます。zip コマンドを使用する際は、アーカイブ名にアーカイブサフィックス.zipを付ける必要はありません。

zip test_archive test1.txt test2.h test3.c

5. ZIP アーカイブが作成されたことを確認します。

ls

特定のファイルタイプのみを選択してZIPアーカイブを作成する

LinuxのZipファイル

(画像提供:Tom's Hardware)

zipコマンドに引数を与えることで、特定のファイル形式のみをアーカイブに追加することができます。これはコマンドラインで効率的に実行できる強力な機能です。

1.以前のテストアーカイブをすべて削除し元の3つのテストファイルが残っていることを確認します。ZIPアーカイブを作成する場合とは異なり、既存のアーカイブを参照する場合は、.zipファイル拡張子を含める必要があることに注意してください。

rm test_archive.zip
ls

2. .hと.cで終わるテストファイルのみを含む新しい ZIP アーカイブを作成します。アーカイブの作成後、その内容を確認すると、test2.hとtest3.cのみが含まれており、test1.txt は含まれていないことがわかります。

zip test_archive *.h *.c

3. 内容を確認するには、less を使用します。

less test_archive.zip 

LinuxのZipファイル

(画像提供:Tom's Hardware)

ディレクトリを含むZIPアーカイブを作成する

LinuxのZipファイル

(画像提供:Tom's Hardware)

多くの場合、ファイルを含むディレクトリを含む ZIP アーカイブを作成する必要がありますが、これはzipコマンドに再帰引数-rを追加することで実行できます。

1. test_directory 内のアーカイブを削除しますが、他のファイルはそのまま残します。混乱を避けるため、アーカイブを削除し、作成した元のファイルのみを残すことをお勧めします。

rm test_archive.zip 

2. 1つ上のディレクトリに移動し、アーカイブするディレクトリ内にいないことを確認してください。アーカイブに追加したいディレクトリ内にいることはできません。

cd
pwd 

3. test_directoryディレクトリとその内容を含む ZIP アーカイブを作成します。-r引数を使用してアーカイブを作成すると、コマンドがディレクトリ内を移動してファイルとフォルダをアーカイブする各段階の詳細を示す詳細な出力が表示されます。

zip -r new_archive test_directory 

4. -q (quiet) 引数を使用して詳細出力を無効にし、同様の ZIP アーカイブをもう一つ作成します。今回は、このアーカイブの作成中にターミナルに何もステップが表示されないことを確認できます。次に、ls コマンドを使用して、新しいアーカイブが作成されたことを確認します。

zip -r -q new_archive2 test_directory
ls 

ZIPアーカイブのデータ圧縮レベルを変更する

LinuxのZipファイル

(画像提供:Tom's Hardware)

デフォルトでは、zipコマンドは0~9の範囲で圧縮率6を使用します。0は圧縮なし、9は最大圧縮レベルです。数値引数を追加するだけで圧縮レベルを変更できます。

1.テストファイルにランダムデータを追加します。現在、テストファイル test1.txt、test2.h、test3.c は空です。これらのファイルには0バイトのデータが含まれていますが、ターミナルコマンドを使って各ファイルに64MBのランダムな「ゴミデータ」を追加できます。

cd test_directory
head -c 64M </dev/urandom > test1.txt
head -c 64M </dev/urandom > test2.h
head -c 64M </dev/urandom > test3.c 

2.親ディレクトリに戻り、デフォルトの圧縮レベル 6 で新しい ZIP アーカイブを作成します。

cd
zip -r -q archive_default_compression test_directory

3.同じ内容の別のアーカイブを作成しますが、圧縮レベルを 9 に上げます。ls -lを使用して新しいアーカイブと以前のアーカイブの詳細を確認すると、データ圧縮が強化されたため、新しいアーカイブのサイズが以前のアーカイブよりも小さくなっていることがわかります。

$ zip -r -q -9 archive_compressed test_directory
$ ls -l

Linuxでファイルを圧縮する方法

(画像提供:Tom's Hardware)

test_archive.zipという ZIP アーカイブを作成します。このアーカイブにはtest_directoryディレクトリがあり、その中には 3 つの空のテストファイル(test1.txt、test2.h、test3.c)が含まれています。このアーカイブを解凍するには、 unzipコマンドを使用します。

1.テストファイルを含むテストフォルダを作成します。テストディレクトリとファイルを作成したら、親ディレクトリに戻る前にlsコマンドを使用してファイルが作成されていることを確認します。

mkdir test_directory
cd test_directory
touch test1.txt test2.h test3.c
ls
cd

2. test_directoryを含むtest_archive.zipという ZIP アーカイブを作成します。lsコマンドを使用して、アーカイブが正常に作成されたことを確認します。zipコマンドには、作成するアーカイブの名前と、アーカイブに格納するファイルのソースという 2 つの引数があります。

zip -r test_archive test_directory
ls 

3.アーカイブされていないディレクトリを削除します。test_directoryを含む親ディレクトリにtest_archive.zipを解凍すると、アーカイブを置き換えるか名前を変更するか尋ねられます。

rm -r test_directory

4. test_archive.zipファイルを解凍します。追加の引数なしでunzip を実行すると、アーカイブの解凍の各ステップの詳細な出力レポートが表示されます。

unzip test_archive.zip

Linuxでファイルを圧縮する方法

(画像提供:Tom's Hardware)

アーカイブを別の場所に解凍したい場合がよくあります。unzipコマンドに-d引数を追加することでこれを実現できます。

1. test_archive.zipを指定のディレクトリに解凍します。相対パスまたは絶対パスで指定できます。この例では、相対パスを使用して Music ディレクトリにコンテンツを解凍しています。また、絶対パスを指定して、ターゲットディレクトリへのフルパスを指定することもできます。アーカイブを解凍したら、指定のディレクトリに移動し、lsコマンドを使用してアーカイブが解凍されたことを確認します。

unzip test_archive.zip -d ./Music

2.ディレクトリを変更し、内容を一覧表示して、ファイルが正しく抽出されたことを確認します。

cd Music
ls

zipコマンドの基本的な使い方をいくつか紹介したので、LinuxターミナルでZIPアーカイブを作成する際に、多くのオプションを利用できるようになりました。ターミナルエミュレータで特定のファイルタイプを選択したり、圧縮レベルを設定したりできるため、GUIアプリケーションでは見つけにくい強力なツールにすぐにアクセスできます。