目录
安装
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