1.命令作用
打包和压缩(存档)文件(package and compress (archive) files);该程序用于打包一组文件进行分发;存档文件;通过临时压缩未使用的文件或目录来节省磁盘空间;且压缩文件可以在Linux、Windows 和 macOS中轻松提取。
2.命令语法
usage: zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]
3.参数详解
-options:
- -d,创建或者更新归档压缩时,使用临时文件,-d用于指定临时文件目录
- -t date,在date之前的时间排除(包括在此日期及之后修改<modify>的文件)
- -tt date,包括date之前的时间(包括在日期之前修改<modify>的文件)
- -f,freshen,如果文件系统上的归档文件较新,则更新归档文件的现有条目。不向存档中添加新文件。
- -u,update,如果文件系统上的条目较新,则更新现有条目并添加新文件。如果存档不存在,则发出警告,然后创建一个新存档。
- -d,delete,选择现有存档中的条目并删除它们。
- -m,move,将指定的文件移动/添加到zip存档中;移动/添加到zip存档后删除目标文件/目录。如果删除文件后目录变为空,则该目录也将被删除。建议与-T结合使用。
- -r,recurse,递归地遍历目录结构。
- -j,junk,不记录目录名称;用于归档某目录下所有内容场景,并不归档内容上层的目录。
- -l,归档/压缩时,将文件行尾的CR或者LF转换为CR LF(Unix->Win)
- -ll,归档/压缩时,将文件行尾的CR LF转换为CR或者LF(Win->Unix)
- -0,仅归档,不压缩;执行时提示stored则为普通归档并不压缩,提示deflated则会压缩。
- -1,快速压缩,压缩比会比较低。
- -9,更好的压缩,压缩比高,但压缩效率低。
- -1~-9,1是快速压缩,9是高压缩比,默认为6
- -Z cm,cm可指定store(同-0)、deflate(可选-1~-9)、bzip2(使用bzip2压缩)
- -q,安静操作;与默认及-v详细对比看效果。
- -v,verbose,打印详细操作信息。
- -c,添加一行注释;可使用unzip -l查看注释。
- -z,添加zip文件注释;可使用unzip -z查看注释。
- -@,从stdin中读取名称,如:find . -name "*.txt" | zip -@ hahaha.zip
- -o,效果是更新zip文件modify时间,zip文件的change时间不变(modify是修改文件内容会更新,change是修改文件属性会更新<如更新文件权限和文件所有者>),如zip -uo
- -x,排除以下名称
- -i,只包括以下名称
- -F,修复zip文件
- -D,压缩目录不添加所有的目录,其他和默认无区别;具体观察zip -r 与zip -r -D归档压缩目录的区别
- -A,调整可执行的自动解压缩文件,如zip -A zipfile(无明显效果)
- -J,不记录zip文件前面不必要的数据,以减少zip文件的大小
- -T,test,测试压缩文件的完整性
- -X,不保留额外的文件属性,如文件的修改时间和访问权限,不保存这些信息可以减少压缩文件的大小,处理大量小文件时效果显著
- -y,将符号链接/软链接存储为链接而不是引用的文件
- -e,encrypt,归档/压缩文件时,对zip文件进行加密,使用unzip解压时需要密码解压
- -n,不要压缩指定后缀的文件,仅stored归档存储,未指定的文件会压缩
- -sf,查看zip文件的内容列表
- -h2,提供更多帮助
4.常用用例
4.1.目录zip归档压缩(-r)
[root@node2 Desktop]# tree dir1/
dir1/
├── dir12
│ ├── file1.txt
│ ├── file5.txt
│ └── ln_file1.txt
├── file2.txt
├── file3.txt
├── file4.txt
└── file5.txt
1 directory, 7 files
[root@node2 Desktop]# zip dir1.zip dir1/
adding: dir1/ (stored 0%)
[root@node2 Desktop]#
[root@node2 Desktop]# zip -r dir1.zip dir1/
updating: dir1/ (stored 0%)
adding: dir1/file2.txt (deflated 66%)
adding: dir1/file3.txt (deflated 66%)
adding: dir1/file4.txt (deflated 66%)
adding: dir1/file5.txt (deflated 66%)
adding: dir1/dir12/ (stored 0%)
adding: dir1/dir12/file5.txt (deflated 66%)
adding: dir1/dir12/file1.txt (deflated 100%)
adding: dir1/dir12/ln_file1.txt (deflated 100%)
[root@node2 Desktop]#
4.2.显示zip归档压缩文件的文件列表
[root@node2 Desktop]# zip -sf filetxt.zip
Archive contains:
file2.txt
file4.txt
file5.txt
file6.txt
file7.txt
file8.txt
file9.txt
Total 7 entries (3132 bytes)
[root@node2 Desktop]#
4.3.zip归档压缩文件内删除文件(-d)
[root@node2 Desktop]# zip -sf filetxt.zip
Archive contains:
file2.txt
file4.txt
file5.txt
file6.txt
file7.txt
file8.txt
file9.txt
Total 7 entries (3132 bytes)
[root@node2 Desktop]# zip -d filetxt.zip file2.txt
deleting: file2.txt
[root@node2 Desktop]#
[root@node2 Desktop]# zip -sf filetxt.zip
Archive contains:
file4.txt
file5.txt
file6.txt
file7.txt
file8.txt
file9.txt
Total 6 entries (177 bytes)
[root@node2 Desktop]#
4.4.更新zip归档压缩文件内的指定文件并删除指定的文件(-m)
[root@node2 Desktop]# zip -sf filetxt.zip
Archive contains:
file2.txt
file4.txt
file5.txt
file6.txt
file7.txt
file8.txt
file9.txt
Total 7 entries (3132 bytes)
[root@node2 Desktop]# ll file2.txt
-rw-r--r--. 1 root root 2955 Mar 7 16:34 file2.txt
[root@node2 Desktop]#
[root@node2 Desktop]# zip -m filetxt.zip file2.txt
updating: file2.txt (deflated 96%)
[root@node2 Desktop]#
[root@node2 Desktop]# ll file2.txt
ls: cannot access file2.txt: No such file or directory
[root@node2 Desktop]#
4.5.更新zip归档压缩文件中已经存在的文件(-u)
[root@node2 Desktop]# zip -sf filetxt.zip
Archive contains:
file4.txt
file5.txt
file6.txt
file7.txt
file8.txt
file9.txt
Total 6 entries (177 bytes)
[root@node2 Desktop]#
## file4.txt 文件更新后,将更新后的file4.txt更新到zip文件中
[root@node2 Desktop]# zip -u filetxt.zip file4.txt
[root@node2 Desktop]#
[root@node2 Desktop]# zip -sf filetxt.zip
Archive contains:
file4.txt
file5.txt
file6.txt
file7.txt
file8.txt
file9.txt
Total 6 entries (177 bytes)
[root@node2 Desktop]#
4.6.归档压缩同时给zip文件加密
[root@node2 Desktop]# zip -P passwdstr filetxt3.zip file*.txt
adding: file4.txt (deflated 54%)
adding: file5.txt (deflated 43%)
adding: file6.txt (deflated 43%)
adding: file7.txt (deflated 43%)
adding: file8.txt (deflated 43%)
adding: file9.txt (deflated 43%)
[root@node2 Desktop]#
[root@node2 Desktop]# unzip filetxt3.zip ## 解压时需要输入密码才行
Archive: filetxt3.zip
[filetxt3.zip] file4.txt password:
## 或者使用明文密码
[root@node2 Desktop]# unzip -P passwdstr filetxt3.zip
Archive: filetxt3.zip
inflating: file4.txt
inflating: file5.txt
inflating: file6.txt
inflating: file7.txt
inflating: file8.txt
inflating: file9.txt
[root@node2 Desktop]#
4.7.静默模式不显示任何信息(-q)
[root@node2 Desktop]# zip filetxt1.zip file*.txt
adding: file4.txt (deflated 54%)
adding: file5.txt (deflated 43%)
adding: file6.txt (deflated 43%)
adding: file7.txt (deflated 43%)
adding: file8.txt (deflated 43%)
adding: file9.txt (deflated 43%)
[root@node2 Desktop]#
[root@node2 Desktop]# zip -q filetxt2.zip file*.txt
[root@node2 Desktop]#
4.8.指定压缩方式及压缩级别
[root@node2 Desktop]# zip -Z deflate -9 filetxt4.zip file*.txt
adding: file4.txt (deflated 54%)
adding: file5.txt (deflated 43%)
adding: file6.txt (deflated 43%)
adding: file7.txt (deflated 43%)
adding: file8.txt (deflated 43%)
adding: file9.txt (deflated 43%)
[root@node2 Desktop]#