Linux(Centos 7.6)命令详解:zip

发布于:2025-03-09 ⋅ 阅读:(11) ⋅ 点赞:(0)

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]#