目录

安装

zip

unzip

参数

zip

unzip

示例

场景一

场景二

参考


需要对一些文件进行加密打包压缩,提高数据安全和方便数据传输。

安装

apt-get安装:

apt-get install zip

yum安装:

yum install -y unzip zip

语法

zip

zip [-shortopts ...] [--longopt ...] [zipfile [path path ...]] [-xi list]

unzip

unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]

参数

zip

选项

说明

-A

调整可执行的自动解压缩文件。

-b

<工作目录> 指定暂时存放文件的目录。

-c

替每个被压缩的文件加上注释。

-d

从压缩文件内删除指定的文件。

-D

压缩文件内不建立目录名称。

-f

更新现有的文件。

-F

尝试修复已损坏的压缩文件。

-g

将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。

-h

在线帮助。

-h2

详细的帮助文档

-i

<范本样式> 只压缩符合条件的文件。

-j

只保存文件名称及其内容,而不存放任何目录名称。

-J

删除压缩文件前面不必要的数据。

-k

使用MS-DOS兼容格式的文件名称。

-l

压缩文件时,把LF字符置换成LF+CR字符。

-ll

压缩文件时,把LF+CR字符置换成LF字符。

-L

显示版权信息。

-m

将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。

-n

<字尾字符串> 不压缩具有特定字尾字符串的文件。

-o

以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。

-q

不显示指令执行过程。

-r

递归处理,将指定目录下的所有文件和子目录一并处理。

-S

包含系统和隐藏文件。

-t

<日期时间> 把压缩文件的日期设成指定的日期。

-T

检查备份文件内的每个文件是否正确无误。

-u

与 -f 参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。

-v

显示指令执行过程或显示版本信息。

-V

保存VMS操作系统的文件属性。

-w

在文件名称里假如版本编号,本参数仅在VMS操作系统下有效。

-x

<范本样式> 压缩时排除符合条件的文件。

-X

不保存额外的文件属性。

-y

直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。

-z

替压缩文件加上注释。

-$

保存第一个被压缩文件所在磁盘的卷册名称。

-<压缩效率>

压缩效率是一个介于1-9的数值。

unzip

选项

说明

-Z

等于执行 zipinfo(1) 命令,用于查看 zip 文件的整体信息

-q

不显示执行过程

-f

更新压缩包的文件

-l

显示压缩文件内的文件

-v

执行时显示详细的信息

-o

不询问用户,覆盖原有文件

-d

指定文件解压缩后所要存储的目录

未列举完。

示例

场景一

递归压缩/83To82/Yang/data/Rs_Platform_code路径下,名为sentinel-2L1c的文件夹及其包含的所有文件和文件夹,压缩文件保存/83To82/Sentinel2目录下,压缩文件路径为/83To82/Sentinel2/Rs_Platform_code.zip,解压目录为/83To82/all_data/YingXiang,解压后的文件夹路径为/83To82/Sentinel2/Rs_Platform_code

# 压缩

# 分步执行
cd /83To82/Yang/data
zip -r /83To82/Sentinel2/Rs_Platform_code.zip ./Rs_Platform_code -i './**/sentinel-2L1c'

# 一步到位
cd /83To82/Yang/data && zip -r /83To82/Sentinel2/Rs_Platform_code.zip ./Rs_Platform_code -i './**/sentinel-2L1c'

# 解压
unzip /83To82/Sentinel2/Rs_Platform_code.zip -d /83To82/all_data/YingXiang

内部zip支持以下通配符:

  • ? :(或%或#,取决于操作系统)匹配任何单个字符
  • *  :匹配任意数量的字符,包括零
  • [list] :匹配列表中的字符(regex),可以执行范围[ac-f],除[!bf]外的所有字符

如果端口支持[],则必须将[]转义为[[]或使用-nw关闭通配符,对于扩展通配符的shell,请转义(\*或“*”),以便zip可以递归

zip zipfile -r-i "*.h"

注意

  • 通常*在路径中跨越目录边界,例如“a*b”可以匹配“ac/db”。如果使用-ws选项,*不跨越目录边界,但**跨越。
  • 对于DOS和Windows,[list]现在被禁用,除非新选项-RE启用[list](正则表达式)匹配,用于避免包含“[”和“]”的文件路径出现问题。

场景二

加密压缩/83To82/Yang/data/Rs_Platform_code目录,压缩文件为/83To82/Sentinel2/Rs_Platform_code.zip。并对其进行解压。

压缩方法:

## 加密压缩方法一 
cd /83To82/Yang/data && zip -re Rs_Platform_code.zip ./Rs_Platform_code
## 加密压缩方法二 password是密码
cd /83To82/Yang/data && zip -rP passwork Rs_Platform_code.zip ./Rs_Platform_code

解压方法:

## 有密码提示:输入密码,方法一
unzip Rs_Platform_code.zip
## 没有密码提示,方法二
unzip -P password Rs_Platform_code.zip

参考

Linux zip命令

Linux系统安装zip命令

zip命令详解 - 运维术 (cnbugs.com)