Skip to content

压缩与归档

常见格式的选择:

格式特点
.zip跨平台兼容性好,适合交换文件。
.tar.gzLinux 中常用,兼顾压缩速度与压缩率。
.tar.xz压缩率通常高于 gzip,但压缩速度较慢。
.7z压缩率较高,支持加密和多种压缩算法。

zip/unzip

zip 用于创建或更新 ZIP 归档,unzip 用于查看、测试和解压 ZIP 归档。

安装

bash
# Ubuntu 26 / Debian 13
apt install -y zip unzip

# Fedora / RHEL / CentOS Stream
dnf install -y zip unzip

创建归档

bash
# 压缩单个文件
zip archive.zip file

# 递归压缩目录;同时压缩多个文件或目录
zip -r archive.zip directory
zip -r archive.zip file directory

# 排除匹配的文件或目录
zip -r archive.zip directory -x 'directory/node_modules/*' '*.log' '*.DS_Store'

查看与解压

bash
# 查看内容并测试归档完整性
unzip -l archive.zip
unzip -t archive.zip

# 解压到当前目录或指定目录
unzip archive.zip
unzip archive.zip -d /path/to/destination

# 仅解压归档中的指定文件或目录内容
unzip archive.zip path/in/archive/file
unzip archive.zip 'path/in/archive/*'

# 跳过或直接覆盖同名文件
unzip -n archive.zip
unzip -o archive.zip
命令参数说明

zip:

参数说明
-r递归处理目录。
-x <模式>排除匹配项,可连续指定多个模式。

unzip:

参数说明
-l查看归档内容。
-t测试归档完整性。
-d <目录>解压到指定目录。
-n遇到同名文件时跳过,不询问。
-o遇到同名文件时直接覆盖,不询问。

排除模式应使用引号包裹,避免 * 被 Shell 提前展开。unzip -o 会直接覆盖同名文件,使用前应确认目标目录。

tar

tar 用于将多个文件或目录打包为一个归档文件,也可以配合 gzip、bzip2、xz 进行压缩。

创建归档

bash
# 仅打包,不压缩
tar -cf archive.tar file directory

# 使用 gzip、bzip2 或 xz 压缩
tar -czf archive.tar.gz file directory
tar -cjf archive.tar.bz2 file directory
tar -cJf archive.tar.xz file directory

查看与解压

bash
# 查看归档内容
tar -tf archive.tar
tar -tzf archive.tar.gz

# 解压到当前目录
tar -xf archive.tar
tar -xzf archive.tar.gz
tar -xjf archive.tar.bz2
tar -xJf archive.tar.xz

# 解压到指定目录;目标目录必须已经存在
tar -xzf archive.tar.gz -C /path/to/destination

# 仅解压归档中的指定文件或目录
tar -xzf archive.tar.gz path/in/archive

常见场景

bash
# 创建归档时排除目录或文件
tar -czf archive.tar.gz --exclude='directory/node_modules' --exclude='*.log' directory

# 解压时去掉归档路径的第一层目录
tar -xzf archive.tar.gz --strip-components=1 -C /path/to/destination
命令参数说明
参数说明
-c创建归档。
-x解压归档。
-t查看归档内容。
-f <文件>指定归档文件;后面紧跟文件名。
-z使用 gzip,通常对应 .tar.gz
-j使用 bzip2,通常对应 .tar.bz2
-J使用 xz,通常对应 .tar.xz
-v显示正在处理的文件。
-C <目录>解压前切换到指定目录。
--exclude=<模式>创建归档时排除匹配的路径。
--strip-components=N解压时移除归档内路径开头的 N 层目录。

-c-x-t 分别表示创建、解压和查看,一次操作只使用其中一个。

解压外部归档前建议先使用 -t 查看内容。解压可能直接覆盖同名文件;--exclude 的模式应使用引号包裹,避免被 Shell 提前展开。

7z

7-Zip 支持 .7z.zip.tar 等多种格式,常用于高压缩率归档和完整性测试。

安装

bash
# Ubuntu 26 / Debian 13
apt install -y 7zip

创建归档

bash
# 创建 7z 归档
7z a archive.7z file directory

# 创建 ZIP 归档
7z a -tzip archive.zip file directory

# 排除匹配的文件或目录
7z a archive.7z directory '-xr!node_modules' '-xr!*.log'

查看、测试与解压

bash
# 查看内容并测试归档完整性
7z l archive.7z
7z t archive.7z

# 保留目录结构,解压到当前目录或指定目录
7z x archive.7z
7z x archive.7z -o/path/to/destination

# 仅解压归档中的指定文件或目录
7z x archive.7z path/in/archive
命令参数说明
参数说明
a添加文件并创建或更新归档。
l查看归档内容。
t测试归档完整性。
x保留目录结构解压。
e忽略目录结构,将文件解压到同一目录。
-t<格式>指定归档格式,例如 -tzip
-o<目录>指定解压目录,参数与目录之间不加空格。
-xr!<模式>递归排除匹配项。
-aos遇到同名文件时跳过。
-aoa遇到同名文件时直接覆盖。

7-Zip 的排除参数包含 ! 和通配符,建议将整个参数用引号包裹。解压外部归档前可先使用 l 查看内容,并使用 t 测试完整性。

基于 MIT 许可发布