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 -cvf backup.tar mydir
|
常用参数
| 参数 |
作用 |
-c |
创建归档 |
-x |
解包 |
-v |
显示详细过程 |
-f |
指定归档文件 |
-z |
使用 gzip 压缩 |
-j |
使用 bzip2 压缩 |
-J |
使用 xz 压缩 |
-t |
查看归档内容 |
-C |
指定解压目录 |
-r |
向归档追加文件 |
--exclude |
排除文件 |
创建归档文件
仅打包
1
| tar -cvf archive.tar mydir/
|
生成:
仅归档,不压缩。
gzip 压缩
最常见的压缩方式。
1
| tar -czvf archive.tar.gz mydir/
|
生成:
bzip2 压缩
压缩率高于 gzip,但速度较慢。
1
| tar -cjvf archive.tar.bz2 mydir/
|
生成:
xz 压缩
压缩率最高,但压缩和解压速度较慢。
1
| tar -cJvf archive.tar.xz mydir/
|
生成:
查看归档内容
无需解压即可查看压缩包内部文件。
查看 gzip 包:
查看 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 -c file.txt > file.txt.gz
|
查看压缩文件内容
无需解压即可查看:
等价于:
压缩等级
gzip 支持 1~9 级压缩。
最快,压缩率最低。
最慢,压缩率最高。
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
| unzip archive.zip -d /target/path
|
查看压缩包内容
创建加密压缩包
1
| zip -e secure.zip secret.txt
|
执行后会提示输入密码。
排除文件
1 2 3
| zip -r backup.zip mydir/ \ -x "*.log" \ -x "*.tmp"
|
bzip2 工具
压缩
生成:
解压
特点
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 包
查看压缩包内容
gzip
压缩文件
解压文件
查看压缩文件内容
zip
压缩目录
解压文件
查看压缩包内容
总结
Linux 中最常见的压缩方案是:
即:
实际工作中的使用建议:
- 日常备份:
tar.gz
- 长期归档:
tar.xz
- Windows 交互:
zip
- 单文件压缩:
gzip
掌握 tar、gzip、zip 后,已经能够完成 Linux 环境下绝大多数文件归档、备份、迁移与压缩任务。