主题
压缩与归档
常见格式的选择:
| 格式 | 特点 |
|---|---|
.zip | 跨平台兼容性好,适合交换文件。 |
.tar.gz | Linux 中常用,兼顾压缩速度与压缩率。 |
.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 测试完整性。
