"GNU zip" 的缩写,是一个用于压缩或解压缩文件的命令行工具,采用 DEFLATE 压缩算法,能有效减小文件体积,常用于备份、传输文件或节省存储空间。
该命令会将原始文件压缩为 .gz 后缀的压缩文件,并默认删除原始文件(可通过选项保留),支持批量压缩多个文件,但不支持压缩目录(需配合 tar 使用)。
gzip [选项] <文件1> <文件2> ...常用选项
-d:"decompress",解压缩.gz格式的压缩文件,例如gzip -d data.txt.gz将data.txt.gz解压缩为data.txt并删除压缩文件。-k:"keep",压缩或解压缩后保留原始文件,例如gzip -k report.pdf压缩后同时保留report.pdf和report.pdf.gz,默认情况下原始文件会被删除。-c:"stdout",将压缩/解压缩结果输出到标准输出(不修改原始文件),例如gzip -c logs.txt > logs.txt.gz压缩内容并通过重定向保存为压缩文件,原始文件不变。-v:"verbose",显示压缩/解压缩的详细信息(包括压缩率),例如gzip -v archive.tar会输出archive.tar: 65.4% -- replaced with archive.tar.gz,便于查看压缩效果。-1至-9:指定压缩级别(1 最快但压缩率最低,9 最慢但压缩率最高,默认级别为 6),例如gzip -9 largefile.dat以最高压缩率压缩文件,适合对存储空间要求高的场景。-t:"test",测试压缩文件的完整性,例如gzip -t backup.gz检查backup.gz是否损坏,无输出表示文件正常,错误则提示损坏。-r:"recursive",递归压缩目录下的所有文件(仅压缩文件,不压缩目录本身),例如gzip -r docs/会压缩docs/及其子目录下的所有文件,每个文件生成对应的.gz压缩文件。
参考示例
示例1:基本压缩单个文件 执行
gzip data.csv,将data.csv压缩为data.csv.gz,并删除原始文件data.csv,适合临时压缩不常用的文件。示例2:解压缩文件并保留压缩包 执行
gzip -d -k backup.tar.gz,将backup.tar.gz解压缩为backup.tar,同时保留原始压缩包backup.tar.gz,便于后续再次使用压缩包。示例3:批量压缩多个文件并显示详情 执行
gzip -v *.log,压缩当前目录下所有.log文件,每个文件生成对应的.gz压缩文件,并显示每个文件的压缩率,例如access.log: 78.2% -- replaced with access.log.gz。示例4:压缩文件并保留原始文件 执行
gzip -k -6 report.txt,以默认级别6压缩report.txt,生成report.txt.gz并保留原始文件,兼顾压缩效率和原始文件可用性。示例5:通过管道压缩并保存输出 执行
cat largefile.txt | gzip -c > largefile.txt.gz,先读取largefile.txt内容,通过管道传递给gzip压缩,再将结果重定向保存为largefile.txt.gz,原始文件不变,适合处理正在被使用的文件(避免占用文件锁)。示例6:测试压缩文件完整性 执行
gzip -t important.gz,检查important.gz是否损坏,若文件正常则无输出,若损坏则提示gzip: important.gz: invalid compressed data--format violated,适合验证下载或传输后的压缩文件。示例7:递归压缩目录下的所有文件 执行
gzip -r -v /var/log/,递归压缩/var/log/目录及其子目录下的所有文件,每个文件生成.gz压缩文件,并显示压缩详情,适合日志文件的批量归档。示例8:解压多个压缩文件 执行
gzip -d *.gz,解压缩当前目录下所有.gz格式的文件,每个压缩文件对应生成原始文件,并删除压缩包,适合批量恢复压缩的文件。
注意:
gzip只能压缩单个文件,无法直接压缩目录。若需压缩目录,需先使用tar打包目录为单个文件,再用gzip压缩(例如tar -cf archive.tar docs/ && gzip archive.tar,或直接使用tar -zcf archive.tar.gz docs/一步完成)。