重要なポイント
- ZIP ファイルは Windows、macOS、Linux システムで広く使用されており、圧縮アーカイブの最も一般的な形式です。
- Linux でファイル (またはフォルダー) を圧縮するには、次のコマンドを実行します。 zip zipname files_to_be_zipped
- ZIP からファイルを抽出するには、 unzip zipname を 実行します。
ZIP ファイルは、Windows、macOS、さらには Linux システムでも一般的に使用されるユニバーサル アーカイブです。一般的な Linux ターミナル コマンドを使用して、zip アーカイブを作成したり、アーカイブからファイルを解凍したりできます。
ZIP 圧縮アーカイブ ファイル形式
Windows 領域では ZIP 形式が優勢であるため、ZIP ファイルはおそらく世界で最も一般的な圧縮アーカイブの形式です。
Linux では ファイルが一般的ですが、Windows ユーザーはおそらく ZIP 形式でアーカイブを送信するでしょう。また、いくつかのファイルをアーカイブして Windows ユーザーに送信したい場合は、誰にとっても ZIP 形式が最も簡単で互換性のあるソリューションになります。
zip、unzip、およびその他のユーティリティ
Linux や macOS などの
Unix 系
オペレーティング システムには、ZIP ファイルの作成とそこからのファイルの抽出を可能にする
zip
および
unzip
と呼ばれるツールがあることはすでにご存知かもしれません。ただし、
zipcloak
、
zipdetails
、
zipsplit
、
zipinfo
などの関連ユーティリティのファミリー全体が存在します。
いくつかの Linux ディストリビューションをチェックして、これらのユーティリティが標準インストールに含まれているかどうかを確認しました。すべてのユーティリティは、Ubuntu 23.04、19.04、18.10、および 18.04 に存在していました。彼らはマンジャロ 18.04 にも存在していました。 Fedora 29 には
zip
と
unzip
含まれていましたが、他のユーティリティは含まれておらず、CentOS にも同様でした。
不足している要素を Fedora 29 にインストールするには、次のコマンドを使用します。
sudo dnf インストール perl-IO-Compress
不足している要素を CentOS 7 にインストールするには、次のコマンドを使用します。
sudo yum install perl-IO-Compress
上記で説明されていない zip ユーティリティが Linux ディストリビューションにない場合は、その Linux ディストリビューションのパッケージ管理ツールを使用して必要なパッケージをインストールします。
zip コマンドを使用して ZIP ファイルを作成する方法
ZIP ファイルを作成するには、
zip
アーカイブ ファイルの名前とその中に含めるファイルを指定する必要があります。アーカイブ名に「.zip」拡張子を追加する必要はありませんが、追加しても問題はありません。
すべての C ソース コード ファイルとヘッダー ファイルを含む
source_code.zip
というファイルを現在のディレクトリに作成するには、次のコマンドを使用します。
zip ソースコード *.c *.h
各ファイルは追加されるたびにリストされます。ファイルの名前と、そのファイルで達成された圧縮量が表示されます。
新しい ZIP アーカイブを見ると、「.zip」ファイル拡張子が
zip
によって自動的に追加されたことがわかります。
ls -l ソースコード.zip
ZIP ファイルの作成時に
zip
からの出力を表示したくない場合は、
-q
(静か) オプションを使用します。
zip -q ソースコード *.c *.h
ZIP ファイルにディレクトリを含める
ZIP ファイルにサブディレクトリを含めるには、
-r
(再帰) オプションを使用し、コマンド ラインにサブディレクトリの名前を含めます。以前と同様に ZIP ファイルを作成し、アーカイブのサブディレクトリも含めるには、次のコマンドを使用します。
zip -r -q ソースコード アーカイブ/ *.c *.h
作成している ZIP ファイルからファイルを抽出する人に配慮するため、多くの場合、ZIP ファイルを作成し、その中のファイルをディレクトリに含めるのが礼儀です。 ZIP ファイルを受け取った人がそれを解凍すると、すべてのファイルがコンピュータ上のディレクトリ内にきちんと配置されます。
次のコマンドでは、
work
ディレクトリとすべてのサブディレクトリをアーカイブします。なお、このコマンドは
work
フォルダの親ディレクトリから発行されます。
zip -r -q ソースコード work/
圧縮レベルの設定
ファイルを ZIP アーカイブに追加するときに、ファイルに適用される圧縮の程度を設定できます。範囲は 0 ~ 9 で、0 は圧縮をまったく行いません。圧縮率が高いほど、ZIP ファイルの作成にかかる時間が長くなります。適度なサイズの ZIP ファイルの場合、時間の違いは重大な不利益にはなりません。ただし、適度なサイズの ZIP ファイルの場合は、おそらくデフォルトの圧縮 (レベル 6) で十分でしょう。
zip
特定の圧縮レベルを使用させるには、次のように「-」を付けてコマンド ラインのオプションとして数値を渡します。
zip -0 -r -q ソースコード work/
デフォルトの圧縮レベルは 6 です。
-6
オプションを指定する必要はありませんが、指定しても問題はありません。
zip -r -q ソースコード work/
最大圧縮レベルはレベル 9 です。
zip -9 -r -q ソースコード work/
ここでアーカイブされるファイルとディレクトリの選択により、圧縮なし (レベル 0) とデフォルトの圧縮 (レベル 6) の差は 400K になります。デフォルトの圧縮と最高レベルの圧縮 (レベル 9) の差はわずか 4K です。
大したことではないように思えるかもしれませんが、数百、あるいは数千のファイルを含むアーカイブの場合、ファイルごとに少量の追加圧縮を加えると、価値のあるスペースの節約になります。
ZIP ファイルにパスワードを追加する
ZIP ファイルにパスワードを追加するのは簡単です。
-e
(暗号化) オプションを使用すると、パスワードを入力し、確認のために再入力するように求められます。
zip -e -r -q ソースコード work/
unzip コマンドを使用して ZIP ファイルを解凍する方法
ZIP ファイルからファイルを抽出するには、unzip コマンドを使用し、ZIP ファイルの名前を指定します。 「.zip」拡張子を指定する必要があることに注意してください。
ソースコード.zipを解凍します
ファイルが抽出されると、ターミナル ウィンドウに一覧表示されます。
ZIP ファイルには、ファイルの所有権の詳細は含まれません。抽出されるすべてのファイルの所有者は、抽出するユーザーに設定されます。
zip
と同様に、
unzip
には
-q
(静か) オプションがあるため、ファイルの抽出時にファイルのリストを確認する必要はありません。
unzip -q ソースコード.zip
ターゲットディレクトリへのファイルの抽出
ファイルを特定のディレクトリに抽出するには、
-d
(ディレクトリ) オプションを使用し、アーカイブを抽出するディレクトリへのパスを指定します。
unzip -q ソースコード.zip -d ./development
パスワードで保護されたZIPファイルを解凍する
パスワード付きの ZIP ファイルが作成されている場合、
unzip
にパスワードの入力を求められます。正しいパスワードを入力しないと、
unzip
ファイルは抽出されません。
unzip -q ソースコード.zip
パスワードが他人に見られることや、コマンド履歴に保存されることを気にしない場合は、コマンド ラインで
-P
(パスワード) オプションを使用してパスワードを指定できます。 (大文字の「P」を使用する必要があります。)
unzip -P fifty.treacle.cutlass -q ソースコード.zip
ファイルの除外
特定のファイルまたはファイルのグループを抽出したくない場合は、
-x
(除外) オプションを使用します。この例では、拡張子「.h」で終わるファイルを除くすべてのファイルを抽出します。
unzip -q ソースコード.zip -x *.h
ファイルの上書き
アーカイブを抽出したが、抽出されたファイルのいくつかを誤って削除したとします。
この問題を簡単に解決するには、ファイルをもう一度抽出します。ただし、以前と同じディレクトリに ZIP ファイルを解凍しようとすると、
unzip
ファイルの上書きに関する決定を求めるプロンプトが表示されます。次のいずれかの応答が期待されます。
r
(名前変更) 応答を除き、これらの応答では大文字と小文字が区別されます。
- y: はい、このファイルを上書きします
- n: いいえ、このファイルを上書きしないでください
- A: すべて、すべてのファイルを上書きします
- N: なし、どのファイルも上書きしません
- r: 名前を変更し、このファイルを抽出しますが、新しい名前を付けます。新しい名前の入力を求められます。
強制的に
unzip
既存のファイルを上書きするには、
-o
(上書き) オプションを使用します。
unzip -o -q ソースコード.zip
不足しているファイルを置き換える最も効率的な方法は、ターゲット ディレクトリにないアーカイブ内のファイルのみを
unzip
抽出することです。これを行うには、
-n
(上書きしない) オプションを使用します。
unzip -n ソースコード.zip
ZIP ファイルの中身を見る
多くの場合、ZIP ファイルを解凍する前に、ZIP ファイル内のファイルのリストを確認すると便利で有益です。これは、
-l
(リスト アーカイブ) オプションを使用して実行できます。出力を管理しやすくするために、
less
を介して
パイプ処理
されます。
unzip -l ソースコード.zip |少ない
出力には、ZIP ファイル内のディレクトリとファイル、それらの長さ、アーカイブに追加された日時が表示されます。 「q」を押して、
less
を終了します。
これから説明するように、ZIP ファイルの内部を覗く方法は他にもあり、さまざまな種類の情報が得られます。
zipcloakコマンドでパスワードを追加する
ZIP ファイルを作成したものの、パスワードを追加するのを忘れた場合はどうすればよいでしょうか?
zipcloak
コマンドを使用すると、ZIP ファイルにパスワードをすばやく追加できます。コマンドラインで ZIP ファイルの名前を渡します。パスワードの入力を求められます。パスワードをもう一度入力して確認する必要があります。
zipcloak ソースコード.zip
zipdetails コマンドを使用してファイルの詳細を表示する
zipdetails
コマンドを使用すると、ZIP ファイルに関する多くの情報が表示されます。このコマンドで得られる出力量を処理する唯一の賢明な方法は、
less
を介してパイプ処理することです。
zip詳細source_code.zip |少ない
ZIP ファイルがパスワードで保護されている場合でも、情報にはファイル名が含まれることに注意してください。このタイプの情報は ZIP ファイル内にメタデータとして保存され、暗号化データの一部ではありません。
zipgrepコマンドでファイル内を検索する
zipgrep
コマンドを使用すると、ZIP ファイル内のファイル内を検索できます。次の例では、ZIP ファイル内のどのファイルに「keyval.h」というテキストが含まれているかを知りたいと考えています。
zipgrep keyval.h ソースコード.zip
ファイル
slang.c
と
getval.c
に文字列「keyval.h」が含まれていることがわかります。また、ZIP ファイル内の異なるディレクトリにこれらの各ファイルのコピーが 2 つあることもわかります。
zipinfo コマンドを使用して情報を表示する
zipinfo
コマンドを使用すると、ZIP ファイルの内部を確認するさらに別の方法が得られます。前と同様に、出力を
less
経由でパイプ処理します。
zipinfo ソースコード.zip |少ない
出力は左から右に次のように表示されます。
- ファイルのアクセス許可
- ZIP ファイルの作成に使用されたツールのバージョン
- 元のファイルサイズ
- ファイル記述子 (後述)
- 圧縮方法(この場合はデフレーション)
- データとタイムスタンプ
- ファイルおよび任意のディレクトリの名前
ファイル記述子は 2 つの文字で構成されます。最初の文字は「t」または「b」で、テキスト ファイルまたはバイナリ ファイルを示します。大文字の場合、ファイルは暗号化されます。 2 番目の文字は 4 文字のいずれかになります。この文字は、このファイルに含まれるメタデータのタイプ (なし、拡張ローカル ヘッダー、「追加フィールド」、またはその両方) を表します。
- -: どちらも存在しない場合、文字はハイフンになります。
- l: 拡張ローカルヘッダーはあるが追加フィールドがない場合
- x: 拡張ローカルヘッダーはないが、追加フィールドがある場合
- X: 拡張ローカルヘッダーがあり、追加のフィールドがある場合
zipsplitコマンドでファイルを分割する
ZIP ファイルを他の人に送信する必要があるが、サイズ制限があるか、ファイルの送信に問題がある場合は、
zipsplit
コマンドを使用して、元の ZIP ファイルをより小さな ZIP ファイルのセットに分割できます。
-n
(サイズ) オプションを使用すると、新しい ZIP ファイルごとに最大サイズを設定できます。この例では、
source_code.zip
ファイルを分割しています。新しい ZIP ファイルが 100 KB (102400 バイト) を超えることは望ましくありません。
zipsplit -n 102400 ソースコード.zip
選択するサイズは、ZIP ファイル内のファイルのサイズより小さくすることはできません。
これらのコマンドを使用すると、Linux ターミナルを離れることなく、独自の ZIP ファイルを作成したり、受け取った ZIP ファイルを解凍したり、それらのファイルに対してその他のさまざまな操作を実行したりできます。





