一、压缩原理
Linux 下的压缩工具核心是通过数据编码算法,将文件中的重复信息用更短的符号表示,从而减少文件体积。不同算法的设计目标不同,因此在压缩率和速度上有明显差异:
- gzip:基于 DEFLATE 算法(LZ77 + Huffman 编码),在速度和压缩率之间取得平衡,适合日常通用场景。
- bzip2:使用 Burrows-Wheeler 变换,压缩率比 gzip 更高,但压缩和解压速度较慢。
- xz:采用 LZMA2 算法,压缩率是三者中最高的,但耗时也最长,适合对大文件进行归档存储。
二、常用命令行工具
-
gzip / gunzip
# 压缩文件(原文件会被删除,生成 filename.gz) gzip filename # 解压 .gz 文件 gunzip filename.gz -
tar(归档 + 压缩)
tar本身是归档工具,可结合不同压缩算法生成压缩包:# 归档并以 gzip 压缩 tar -czvf archive.tar.gz dirname # 归档并以 bzip2 压缩 tar -cjvf archive.tar.bz2 dirname # 归档并以 xz 压缩 tar -cJvf archive.tar.xz dirname # 解压 .tar.gz 文件 tar -xzvf archive.tar.gz # 解压 .tar.bz2 文件 tar -xjvf archive.tar.bz2参数说明:
-c:创建新的归档文件-x:从归档文件中提取文件-z:使用 gzip 压缩-j:使用 bzip2 压缩-J:使用 xz 压缩-v:显示详细过程-f:指定归档文件名
三、性能比较
| 工具 | 速度 | 压缩率 | 适用场景 |
|---|---|---|---|
| gzip | 快 | 中等 | 通用日常压缩 |
| bzip2 | 较慢 | 较高 | 对压缩率有要求的场景 |
| xz | 最慢 | 最高 | 大文件归档存储 |