Linuxでファイルとフォルダを圧縮するためのZipコマンドの使い方

Linuxのzipコマンドは、コマンドラインでZIPファイルを扱う最もシンプルで直感的な方法の一つです。それだけでなく、ZIPファイル形式は普遍的で、ほぼすべてのOSにはそれを扱うためのネイティブプログラムがあります。このコマンドをLinuxのコマンドラインで使用する方法をすべて紹介します。
目次
- LinuxにZipをインストールする方法
- LinuxのZipコマンド:構文とオプション
- Zipコマンドを使用してLinuxでファイルを圧縮する方法
- Zipコマンドを使用してLinuxでフォルダを圧縮する方法
- Linux Zipコマンドを使用してファイルを解凍する方法
- Zipを使用してLinuxフォルダを解凍する方法
- よくある質問
LinuxにZipをインストールする方法
最新のLinux zipコマンドは、すべての主要なパッケージマネージャで利用可能であるべきです。
Debian/Ubuntuの場合:
sudo apt install zipArch Linuxの場合:
sudo pacman -S zipFedoraの場合:
sudo dnf install zipGentooの場合
sudo emerge --ask zip注意: 何かをインストールする前に、まずパッケージマネージャを更新してzipコマンドの最新バージョンを取得してください。これを行う方法やその他の情報は、私たちのLinuxパッケージマネージャチートシートで学ぶことができます。
注意:zipがインストールされると、unzipコマンドも使用可能になります。
LinuxのZipコマンド:構文とオプション
zipコマンドには基本的な構文があり、出力ZIPファイルのファイル名と入力ファイルのファイル名の2つのパラメータを取ります。
zip [options] 
ここでの位置は重要です。逆にすると、コンピュータは「存在しないzip-file.zipからfile-to-archive.jpgを作ろうとしているのはなぜか」と疑問に思い、エラーを返します。
オプションを設定するには、フラグを使用する必要があります。通常の使用に必要なフラグは8つあります:
-dZIPファイル内の選択されたアーカイブエントリを削除します。-qターミナルに何も印刷せずに静かにタスクを実行します。-TZIPファイルの整合性をテストします。-eファイルを暗号化します。-u新しいファイルをアーカイブに追加することでZIPファイルを更新します。-mファイルをアーカイブに移動します。-rフォルダ内のファイルを再帰的にZIPファイルに追加します。-x選択したファイル名のファイルを除外します。-i選択した名前のファイルのみを含めます。
フラグは、出力の前、入力の後、2つの間など、好きな場所に配置できます。複数のフラグを行のどこにでも散らばせて使用することもできます。ただし、zipを入力した後にフラグを入力することを確認してください。
例外は-xと-iで、これらを使用した後には新しい入力が必要です。
Zipコマンドを使用してLinuxでファイルを圧縮する方法
zipコマンドを使用してファイルをアーカイブする最も簡単な方法は、zipの後にZIPファイルのファイル名と、アーカイブまたは圧縮しようとしているファイルを入力することです。フラグはオプションなので、Linuxで任意のファイルを迅速に圧縮するためにこのように行うことができます。
zip archive.zip text_file.txt
最初のファイルの後に他のファイルを追加することで、さらに多くのファイルを追加することもできます。これらのファイルのいずれかにスペースが含まれている場合は、引用符で囲むことができます。
zip archive.zip "file 1.txt" "file 2.txt" "file 3.txt" "file 4.txt"
-dフラグの使用
-dフラグを使用すると、ZIPファイル内にアーカイブされたファイルを削除できます。これは、追加したのと同じ方法で行います。
zip -d archive.zip remove_me.jpg
アーカイブ内のフォルダ全体を削除するためにも使用できます。ただし、これはZIPファイルの外にあるファイルには機能しないため、アーカイブ後にファイルを削除するためには使用できません。
-qフラグの使用
-qフラグは、zipが作業を行う際にメッセージを返さないようにするためのものです。
zip -q archive.zip text_file.txt
これは、スクリプトでzipコマンドを使用しているときに便利です。しかし、自分でこれを使用している場合は、dirまたはlsコマンドで確認しない限り、アーカイブプロセスが成功したかどうかを知ることができないため、-qフラグの使用は避けた方が良いかもしれません。
-Tフラグの使用
一部のZIPファイルは、ダウンロード中に破損することがあります。これが発生します。-Tフラグを使用して整合性をチェックすることで、本当に壊れたファイルなのか、単に間違ったパスワードを入力しているのかを知ることができます。
zip -T archive.zip
これは、OSイメージのような大きなファイルをダウンロードする際に非常に重要です。このようなファイルは、ライブUSBに正常に書き込むことができ、マシンでイメージファイルを実行するとエラーが発生することがあります。動画や音楽も、ランダムな場所で切り取られた部分がある場合があります。
-uフラグの使用
既存のZIPファイルに新しいファイルを追加したい場合は、-uフラグを使用できます。
zip -u archive.zip new_file.txt
通常のzipコマンドを使用して新しいZIPアーカイブを作成するかのように、最初のファイルの後にさらにファイルを追加することもできます。
-eフラグの使用
パスワードを追加したい場合は、-eフラグを使用する必要があります。このオプションは、ZIPファイル内のコマンドで追加するファイルにのみパスワードと暗号化を適用するため、以前のファイルは暗号化されずに残ります。
zip -e archive.zip text_file.txt
ZIPファイルの素晴らしい点は、パスワード作成プロセスがアクセスを提供するだけでなく、追加の保護層を追加することです。あなたのパスワードは、ZIPファイルに追加された追加の暗号化層を復号化するために使用されるデジタル署名のように機能します。
-mフラグの使用
最後に、-mフラグは、ZIPファイルにアーカイブされた後に元のファイルを削除します。これを自動化する追加のステップとして考えて、手動で削除する必要がなくなります。
zip -m archive.zip text_file.txt
ただし、重要な点は、-mフラグはファイルを削除する方法が、ファイル復元ツールを使用しない限り復元不可能にすることです。したがって、バックアップを保持するか、代わりにrmコマンドを使用して手動で削除してください。
Zipコマンドを使用してLinuxでフォルダを圧縮する方法
生のフォルダにzipコマンドを使用すると、ファイルがまったく含まれていないフォルダが残ります。フォルダを圧縮しようとする場合は、-rフラグを使用する必要があります。
-rフラグの使用
-rフラグ、別名再帰的は、フォルダとそのサブフォルダの各コンテンツを通過し、すべてをZIPファイルにアーカイブします。また、各サブフォルダの現在の構造を保持します。
zip -r archive.zip my_folder
これにより、現在のフォルダ内のすべてをアーカイブすることもできます。my_folderを./に置き換えると、ターゲットが現在のフォルダ内のすべてに変更されます。
zip -r archive.zip ./
さらに、これを-uフラグと組み合わせて、フォルダとその内容を既存のZIPファイルに含めることができます。
zip -r -u archive.zip another_folder
-iフラグの使用
-iフラグを使用すると、特定のファイルを選択して含め、フォルダ内の他のすべてを除外できます。
zip -r archive.zip my_folder -i my_folder/a_subfolder/file1.txt
-iフラグと一緒に*アスタリスクを使用することで、似た名前のファイルを選択できますが、数字のようなもので終わることがあります。たとえば、*.txtと入力すると、zipコマンドはフォルダ内のすべてのTXTファイルを含めます。
zip -r archive.zip my_folder -i "*.txt"
-xフラグの使用
-xフラグを使用すると、フォルダ全体を圧縮する際に特定のファイルのみを除外できます。
zip -r archive.zip my_folder -x my_folder/dont_zip.jpg
また、-xフラグは、使用時に-iフラグを上書きします。このようにして、たとえば、zipに同じタイプの他のすべてのファイルを含めるように指示し、圧縮したくないファイルを除外できます。
zip -r archive.zip my_folder -i "*.txt" -x my_folder/dont_zip.txt
Linux Zipコマンドを使用してファイルを解凍する方法
unzipプログラムは、デフォルトのzipプログラムのパートナープログラムです。ZIPアーカイブからファイルを抽出します。
このプログラムを使用するには、unzipとZIPアーカイブのファイル名を入力するだけです。
unzip archive.zip
unzipコマンドを使用すると、ZIPファイルがどこから来たかに関係なく、現在の作業ディレクトリ内でZIPファイルを解凍します。
ZIPファイル内のLinuxファイルを抽出または解凍して、他のファイルが未解凍のままにするには、アーカイブを入力する部分の後にそのファイル名を追加できます。
unzip archive.zip file.txt
Zipを使用してLinuxフォルダを解凍する方法
unzipは通常、ZIPアーカイブ内にあるフォルダを抽出しますが、特定のフォルダのみを抽出するのはかなり難しい場合があります。しかし、それは不可能ではありません。
unzip archive.zip my_folder/a_subfolder/*
このコードは、a_subfolder内のすべてを抽出します。
また、フォルダを解凍すると、unzipプログラムは現在の作業ディレクトリ内に新しいフォルダを作成し、そのフォルダ内にフォルダを展開します。同じ名前のフォルダが存在する場合(またはフォルダの以前のバージョンが存在する場合)、現在フォルダ内にあるファイルを置き換えてもよいかどうかを尋ねます。
よくある質問
Linuxのgzipコマンドは何をしますか?
Linuxのgzipコマンドは、ファイルをGZファイルに保存および圧縮するために使用できるツールです。
ZIPはTARより優れていますか?
ある意味で、ZIPはTARより優れています。なぜなら、ZIPファイルはその内容を圧縮、暗号化、保護できるからです。しかし、TARファイルは、ファイルを1つのファイルにまとめて、より迅速なファイル転送を目的としていますが、ZIPファイルは(同じ目的で使用されるにもかかわらず)これらの追加機能を考慮しています。
TARはZIPより速いですか?
TARファイルは、その内容を圧縮したり暗号化したりしません。したがって、大量のファイルを1つの簡単に転送できるアーカイブにまとめるためのより迅速な方法を探している場合、ZIPと比較してTARでいくつかの利点が見られます。ただし、ZIPファイルはTARファイルよりもはるかに小さい傾向があるため、ZIPファイルを転送する方が簡単だと感じるかもしれません。
画像クレジット:Unsplash、Terenz Jomar Dela Cruzによるスクリーンショット