連載
» 2016年07月25日 05時00分 UPDATE

Linux基本コマンドTips(34):【 zip 】コマンド(基礎編)――ファイルをZIP形式で圧縮する

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「zip」コマンドです。

[西村めぐみ,@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、ファイルをZIP形式で圧縮するための「zip」コマンドを解説します。

zipコマンドとは?

 「zip」は、ファイルをZIP形式で圧縮するコマンドです。ZIPはWindows環境で特にポピュラーな圧縮形式で、複数のファイルを圧縮して1つのファイルにすることができます。ZIPファイルから元のファイルを取り出す場合は、「unzip」コマンドを使用します(次回解説)。


zipコマンドの書式

zip [オプション] ZIPファイル [対象ファイル]

※[ ]は省略可能な引数を示しています



zipコマンドの主なオプション

 zipコマンドの主なオプションは次の通りです。


●基本操作
短いオプション 長いオプション 意味
-f --freshen 変更があったファイルの分だけZIPファイルを更新する
-u --update 変更があったファイルの更新または新規ファイルの追加だけを行う
-d --delete 指定したファイルをZIPファイルから削除する
-m --move ZIPファイルに移動する(元のファイルは削除される)
-r --recurse-paths ディレクトリ内のファイルを再帰的に扱う
-T --test 動作をテストする(異常があった場合ZIPファイルは更新されず、「-m」オプション指定時のファイル削除も行わない)

●対象ファイル関連
短いオプション 長いオプション 意味
-t 日付 --from-date=日付 ファイルの更新日が指定した日付以降のものを対象とする(日付は「mmddyyyy」で指定)
-tt 日付 --before-date=日付 ファイルの更新日が指定した日付以前のものを対象とする(日付は「mmddyyyy」で指定)
-@ 処理対象のファイル名を標準入力から読み込む
-x ファイル --exclude=ファイル 対象から外すファイル名を指定する(対象ファイルの後で指定)
-i ファイル --include=ファイル 対象とするファイル名を限定する(対象ファイルの後で指定)
-n 拡張子 --suffixes=拡張子 指定した拡張子は圧縮しない
-R --recurse-patterns 指定パターンを再帰的に探して対象にする(例えば、「-R ZIPファイル "*.txt"」でカレントディレクトリ下の「*.txt」を圧縮対象にする)

●格納する内容関連
短いオプション 長いオプション 意味
-D --no-dir-entries ディレクトリは格納せず、ファイルだけを格納する
-y --symlinks シンボリックリンクをたどらずに、シンボリックリンクのまま格納する
-p --paths 相対パス名も含めて格納する(デフォルト)
-j --junk-paths ディレクトリ名なしで格納する
-X --no-extra 拡張属性は格納しない
-l --to-crlf 改行コードを「LF」から「CR LF」に変換する
-ll --from-crlf 改行コードを「CR LF」から「LF」に変換する

●圧縮ファイル関連
短いオプション 長いオプション 意味
-0〜9 圧縮率の調整。「-0」は圧縮せずZIPファイルに格納するのみ〜「-9」で圧縮率を最高にする。圧縮率を上げると処理スピードが落ちる(デフォルトは「-6」)
-s 分割サイズ --split-size=分割サイズ 分割ZIPファイルを作成するときのサイズ
-O ファイル名 --output-file=ファイル名,--out=ファイル名 出力するZIPファイル名(ZIPファイルを元に、別のZIPファイルを作成するような場合に使用)
-e --encrypt 暗号化する
-o --latest-time ZIPファイルのタイムスタンプを、対象ファイルの最新ファイルと同じにする
-F --fix ZIPファイルを修復する(「-FF」でさらに細かく修復を試みる)
-FF --fixfix ZIPファイルを修復する(「-F」では修復できなかったファイルも修復できる可能性がある)
-J --junk-sfx 圧縮ファイルの拡張子(.zip)を付けない
-z --archive-comment ZIPファイルにコメントを追加する(コメントは圧縮後に入力)

●動作関連
短いオプション 長いオプション 意味
-b パス --temp-path=パス 作業ディレクトリを指定する
-q --quiet 動作中のメッセージを表示しない
-v --verbose 動作中のメッセージを詳しくする(ファイルを指定しなかった場合は、zipコマンドのバージョンを表示)
-db --display-bytes 動作中のメッセージに処理したサイズを表示する
-dc --display-counts 動作中のメッセージに処理したファイル数を表示する
-du --display-usize 動作中のメッセージに元のファイルサイズを表示する
-h2 --more-help 詳しいヘルプを表示する

【※】短いオプション、長いオプションともに「-t日付」「-t=日付」「-t 日付」のスタイルで指定可能。




ZIPファイルを作成する

 ZIPは、Linux以外のOS、特にWindows OSではポピュラーな圧縮形式です。Windowsは、OS標準機能でZIPファイルを作成することができます。

 Linux環境では、伝統的に複数ファイルを1つのファイルにする操作(アーカイブ)と、ファイルを圧縮する操作は別で、前者は「tar」コマンド、後者は「gzip」コマンドや「bzip2」コマンドを使用します()。


】現在のtarコマンドはgzip/bzip2による圧縮に対応しているため、コマンド操作としてはアーカイブと同時に圧縮するのが一般的です。



 ZIPファイルの場合は、「複数のファイルを1つにまとめて圧縮する」という操作を行います。なお、ZIPファイルの展開には、「unzip」コマンドを使います(次回解説)。

 「zip ZIPファイル名 対象ファイル」で、ZIPファイルを作成します(画面1)。拡張子の「.zip」は自動的に追加されるので省略できます。

コマンド実行例

zip 0720text *.txt

(「*.txt」を「0720text.zip」に圧縮する)


画面1 画面1 zipコマンドで「*.txt」を「0720text.zip」に圧縮しているところ


サブディレクトリも含めて圧縮する

 サブディレクトリも含めて圧縮したい場合は、「-r」オプションを指定します。例えば、カレントディレクトリのファイルをサブディレクトリ下のファイルも含めて圧縮したい場合は、「zip -r ZIPファイル名 *」のように指定します(画面2)。

コマンド実行例

zip -r all *

(カレントディレクトリのファイルをサブディレクトリ下のファイルも含めて「all.zip」に圧縮する)


画面2 画面2 「-r」オプションを指定すると、サブディレクトリ下のファイルも含めて圧縮できる


除外ファイルを指定する

 「カレントディレクトリのファイルを全て圧縮したい。ただし、ZIPファイルは除外したい」というように、圧縮から除外したいファイルがある場合は「-x」オプションを指定します。

 除外ファイルを指定する「-x」オプションは、除外対象ファイルの後に指定します。今回の場合はZIPファイルを除外したいので、「zip -r ZIPファイル名 * -x "*.zip"」のように指定します(画面3)。ここでは、「""」の指定を忘れないようにしましょう()。

※ワンポイント

 カレントディレクトリに「*.zip」がない場合は問題ありませんが、例えば「data.zip」が存在した場合は、シェルがワイルドカードを展開して「zip -r ZIPファイル名 * -x data.zip」が実行されることになります。

 カレントディレクトリの「*.zip」を除外したいだけならば問題ありませんが、サブディレクトリ下に別名の「*.zip」があった場合は除外されない、ということになるので注意してください。



コマンド実行例

zip -r data0720 * -x "*.zip"

(カレントディレクトリのファイルを、サブディレクトリ下のファイルも含めて「data0720.zip」に圧縮する。ただし「*.zip」は除く)


画面3 画面3 圧縮から除外したいファイルは「-x」オプションで指定する


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。