一、Linux 常见压缩软件概览 🧩
在 Linux 下,压缩通常分两步:
1)把很多文件打包成一个归档;2)对归档进行压缩。
常用工具主要有:<font color="red">tar、gzip、bzip2、xz、zip、7z、zstd</font> 等。
二、常见压缩工具对比表 📊
| 工具 | 文件后缀 | 典型用途 | 压缩率 | 速度(相对) | 特点概述 |
|---|---|---|---|---|---|
| <font color="red">tar</font> | .tar | 打包多个文件/目录(本身不压缩) | 无 | 很快 | 归档工具,常与 gzip/xz 等组合 |
| <font color="red">gzip</font> | .gz / .tar.gz | 日志压缩,通用场景 | 中等 | 较快 | 历史久、兼容性好 |
| <font color="red">bzip2</font> | .bz2 / .tar.bz2 | 对压缩率有要求的场景 | 高 | 较慢 | 压缩率比 gzip 高 |
| <font color="red">xz</font> | .xz / .tar.xz | 发行包、源码包压缩 | 很高 | 较慢 | 压缩率优秀,CPU 占用偏高 |
| <font color="red">zip</font> | .zip | 跨平台传输,与 Windows 兼容 | 中等 | 中等 | 单文件即可解压,含目录结构 |
| <font color="red">7z</font> | .7z | 极高压缩率需求 | 很高 | 中等 | 功能丰富,支持多种算法 |
| <font color="red">zstd</font> | .zst / .tar.zst | 现代服务器、软件包压缩 | 高 | 很快 | 压缩率与速度兼顾,现代发行版广用 |
三、tar:Linux 归档核心工具
1. 打包并使用 gzip 压缩
tar -czvf backup.tar.gz /data解释:
tar:归档命令,本身只负责“打包”。-c:创建新归档(create)。-z:通过 <font color="red">gzip</font> 压缩(生成.gz)。-v:显示详细过程(verbose),方便查看当前打包到哪里。-f backup.tar.gz:指定输出文件名。/data:要打包的目录或文件,可以是多个路径。
2. 解压 .tar.gz
tar -xzvf backup.tar.gz -C /tmp/recover解释:
-x:解包(extract)。-z:表示归档经过 gzip 压缩。-C /tmp/recover:解压到指定目录,避免污染当前目录。
四、gzip:经典压缩工具
1. 压缩单个文件
gzip access.log解释:
gzip access.log:将access.log压缩为access.log.gz。- 压缩后原文件会被替换,如需保留原文件可加
-k(部分版本支持):
gzip -k access.log-k:保留原始文件(keep)。
2. 解压 .gz 文件
gunzip access.log.gz解释:
gunzip:与gzip -d等价,用于解压。- 解压后生成原始文件
access.log。
五、bzip2 与 xz:追求更高压缩率
1. 使用 bzip2 压缩
bzip2 logs.tar解释:
- 将
logs.tar压缩为logs.tar.bz2。 - 原始文件默认删除,如需保留可使用
-k:
bzip2 -k logs.tar2. 使用 xz 压缩
xz -z -k backup.tar解释:
xz:高压缩率工具,常用于.tar.xz格式。-z:压缩(compress),默认行为,可省略。-k:保留原始文件backup.tar。- 输出为
backup.tar.xz,压缩率通常高于 gzip、bzip2。
六、zip/unzip:跨平台首选 📦
1. 创建 zip 压缩包
zip -r project.zip project/解释:
zip:压缩并打包为.zip文件。-r:递归处理目录(包含子目录)。project.zip:输出文件名。project/:需要打包的目录。
2. 解压 zip
unzip project.zip -d /opt/project解释:
unzip:解压.zip文件。-d /opt/project:指定解压目标目录。.zip内部通常包含完整目录结构,适合在不同系统之间传输。
七、7z:高压缩率与多格式支持
7z a archive.7z /data解释:
7z:命令行工具,使用 7-Zip 引擎。a:添加(add),表示创建压缩包并加入文件。archive.7z:目标压缩文件。/data:要压缩的目录。
7z 支持多种算法和格式,适合对压缩率要求很高的场景。
八、zstd:现代高性能压缩工具 ⚡
<font color="red">zstd(Zstandard)</font> 是近年来广泛使用的压缩算法,在很多现代发行版、容器镜像和软件包格式中都能看到 .zst 或 .tar.zst。它的目标是:在接近 xz 压缩率的同时,提供接近或优于 gzip 的速度。
1. 基本压缩命令
zstd logfile解释:
zstd logfile:将logfile压缩为logfile.zst。- 默认压缩级别通常为中等,兼顾速度与压缩率。
2. 指定压缩级别并保留原文件
zstd -k -19 database.dump解释:
-k:保留原始文件。-19:使用较高压缩级别(数字越大压缩越高,但越耗时、越占 CPU)。- 输出为
database.dump.zst,适合“写一次,看很多次”的备份场景。
3. 解压 .zst 文件
zstd -d backup.tar.zst解释:
-d:解压(decompress)。- 解压后得到
backup.tar,可再配合tar -xvf还原文件。
九、压缩工作流程思维导图(文字版)🧠
[确定需求]
├─ 需要最高压缩率? → 选择 <xz>/<7z>/<zstd高等级>
├─ 需要兼顾速度? → 选择 <gzip>/<zstd默认>
├─ 需要跨平台? → 选择 <zip>
└─ 只打包不压缩? → 使用 <tar> 单独归档
↓
[选择工具与参数]
↓
[执行压缩命令]
↓
[验证压缩包(解压测试/校验大小)]
↓
[投入正式使用或加入备份脚本]十、实战选型建议 ✅
- 备份大量文本日志:优先考虑 <font color="red">gzip 或 zstd</font>,压缩/解压速度快。
- 发布源码包、系统镜像:适合使用 <font color="red">tar.xz 或 tar.zst</font>,空间利用率高。
- 与 Windows 用户频繁交换文件:使用 <font color="red">zip</font> 最方便。
- 对磁盘空间极度敏感:可尝试 <font color="red">7z</font> 或高等级 <font color="red">zstd</font>。
掌握这些工具及其基本命令,就能在 Linux 中灵活选择最适合自己的压缩方案,让备份、传输、部署都更加高效稳健 💼。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。