一、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.tar

2. 使用 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 中灵活选择最适合自己的压缩方案,让备份、传输、部署都更加高效稳健 💼。


蓝易云
39 声望7 粉丝

蓝易云高防服务器:www.tsyvps.com