实战
gzip file.txt # → file.txt.gz(原文件被替换)
gunzip file.txt.gz # → file.txt(解压后压缩文件消失)
gzip -d file.txt.gz # 同 gunzip
保留原文件
gzip -k file.txt # → file.txt + file.txt.gz(都在)
gunzip -k file.txt.gz # → file.txt + file.txt.gz(都在)
不解压直接看 / 操作压缩内容
zcat file.txt.gz # 等同 cat
zless file.log.gz # 等同 less
zgrep "ERROR" file.log.gz # 在压缩文件里 grep
zdiff a.gz b.gz # 比较
zmore file.gz # 等同 more
这些 z 系列命令对运维超有用——查老日志不用先解压。
压缩级别
gzip -1 file.txt # 最快(最低压缩比)
gzip -9 file.txt # 最慢(最高压缩比)
gzip -6 file.txt # 默认(折中)
看压缩信息
gzip -l file.gz
# compressed uncompressed ratio uncompressed_name
# 1234 5678 78.2% file
校验
gzip -t file.txt.gz && echo OK
多文件分别压缩
gzip *.log # 每个 .log 单独压成 .log.gz
gzip -r logs/ # 递归压缩目录里每个文件
注意 gzip 不能打包多个文件成一个——那要用 tar。
跟其他工具组合
mysqldump db | gzip > db.sql.gz # 边导边压
zcat backup.gz | mysql db # 边读边导入
tar czf - folder | ssh remote 'cat > backup.tar.gz' # 边压边送
现代替代:zstd
sudo apt install zstd
zstd file.txt # → file.txt.zst(更快更小)
unzstd file.txt.zst
zstdcat file.zst # 不解压看
zstd 比 gzip 快得多且压缩比更好——新项目首选。
坑
gzip file会替换原文件——加-k保留- gzip 只压单文件——多文件用 tar 包了再 gzip(或直接
tar czf) - macOS 默认 gzip 较老——某些选项不一样