gzip - 压缩和解压单个文件

gzip 使用 DEFLATE 算法压缩单个数据流。直接压缩文件时,默认用 .gz 文件替换原文件;需要保留原文件时应使用 -k-c

常用参数

  • -d--decompress:解压。
  • -k--keep:保留输入文件。
  • -c--stdout:把结果写到标准输出,保留输入文件。
  • -l--list:显示压缩文件信息。
  • -t--test:检查压缩数据完整性。
  • -1-9:从更快到更高压缩率。
  • -r--recursive:递归处理目录中的每个文件,不会创建目录归档。

使用示例

# 压缩并保留原文件
gzip -k report.txt
 
# 检查压缩文件
gzip -t report.txt.gz
 
# 查看压缩信息
gzip -l report.txt.gz
 
# 解压并保留 .gz 文件
gzip -dk report.txt.gz
 
# 解压到另一个文件
gzip -dc report.txt.gz > restored-report.txt

重定向会覆盖已有目标文件,最后一个示例执行前应确认 restored-report.txt 不存在或允许被替换。

压缩目录

gzip 本身不保存目录结构。需要把目录打包成单个压缩文件时,可结合 tar

tar -czf project.tar.gz project/

安全提示

  • 不要把压缩炸弹作为防护手段;它会消耗接收方或自身系统的磁盘、内存和 CPU,属于拒绝服务风险。
  • 解压不可信文件前应检查来源、压缩信息和可用磁盘空间,并在受限目录中处理。
  • -f 会强制覆盖或忽略部分安全检查,不应作为默认选项。
  • 完整性测试只能发现压缩数据损坏,不能证明内容可信或无恶意。

参考资料