跳转到内容

gzip

gzip 是 Linux 系统中最常用的压缩工具之一,使用 DEFLATE 算法(结合 LZ77 和哈夫曼编码),以压缩速度快、兼容性好著称,生成 .gz 格式文件,通常和 tar 搭配形成 .tar.gz 或 .tgz 文件。

Terminal window
gzip [选项] 文件名...

gzip 本身只能压缩单个文件,处理目录时,通常先用 tar 工具打包,然后用 gzip 压缩。

1. 压缩选项

选项 说明
默认行为是压缩文件,不带参数
-k 保留原文件(默认删除原文件)
-c 将压缩结果输出到标准输出,不修改原文件,一般配合重定向使用
-f 强制压缩,即使目标文件已存在也覆盖
-r 递归压缩目录及其子目录中的所有文件
-1 至 -9 压缩级别,-1 最快但压缩率低,-9 最慢但压缩率高,默认 -6
--fast 快速压缩,相当于 -1
--best 最佳压缩,相当于 -9
--suffix=SUF 自定义压缩文件扩展名(默认 .gz)
-v 显示详细信息

2. 解压选项

选项 说明
-d 解压文件,等价于 gunzip
-k 解压时保留原压缩文件
-c 将解压结果输出到标准输出,一般配合重定向使用
-f 强制解压,覆盖已有文件
-t 测试压缩文件完整性
-l 列出压缩文件信息(原始大小、压缩大小等)
-v 显示详细信息

1. 压缩文件

Terminal window
# 压缩单个文件(默认删除原文件,生成 file.txt.gz)
gzip file.txt
# 压缩并保留原文件
gzip -k file.txt
# 最高压缩率(耗时较长)
gzip -9 -k file.txt
# 显示压缩详情(包括压缩率)
gzip -v file.txt

2. 解压缩文件

Terminal window
# 解压缩(默认删除 .gz 文件,恢复为 file.txt)
gzip -d file.txt.gz
# 或
gunzip file.txt.gz
# 解压缩并保留 .gz 文件
gzip -d -k file.txt.gz
# 或
gunzip -k file.txt.gz
# 显示解压缩详情
gzip -d -v file.txt.gz

3. 压缩/解压缩到标准输出

Terminal window
# 压缩文件并输出到指定文件(手动命名,保留原文件)
gzip -c file.txt > custom_name.gz
# 解压缩到标准输出,并重定向到新文件
gzip -d -c file.txt.gz > restored_file.txt
# 压缩后通过管道传输(例如直接备份到远程服务器)
gzip -c data.log | ssh user@server "cat > /backup/data.log.gz"

4. 目录压缩/解压缩处理

Terminal window
# 先打包再压缩
tar -cf file.tar directory/ # 创建归档
gzip file.tar # 压缩成 file.tar.gz
# 解压 .tar.gz 归档
gzip -d file.tar.gz # 得到 file.tar
tar -xf file.tar # 解开 tar 包

也可以一步完成,tar 中有专门调用 gzip 的选项 -z:

Terminal window
# 创建 .tar.gz 归档(先打包再压缩)
tar -czf file.tar.gz directory/
# 解压 .tar.gz 归档
tar -xzf file.tar.gz