gzip -t 用于快速校验 .gz 文件完整性,无输出即正常;gzip -l 则显示压缩大小、原始大小、压缩率等元数据,二者结合可高效验证文件可用性。

用 gzip -t 可直接检测 .gz 文件是否损坏,再配合 gzip -l 获取压缩比率等详细信息。这两个命令轻量、可靠,无需解压即可完成验证和统计。
用 -t 选项快速校验完整性
执行 gzip -t file.gz,若无输出即表示文件结构完整、CRC 校验通过;一旦报错(如 gunzip: file.gz: invalid compressed data--format violated 或 unexpected end of file),说明文件已损坏——可能是传输中断、写入失败或磁盘坏道所致。
- 该测试仅读取压缩头与尾部 CRC,速度极快,适合批量检查
- 不支持嵌套格式(如 .tar.gz 的内部 tar 结构),只验证 gzip 层本身
- 对严重截断或魔数错误的文件能立即识别,但无法定位损坏位置
用 -l 选项查看压缩比率与元数据
运行 gzip -l file.gz 会输出五列信息:compressed(压缩后大小)、uncompressed(原始大小)、ratio(压缩比率,以 % 表示)、uncompressed_name(原始文件名)、method(压缩方法,通常为 defla)。
- ratio 为负值(如
-1.0%)说明该 .gz 文件未保存原始文件名或时间戳(用了-n选项压缩),不影响解压,但无法还原源名 - 若 uncompressed 列显示
????????,通常是文件头缺失或损坏导致原始大小不可读,此时-t很可能已失败 - 注意:该命令不校验数据内容,仅解析头部字段,因此通过
-l不代表文件可正常解压
结合使用更稳妥的检查流程
单靠 -l 不足以确认可用性,建议按顺序执行:
- 先跑
gzip -t file.gz,确保基础结构合法 - 再执行
gzip -l file.gz,观察 ratio 是否合理(例如文本类文件通常在 60–70%,二进制资源可能仅 10–30%) - 若
-t成功但解压时仍出错(如invalid distance too far back),说明损坏发生在压缩流中段,需用zcat file.gz >/dev/null全量读取测试
补充:对 .tar.gz 文件的特殊处理
gzip -t 和 gzip -l 只验证外层 gzip 封装,不检查内部 tar 是否损坏。若要确认整个归档可用,需额外运行:
-
gunzip -c file.tar.gz | tar t > /dev/null—— 解压并列出 tar 内容,任一环节失败即暴露问题 - 或分步:先
gzip -t file.tar.gz,再tar -tzf file.tar.gz > /dev/null(-t检查 tar 结构,-z表示经 gzip 压缩)











