压缩与归档命令
压缩与归档命令用于减小文件体积、合并多个文件以及备份数据,是系统管理和数据存储的常用工具。
zip - 压缩工具
zip 是 Linux 下常用的压缩工具,支持跨平台(Windows/macOS/Linux),生成 .zip 格式的压缩文件。与 gzip 不同,zip 可以同时压缩多个文件和目录,并保留文件权限和目录结构。
语法格式
zip [选项] 压缩文件名.zip 文件或目录...选项
-r | 递归压缩目录 | zip -r archive.zip mydir/ |
|---|---|---|
-q | 静默模式(不显示输出) | zip -q secret.zip file.txt |
-e | 加密压缩(设置密码) | zip -e secure.zip sensitive.txt |
-1~-9 | 压缩级别(1 最快压缩率最低,9 最慢压缩率最高) | zip -9 data.zip largefile |
-v | 显示详细压缩信息 | zip -v log.zip *.log |
-m | 压缩后删除原文件 | zip -m backup.zip old_data.txt |
-x | 排除指定文件 | zip archive.zip * -x "*.tmp" |
-FS | 同步更新压缩包(仅添加新 / 修改的文件) | zip -FS update.zip changed.txt |
-s | 分卷压缩(指定每卷大小,如 -s 100m) | zip -s 100m split.zip bigfile |
-T | 测试压缩包完整性 | zip -T archive.zip |
经典案例
zip archive.zip file1.txt file2.txt # 压缩多个文件
zip -r backup.zip /path/to/directory # 包含子目录
zip -e secure.zip secret.txt # 交互式输入密码
zip -r logs.zip /var/log/ -x "*.tmp" # 排除 .tmp 文件
zip -r test.zip test/ -x "test/1.txt" "test/2.txt" # 排除多个文件
zip -T archive.zip # 检查是否损坏注意事项
- 默认不删除原文件(
zip不会自动删除源文件,除非用-m) - Windows 兼容性:
zip格式在 Windows 上可直接打开,而.tar.gz需要额外工具 - 密码安全:
-P选项会暴露密码在命令行历史,建议用-e交互式输入 - 大文件压缩:
zip对超大文件(>4GB)支持不如7z或tar稳定
unzip - 解压 ZIP 格式压缩文件
unzip 是用于解压 .zip 格式压缩文件的工具,支持查看压缩包内容、解压到指定目录、选择性解压文件等功能。它是 zip 命令的配套工具。
语法格式
unzip [选项] 压缩包.zip [文件...] [-x 排除文件...] [-d 输出目录]选项
| 选项 | 描述 | 示例 |
|---|---|---|
-d dir | 解压到指定目录 | unzip data.zip -d /tmp |
-l | 仅列出压缩包内容(不解压) | unzip -l archive.zip |
-v | 详细模式(显示更多信息) | unzip -v archive.zip |
-o | 覆盖已存在文件(不提示) | unzip -o backup.zip |
-n | 不覆盖已存在文件 | unzip -n backup.zip |
-x files | 排除指定文件 | unzip data.zip -x "*.tmp" |
-P pwd | 使用密码解压(不安全) | unzip -P 1234 secret.zip |
-t | 测试压缩包完整性 | unzip -t archive.zip |
-j | 丢弃路径信息(所有文件解压到当前目录) | unzip -j flat.zip |
-q | 静默模式(不显示输出) | unzip -q silent.zip |
经典案例
# 基本解压
unzip archive.zip
# 解压到指定目录
unzip data.zip -d /path/to/target
# 查看压缩包内容
unzip -l archive.zip
# 只解压.txt文件
unzip archive.zip "*.txt"
# 排除.tmp文件
unzip archive.zip -x "*.tmp"
# 测试压缩包完整性
unzip -t archive.zipgzip - 文件压缩工具
gzip (GNU zip) 是 Linux 系统中常用的文件压缩工具,采用 LZ77 算法实现高效压缩,生成 .gz 后缀的压缩文件。
语法格式
gzip [选项] [文件...]
gunzip [选项] [文件.gz...]
zcat [文件.gz...]选项
| 选项 | 描述 | 示例 |
|---|---|---|
-d | 解压文件(等同于 gunzip) | gzip -d file.gz |
-c | 保留原始文件(输出到标准输出) | gzip -c file > file.gz |
-k | 保留原始文件(不删除) | gzip -k file |
-1~-9 | 压缩级别(1 最快压缩率最低,9 最慢压缩率最高) | gzip -9 largefile |
-v | 显示压缩 / 解压进度 | gzip -v data.log |
-t | 测试压缩文件完整性 | gzip -t backup.gz |
-l | 显示压缩文件信息 | gzip -l archive.gz |
-r | 递归处理目录 | gzip -r mydir |
-f | 强制覆盖输出文件 | gzip -f logfile |
经典案例
gzip filename.txt # 生成 filename.txt.gz 并删除原文件
gzip -k access.log # 保留原文件压缩
gzip -v *.log # 显示压缩进度
gzip -r /var/log/ # 注意:只压缩文件不打包目录结构
gzip -d file.gz # 解压缩
gunzip file.gz # 解压缩
zcat file.gz # 不解压查看内容
gunzip -c file.gz # 不解压查看内容WARNING
动态文件压缩可能会损坏文件内容。如音视频文件。
tar- 打包归档工具
tar(Tape Archive)是 Linux 下最常用的归档工具,用于打包多个文件/目录(不压缩),或结合 gzip/bzip2/xz 进行压缩。
语法格式
# 打包/压缩
tar [选项] 输出文件.tar[.gz|.bz2|.xz] 文件或目录...
# 解包/解压
tar [选项] 输入文件.tar[.gz|.bz2|.xz] [-C 目标目录]选项
| 选项 | 描述 | 示例 |
|---|---|---|
-c | 创建归档文件 | tar -cvf archive.tar dir/ |
-x | 解压归档文件 | tar -xvf archive.tar |
-f | 指定归档文件名(必须放在最后) | tar -cvf backup.tar /data |
-v | 显示详细过程 | tar -cvf logs.tar /var/log |
-z | 使用 gzip 压缩 / 解压(.tar.gz) | tar -czvf archive.tar.gz dir/ |
-j | 使用 bzip2 压缩 / 解压(.tar.bz2) | tar -cjvf archive.tar.bz2 dir/ |
-J | 使用 xz 压缩 / 解压(.tar.xz) | tar -cJvf archive.tar.xz dir/ |
-t | 查看归档内容(不解压) | tar -tvf archive.tar |
-r | 追加文件到归档 | tar -rvf archive.tar newfile.txt |
-u | 仅添加比归档中更新的文件 | tar -uvf archive.tar modified.txt |
--exclude | 排除指定文件 / 目录**(放在打包名后面)** | tar -cvf backup.tar --exclude="*.tmp" dir/ |
-C | 解压到指定目录 | tar -xvf archive.tar -C /target |
--auto-compress | 自动根据扩展名选择压缩方式 | tar -xvf archive.tar --auto-compress |
-p | 保留文件权限 | tar -pcvf archive.tar dir/ |
-k | 不覆盖已有文件 | tar -kxvf archive.tar |
经典案例
1. 基本打包(不压缩)
tar -cvf archive.tar /path/to/directory # 打包目录
tar -tvf archive.tar # 查看内容
tar -xvf archive.tar # 解包2. 压缩(gzip / bzip2 / xz)
# gzip 压缩(.tar.gz)
tar -czvf archive.tar.gz /path/to/directory
# bzip2 压缩(.tar.bz2)
tar -cjvf archive.tar.bz2 /path/to/directory
# xz 压缩(.tar.xz,压缩率最高但最慢)
tar -cJvf archive.tar.xz /path/to/directory3. 解压
# 自动检测压缩方式并解压
tar -xvf archive.tar.gz
# 解压到指定目录
tar -xvf archive.tar.gz -C /target/directory4. 排除某些文件
tar -czvf backup.tar.gz --exclude="*.log" /path/to/directory5. 追加文件到已有归档
tar -rvf archive.tar newfile.txt # 仅适用于未压缩的 .tar注意事项
-f必须放在最后,否则会报错 ❌tar -fc archive.tar /dir→ ✅tar -cvf archive.tar /dir-z/-j/-J仅用于压缩,解压时tar会自动检测tar默认覆盖文件,加-k可避免tar不能加密,需配合gpg或zip -e--exclude排除选项在Centos7系统中放在打包名后面或者最后都可以,其它的要放在打包名后面(*.tar.gz --exclude="*.log")
bzip2 - 块排序文件压缩工具
命令简介
bzip2 是一个高效的文件压缩工具,采用Burrows-Wheeler块排序压缩算法和霍夫曼编码,通常能生成比传统gzip更小的压缩文件。
语法格式
bzip2 [选项] [文件...]选项
| 选项 | 描述 | 示例 |
|---|---|---|
-d | 解压文件 | bzip2 -d file.bz2 |
-k | 保留原始文件 | bzip2 -k file |
-v | 显示压缩比信息 | bzip2 -v file |
-1到-9 | 设置压缩级别(默认9) | bzip2 -5 file |
经典案例
# 压缩文件并保留原始文件
bzip2 -k important.log
# 解压文件到当前目录
bzip2 -d archive.bz2注意事项
- 压缩后的文件会默认删除源文件(除非使用
-k选项) - 不支持压缩目录(需先使用tar打包)
bunzip2 - bzip2解压工具
命令简介
bunzip2 是bzip2 -d的等价命令,专门用于解压.bz2格式文件。
语法格式
bunzip2 [选项] [文件...]选项
| 选项 | 描述 | 示例 |
|---|---|---|
-k | 保留压缩文件 | bunzip2 -k file.bz2 |
-v | 显示详细信息 | bunzip2 -v file.bz2 |
经典案例
# 解压文件并保留压缩包
bunzip2 -k backup.bz2xz - LZMA压缩工具
命令简介
xz 使用LZMA2算法提供高压缩比,常用于软件包分发(如Linux内核镜像)。
语法格式
xz [选项] [文件...]选项
| 选项 | 描述 | 示例 |
|---|---|---|
-d | 解压文件 | xz -d file.xz |
-k | 保留原始文件 | xz -k file |
-9 | 最高压缩级别 | xz -9 file |
-T N | 使用N个线程 | xz -T4 file |
经典案例
# 多线程压缩大文件
xz -T8 -9 huge_file.db注意事项
- 高压缩级别会显著增加内存使用量
- 解压时需要兼容的xz版本
unxz - xz解压工具
命令简介
unxz 是xz -d的等价命令,专门用于解压.xz格式文件。
语法格式
unxz [选项] [文件...]选项
| 选项 | 描述 | 示例 |
|---|---|---|
-k | 保留压缩文件 | unxz -k file.xz |
-T N | 多线程解压 | unxz -T4 file.xz |
7z - 7-Zip归档工具
命令简介
7z 支持多种压缩算法(LZMA/LZMA2等),可创建加密压缩包。
语法格式
7z <命令> [选项] 归档文件 [文件...]选项
| 选项 | 描述 | 示例 |
|---|---|---|
a | 添加文件到压缩包 | 7z a archive.7z file |
x | 完整路径解压 | 7z x archive.7z |
-p | 设置密码 | 7z a -p123 archive.7z file |
-mhe=on | 加密文件名 | 7z a -mhe=on -p123 archive.7z |
经典案例
# 创建加密压缩包
7z a -psecret -mhe=on confidential.7z /data/p7zip - 7z命令行版本
命令简介
p7zip 是7-Zip的POSIX版本,提供7za命令(功能与7z类似)。
rar - RAR压缩工具
命令简介
rar 是专有压缩格式工具,需单独安装,支持分卷压缩。
语法格式
rar <命令> [选项] 归档文件 [文件...]选项
| 选项 | 描述 | 示例 |
|---|---|---|
a | 添加文件 | rar a backup.rar file |
x | 完整路径解压 | rar x backup.rar |
-p | 设置密码 | rar a -p123 backup.rar |
-vNNm | 分卷压缩(单位MB) | rar a -v100m archive.rar bigfile |
unrar - RAR解压工具
命令简介
unrar 专门用于解压RAR格式文件。
语法格式
unrar <命令> [选项] 归档文件选项
| 选项 | 描述 | 示例 |
|---|---|---|
x | 完整路径解压 | unrar x backup.rar |
e | 解压到当前目录 | unrar e backup.rar |
-p | 密码解压 | unrar x -p123 backup.rar |
zstd - Facebook实时压缩工具
命令简介
zstd 提供高速压缩/解压,适合需要快速IO的场景。
语法格式
zstd [选项] [文件]选项
| 选项 | 描述 | 示例 |
|---|---|---|
-d | 解压文件 | zstd -d file.zst |
-T N | 多线程操作 | zstd -T4 file |
--fast=N | 速度优先模式 | zstd --fast=3 file |
经典案例
# 快速压缩日志文件
zstd --fast=3 -T8 access.loglbzip2 - 并行bzip2实现
命令简介
lbzip2 是bzip2的多线程版本,显著提升大文件压缩速度。
语法格式
lbzip2 [选项] [文件...]选项
| 选项 | 描述 | 示例 |
|---|---|---|
-n N | 使用N个处理器 | lbzip2 -n4 bigfile |
-d | 解压文件 | lbzip2 -d file.bz2 |
经典案例
# 使用所有CPU核心压缩
lbzip2 -n $(nproc) database.sql注意事项
- 压缩结果与标准bzip2完全兼容
- 建议用于1GB以上的大文件
