Linuxコマンド zip(zip形式アーカイブに圧縮する)
指定したファイル・ディレクトリをUnixやWindows、Mac OS Xなど複数プラットフォームで利用できるPKZIP互換圧縮アーカイブに圧縮するzipコマンド概要と使い方を記載しています。
RHEL Fedora CentOS Vine Deblan Ubuntu Plamo
目次
概要・使用方法
出力する圧縮ファイルとZIPファイルにまとめる「ファイル名・・・」を指定します。指定したファイルのみ圧縮するので、特定のディレクトリ以下をすべてまとめて処理をする場合は、-rオプションが必要になります。ディレクトリも処理対処に指定でき、「*(ワイルドカード)」を利用したファイルパスも指定できます。
書式
$zip [オプション] [ファイル名・・・]
zipは標準でインストールされていないことがあるので、その場合は「yum install zip」でインストールする必要がある。
オプション
-f, –freshen | アーカイブ内のファイルに既に含まれている場合は更新する |
-u, –update | アーカイブ内のファイルがあるか無いかに限らず更新する |
-d, –delete | ZIPファイルの中にある指定したファイルを削除する |
-m, –move | 指定したファイルをZIPファイルの中に移動し、元ファイルを削除する |
-r, –recurse-paths | 指定したディレクトリを再帰的に圧縮する |
-l, –to-crif | 改行コードをLFからCRLFに変換する(-llを指定した場合はCFLFからLFに変換する) |
-q, –quiet | 静的に処理を行う(デフォルトは圧縮状況などを表示する) |
-c, –entry-comments | それぞれのファイルにコメントを追加する |
-@ | 標準入力からファイル名を指定する。1行に1ファイルとなるがディレクトリもファイルとして扱う |
-e, –encry-comments | パスワードによる暗号化したアーカイブを作成する |
-x ファイル名・・・, –exclude ファイル名・・・ | 圧縮対象から除去するファイルを指定する |
-z | 作成するZIPファイルにコメントを追加する |
-O ファイル名 –out ファイル名 | 出力するアーカイブファイルを指定する |
-P パスワード, –password パスワード | 暗号化アーカイブへのパスワードを指定する(コマンドラインによる指定は安全ではない) |
【基本使用例】
ファイルを圧縮する
$zip アーカイブ名 圧縮対象のファイル名
実行結果
[centos@work sample]$ls
http.log
[centos@work sample]$
[centos@work sample]$zip httplog.zip http.log
adding: http.log (deflated 25%)
[centos@work sample]$ls
http.log httplog.zip
[centos@work sample]$
複数のファイルをまとめて圧縮ファイルを作成する
サンプル
$zip log.zip -r .
実行結果
[centos@work sample]$ls
http1.log http2.log
[centos@work sample]$zip log.zip -r .
adding: http1.log (stored 0%)
adding: http2.log (stored 0%)
[centos@work sample]$ls
http1.log http2.log log.zip
[centos@work sample]$
ワイルドカードでファイルを指定して圧縮する
サンプル
$zip log.zip http*.log
実行結果
[centos@work sample]$zip log.zip http*.log
adding: http1.log (stored 0%)
adding: http2.log (stored 0%)
[centos@work sample]$ls
http1.log http2.log log.zip
[centos@work sample]$
除外するファイルを指定して圧縮ファイルを作成する
サンプル
$zip log.zip -x http1.log -r .
実行結果
[centos@work sample]$ls
http1.log http2.log
[centos@work sample]$zip log.zip -x http1.log -r .
adding: http2.log (stored 0%)
[centos@work sample]$ls
http1.log http2.log log.zip
[centos@work sample]$
findでファイルリストを作成しzipの標準入力から圧縮対象ファイルを圧縮する
サンプル
$find . -type f | zip -@ log.zip
実行結果
[centos@work sample]$ls -la
total 16
drwxrwxr-x 2 centos centos 72 Feb 20 07:54 .
drwx------. 6 centos centos 142 Apr 26 2021 ..
-rw-rw-r-- 1 centos centos 4 Feb 20 07:41 http1.log
-rw-rw-r-- 1 centos centos 6 Feb 20 07:41 http2.log
-rw-rw-r-- 1 centos centos 174 Feb 20 07:50 log1.zip
-rw-rw-r-- 1 centos centos 488 Feb 20 07:54 log2.zip
[centos@work sample]$find ./ -type f | zip -@ log.zip
adding: http1.log (stored 0%)
adding: http2.log (stored 0%)
adding: log2.zip (stored 0%)
adding: log1.zip (stored 0%)
[centos@work sample]$ls
http1.log http2.log log1.zip log2.zip log.zip
[centos@work samplek]$
圧縮ファイルに含める各ファイルにコメントをつける
サンプル
$zip log.zip -c http*
実行結果
[centos@work sample]$ls
http1.log http2.log
[centos@work sample]$zip log.zip -c http*
adding: http1.log (stored 0%)
adding: http2.log (stored 0%)
Enter comment for http1.log:
2022/01/01 log
Enter comment for http2.log:
2022/01/02 log
[centos@work sample]$unzip -l log.zip
Archive: log.zip
Length Date Time Name
--------- ---------- ----- ----
4 02-20-2022 07:41 http1.log
2022/01/01 log
6 02-20-2022 07:41 http2.log
2022/01/02 log
--------- -------
10 2 files
[centos@work sample]$
圧縮ファイルにコメントを追加する
サンプル
$zip log.zip -c http*
実行結果
[centos@work sample]$unzip -l log.zip
Archive: log.zip
Length Date Time Name
--------- ---------- ----- ----
4 02-20-2022 07:41 http1.log
2022/01/01 log
6 02-20-2022 07:41 http2.log
2022/01/02 log
--------- -------
10 2 files
[centos@work sample]$zip -z log.zip
enter new zip file comment (end with .):
アーカイブコメントてすと
.
[centos@work sample]$unzip -l log.zip
Archive: log.zip
アーカイブコメントてすと
Length Date Time Name
--------- ---------- ----- ----
4 02-20-2022 07:41 http1.log
2022/01/01 log
6 02-20-2022 07:41 http2.log
2022/01/02 log
--------- -------
10 2 files
[centos@work sample]$
圧縮ファイルにパスワードで暗号化する
サンプル
$zip log.zip -e http*
実行結果
[centos@work sample]$ls
http1.log http2.log
[centos@work sample]$ zip log.zip -e http*
Enter password:
Verify password:
adding: http1.log (stored 0%)
adding: http2.log (stored 0%)
[centos@work sample]$ unzip log.zip
Archive: log.zip
[log.zip] http1.log password: