error: invalid compressed data to inflate file #14: bad zipfile offset (local header sig): 221885

本文探讨了解压大文件时遇到的“invalid compressed data to inflate”错误,并提供了使用jar和7z工具的解决方案。

问题:

利用wget -c断点续传下载一个大文件

在解压文件时遇到以下报错

error:  invalid compressed data to inflate
file #14:  bad zipfile offset (local header sig):  22188522077
 

原因及解决:

据说是达到了命令行的缓存上限,所以遇到这样的报错

改用jar解压文件即可解决问题

jar xvf full.zip
 

参考链接:https://developer.ibm.com/answers/questions/212483/bad-zipfile-offset-local-header-sig-error-when-try/

 

================================================================================

 

然而,问题并没有解决。

我的文件较大,网上的说法是使用7z工具进行解压。

### 解决Linux系统中解压`dhtest_Linux_x86-x46.tar.gz`文件时出现的`gzip`压缩数据无效问题 在Linux系统中,当尝试使用`tar`命令解压`.tar.gz`文件时,如果遇到类似以下错误: ``` gzip: stdin: invalid compressed data -- length error tar: Child returned status 1 tar: Error exit delayed from previous errors ``` 这通常表明压缩文件可能已损坏、传输过程中被修改或未正确下载[^1]。 以下是解决此类问题的具体方法: #### 检查压缩文件完整性 首先需要确认压缩文件是否完整且未损坏。可以使用`file`命令检查文件类型,并结合`md5sum`或`sha256sum`验证文件的哈希值是否与官方提供的值一致。 ```bash file dhtest_Linux_x86-x64.tar.gz ``` 如果输出显示文件为有效的`gzip`压缩文件,则继续进行哈希校验。例如: ```bash md5sum dhtest_Linux_x86-x64.tar.gz ``` 将结果与官方提供的MD5值对比,确保文件未被篡改或损坏[^3]。 #### 确保正确的传输模式 如果压缩文件是从远程服务器下载的,必须确保使用的是二进制(Binary)传输模式,而非ASCII模式。这是因为ASCII模式可能会更改文件内容,导致压缩文件无法正常解压[^2]。可以通过以下方式验证: - 如果使用的是`scp`或`rsync`等工具,默认情况下它们会以二进制模式传输文件。 - 如果使用的是FTP客户端,请确保在传输前设置为二进制模式。 #### 尝试修复压缩文件 如果确认文件已损坏但仍然希望尝试修复,可以使用以下方法: 1. 使用`gzip`单独检查并尝试修复压缩文件: ```bash gzip -tv dhtest_Linux_x86-x64.tar.gz ``` 如果发现文件确实损坏,可以尝试重新下载文件。 2. 如果文件较大且部分数据仍可用,可以使用`zcat`或`dd`工具提取未损坏的部分。例如: ```bash zcat dhtest_Linux_x86-x64.tar.gz | tar xvf - ``` #### 替代解压工具 如果上述方法均无效,可以尝试使用其他工具解压文件。例如,`pigz`是一个多线程版本的`gzip`,可能对某些特定格式的压缩文件更友好: ```bash sudo apt-get install pigz pigz -d dhtest_Linux_x86-x64.tar.gz tar xvf dhtest_Linux_x86-x64.tar ``` #### 最后手段:重新获取文件 如果所有方法都无法解决问题,最可靠的解决方案是重新从可信来源下载文件,确保下载过程无中断且使用了正确的传输模式。 --- ### 示例代码 以下是一个完整的脚本示例,用于检查和解压`.tar.gz`文件: ```bash #!/bin/bash # 定义文件名 FILE="dhtest_Linux_x86-x64.tar.gz" # 检查文件是否存在 if [ ! -f "$FILE" ]; then echo "文件 $FILE 不存在,请检查路径!" exit 1 fi # 检查文件类型 file "$FILE" # 校验文件完整性(假设官方MD5值为1234567890abcdef) EXPECTED_MD5="1234567890abcdef" CALCULATED_MD5=$(md5sum "$FILE" | awk '{print $1}') if [ "$CALCULATED_MD5" != "$EXPECTED_MD5" ]; then echo "文件校验失败,请重新下载!" exit 1 else echo "文件校验通过,开始解压..." fi # 解压文件 tar xzvf "$FILE" ``` ---
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值