2.5 压缩与打包详解

2.5 Linux 压缩与打包详解

前言

在 Linux 系统中,数据备份、文件传输、日志归档以及项目发布都离不开压缩与打包操作。

Linux 通常将「打包」与「压缩」作为两个独立过程:

  • 打包:将多个文件或目录合并为一个归档文件
  • 压缩:使用算法减小文件体积

虽然两者可以分开执行,但实际工作中通常会组合使用。


打包与压缩的区别

操作 作用 常用工具
打包(Archive) 将多个文件整合为一个文件 tar
压缩(Compress) 减少文件体积 gzip、bzip2、xz、zip

Linux 中最常见的归档格式:

格式 说明
.tar 仅打包,不压缩
.tar.gz / .tgz tar + gzip
.tar.bz2 tar + bzip2
.tar.xz tar + xz
.zip 打包与压缩一步完成

tar 命令

什么是 tar

tar(Tape Archive)最初用于磁带备份,如今已成为 Linux 系统中最常见的归档工具。

主要作用:

  • 文件打包
  • 文件归档
  • 数据备份
  • 配合压缩工具生成压缩包

基本语法

1
tar [选项] 归档文件 要打包的文件或目录

例如:

1
tar -cvf backup.tar mydir

常用参数

参数 作用
-c 创建归档
-x 解包
-v 显示详细过程
-f 指定归档文件
-z 使用 gzip 压缩
-j 使用 bzip2 压缩
-J 使用 xz 压缩
-t 查看归档内容
-C 指定解压目录
-r 向归档追加文件
--exclude 排除文件

创建归档文件

仅打包

1
tar -cvf archive.tar mydir/

生成:

1
archive.tar

仅归档,不压缩。


gzip 压缩

最常见的压缩方式。

1
tar -czvf archive.tar.gz mydir/

生成:

1
archive.tar.gz

bzip2 压缩

压缩率高于 gzip,但速度较慢。

1
tar -cjvf archive.tar.bz2 mydir/

生成:

1
archive.tar.bz2

xz 压缩

压缩率最高,但压缩和解压速度较慢。

1
tar -cJvf archive.tar.xz mydir/

生成:

1
archive.tar.xz

查看归档内容

无需解压即可查看压缩包内部文件。

1
tar -tvf archive.tar

查看 gzip 包:

1
tar -tvf archive.tar.gz

查看 xz 包:

1
tar -tvf archive.tar.xz

示例输出:

1
2
drwxr-xr-x root/root         0 2025-01-01 12:00 mydir/
-rw-r--r-- root/root 123 2025-01-01 12:00 mydir/test.txt

解压归档文件

解压到当前目录

1
tar -xzvf archive.tar.gz

解压到指定目录

1
tar -xzvf archive.tar.gz -C /target/path

解压单个文件

1
tar -xzvf archive.tar.gz path/to/file.txt

解压 bzip2 格式

1
tar -xjvf archive.tar.bz2

解压 xz 格式

1
tar -xJvf archive.tar.xz

tar 高级用法

排除文件

备份时忽略指定文件类型:

1
2
3
tar -czvf backup.tar.gz /home/user \
--exclude="*.tmp" \
--exclude="*.log"

仅归档目录内容

默认情况下:

1
tar -czvf backup.tar.gz mydir/

会包含目录本身。

如果只需要目录内部内容:

1
tar -czvf backup.tar.gz -C mydir .

向归档追加文件

仅支持未压缩的 tar 文件:

1
tar -rvf archive.tar file.txt

不支持:

1
2
3
archive.tar.gz
archive.tar.bz2
archive.tar.xz

管道备份

通过 SSH 直接发送到远程服务器:

1
tar -czvf - mydir | ssh user@remote "cat > backup.tar.gz"

gzip 与 gunzip

什么是 gzip

gzip 是 Linux 中最常见的压缩工具。

特点:

  • 只能压缩单个文件
  • 无法直接压缩目录
  • 通常配合 tar 使用

压缩文件

1
gzip file.txt

生成:

1
file.txt.gz

原文件会被删除。


解压文件

1
gunzip file.txt.gz

恢复为:

1
file.txt

保留原文件

1
gzip -c file.txt > file.txt.gz

查看压缩文件内容

无需解压即可查看:

1
zcat file.txt.gz

等价于:

1
gunzip -c file.txt.gz

压缩等级

gzip 支持 1~9 级压缩。

1
gzip -1 file.txt

最快,压缩率最低。

1
gzip -9 file.txt

最慢,压缩率最高。


zip 与 unzip

什么是 zip

zip 格式广泛应用于 Windows 与 Linux 之间的文件交换。

特点:

  • 打包与压缩一步完成
  • 跨平台兼容性好
  • 支持密码保护

安装

CentOS:

1
yum install zip unzip -y

压缩文件

1
zip archive.zip file1.txt file2.txt

压缩目录

1
zip -r archive.zip mydir/

参数说明:

1
-r

表示递归压缩目录。


解压文件

1
unzip archive.zip

解压到指定目录

1
unzip archive.zip -d /target/path

查看压缩包内容

1
unzip -l archive.zip

创建加密压缩包

1
zip -e secure.zip secret.txt

执行后会提示输入密码。


排除文件

1
2
3
zip -r backup.zip mydir/ \
-x "*.log" \
-x "*.tmp"

bzip2 工具

压缩

1
bzip2 file.txt

生成:

1
file.txt.bz2

解压

1
bunzip2 file.txt.bz2

特点

  • 压缩率高于 gzip
  • 速度较慢
  • 适合长期归档

xz 工具

压缩

1
xz file.txt

生成:

1
file.txt.xz

解压

1
unxz file.txt.xz

或:

1
xz -d file.txt.xz

特点

  • 压缩率极高
  • 压缩速度较慢
  • 常用于软件发布包

例如:

1
linux.tar.xz

常见压缩格式对比

格式 压缩率 压缩速度 解压速度 常用程度
gzip 非常常用
bzip2 较慢 较慢 常用
xz 很高 越来越常用
zip 跨平台常用

常用命令速查

tar

1
tar -cvf archive.tar dir/

创建归档

1
tar -czvf archive.tar.gz dir/

创建 gzip 压缩包

1
tar -cjvf archive.tar.bz2 dir/

创建 bzip2 压缩包

1
tar -cJvf archive.tar.xz dir/

创建 xz 压缩包

1
tar -xzvf archive.tar.gz

解压 gzip 包

1
tar -tvf archive.tar.gz

查看压缩包内容


gzip

1
gzip file.txt

压缩文件

1
gunzip file.txt.gz

解压文件

1
zcat file.txt.gz

查看压缩文件内容


zip

1
zip -r archive.zip dir/

压缩目录

1
unzip archive.zip

解压文件

1
unzip -l archive.zip

查看压缩包内容


总结

Linux 中最常见的压缩方案是:

1
tar + gzip

即:

1
.tar.gz

实际工作中的使用建议:

  • 日常备份:tar.gz
  • 长期归档:tar.xz
  • Windows 交互:zip
  • 单文件压缩:gzip

掌握 tar、gzip、zip 后,已经能够完成 Linux 环境下绝大多数文件归档、备份、迁移与压缩任务。


2.5 压缩与打包详解
https://blog.sh462li.top/2026/05/26/2.5 压缩与打包详解/
作者
SHAO
发布于
2026年5月26日
许可协议