ここから本文です

1分で解説、きょうのLinux基本コマンド講座:「zipコマンド」(基礎編)

@IT 7月25日(月)6時10分配信

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

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

●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ファイルは作成/更新されない)

●対象ファイル関連
短いオプション / 長いオプション / 意味
-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 / 詳しいヘルプを表示する


●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」に圧縮する)

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

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

○コマンド実行例

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


●除外ファイルを指定する

 「カレントディレクトリのファイルを全て圧縮したい。ただし、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」は除く)



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

最終更新:7月25日(月)6時10分

@IT

TEDカンファレンスのプレゼンテーション動画

暗闇で光るサメと驚くほど美しい海洋生物たち
波のほんの数メートル下で、海洋生物学者であり、ナショナルジオグラフィックのエクスプローラーかつ写真家のデビッド・グルーバーは、素晴らしいものを発見しました。海の薄暗い青い光の中で様々な色の蛍光を発する驚くべき新しい海洋生物たちです。彼と一緒に生体蛍光のサメ、タツノオトシゴ、ウミガメ、その他の海洋生物を探し求める旅に出て、この光る生物たちがどのように私たちの脳への新たな理解を明らかにしたのかを探りましょう。[new]