【Linux command 06】zip命令 – 压缩文件

1、功能

zip命令的功能是用于压缩文件,解压命令为unzip。通过zip命令可以将文件打包成.zip格式的压缩包,里面会附含文件的名称、路径、创建时间、上次修改时间等等信息,与tar命令相似。

2、语法

  • 语法格式:
zip (选项)  (参数)
  • 常用选项:
选项含义
-q不显示指令执行过程
-r递归处理,将指定目录下的所有文件和子目录一并处理
-z替压缩文件加上注释
-v显示指令执行过程或显示版本信息
-d更新压缩包内文件
-n<字尾字符串>不压缩具有特定字尾字符串的文件
  • 选项
选项含义
-A调整可执行的自动解压缩文件;
-b <工作目录>指定暂时存放文件的目录;
-c替每个被压缩的文件加上注释;
-d从压缩文件内删除指定的文件;
-D压缩文件内不建立目录名称;
-f此参数的效果和指定“-u”参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中;
-F尝试修复已损坏的压缩文件;
-g将文件压缩后附加在已有的压缩文件之后,而非另行建立新的压缩文件;
-h在线帮助;
-i<范本样式>只压缩符合条件的文件;
-j只保存文件名称及其内容,而不存放任何目录名称;
-J删除压缩文件前面不必要的数据;
-k使用MS-DOS兼容格式的文件名称;
-l压缩文件时,把LF字符置换成LF+CR字符;
-ll压缩文件时,把LF+cp字符置换成LF字符;
-L显示版权信息;
-m将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中;
-n<字尾字符串>不压缩具有特定字尾字符串的文件;
-o以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同;
-q不显示指令执行过程;
-r递归处理,将指定目录下的所有文件和子目录一并处理;
-S包含系统和隐藏文件;
-t<日期时间>把压缩文件的日期设成指定的日期;
-T检查备份文件内的每个文件是否正确无误;
-u更换较新的文件到压缩文件内;
-v显示指令执行过程或显示版本信息;
-V保存VMS操作系统的文件属性;
-w在文件名称里假如版本编号,本参数仅在VMS操作系统下有效;
-x<范本样式>压缩时排除符合条件的文件;
-X不保存额外的文件属性;
-y直接保存符号连接,而非该链接所指向的文件,本参数仅在UNIX之类的系统下有效;
-z替压缩文件加上注释;
-$保存第一个被压缩文件所在磁盘的卷册名称;
-<压缩效率>压缩效率是一个介于1~9的数值;
  • 参数
    • zip压缩包:指定要创建的zip压缩包;
    • 文件列表:指定要压缩的文件列表。

3、参考实例

  • 将指定目录及其内全部文件都打包成zip格式压缩包文件:
[root@linuxcool ~]# zip -r backup1.zip /etc
  adding: etc/fstab (deflated 45%)
  adding: etc/crypttab (stored 0%)
  adding: etc/resolv.conf (stored 0%)
  adding: etc/dnf/ (stored 0%)
  adding: etc/dnf/modules.d/ (stored 0%)
  adding: etc/dnf/modules.d/container-tools.module (deflated 17%)
  adding: etc/dnf/modules.d/llvm-toolset.module (deflated 14%)
………………省略部分输出信息………………
  • 将当前工作目录内所有以.cfg为后缀的文件打包:
[root@linuxcool ~]# zip -r backup2.zip *.cfg
  adding: anaconda-ks.cfg (deflated 44%)
  adding: initial-setup-ks.cfg (deflated 44%)
  • 更新压缩包文件中某个文件:
[root@linuxcool ~]# zip -dv backup2.zip anaconda-ks.cfg 
1>1: updating: anaconda-ks.cfg (deflated 44%)
  • 将/home/Blinux/html/这个目录下所有文件和文件夹打包为当前目录下的html.zip:
zip -q -r html.zip /home/Blinux/html
  • 上面的命令操作是将绝对地址的文件及文件夹进行压缩,以下给出压缩相对路径目录,比如目前在Bliux这个目录下,执行以下操作可以达到以上同样的效果:
zip -q -r html.zip html
  • 比如现在我的html目录下,我操作的zip压缩命令是:
$ zip -q -r html.zip *
  • 压缩 example/basic/ 目录内容到 basic.zip 压缩包中 -x 指定排除目录,注意没有双引号将不起作用。
$ zip -r basic.zip example/basic/ -x "example/basic/node_modules/*" -x "example/basic/build/*" -x "example/basic/coverage/*"

上面压缩解压出来,内容存放在 example/basic/, 如果想存放到根目录,进入目录进行压缩,目前没有找到一个合适的参数来解决此问题。

  • 压缩效率选择:
$ zip -9 # 1-9 faster->better
  • 创建 public_html 目录下忽略所有文件和文件夹,排除包括文本 backup 的所有文件。
$ zip -r public_html.zip public_html -x *backup*
  • httpdocs 目录忽略 .svn 文件或 git 的文件和目录下创建所有文件的归档。
$ zip -r httpdocs.zip httpdocs --exclude *.svn* --exclude *.git*
  • httpdocs 目录忽略的所有文件,并与 .log 结尾的目录下创建所有文件的归档。
$ zip -r httpdocs.zip httpdocs --exclude "*.log"

4、问题解决

CentOS7中命令找不到

-Bash: Unzip: Command Not Found

解决方法

yum install -y unzip zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值