Ubuntu下如何检测非压缩.tar归档文件是否损坏
非压缩.tar归档解包问题解答
对.tar格式归档执行解包操作时,可能抛出如下报错:
tar: Unexpected EOF in archive tar: rmtlseek not stopped at a record boundary tar: Error is not recoverable: exiting now
非压缩.tar文件的完整性校验方法
和.tar.gz等带压缩层的格式不同,普通非压缩.tar没有内置CRC校验字段,可通过以下方法判断文件是否损坏:
- 遍历结构测试:执行
tar -tvf 待校验归档.tar,命令会完整遍历整个归档的存储结构,逐次读取每个条目的文件头、对应内容块,不会执行实际的磁盘写出操作。如果能顺利输出所有归档条目列表、无报错,即可判定归档结构完整;如果中途抛出EOF、记录边界类报错,说明归档存在截断、结构损坏。 - 源内容一致性校验:如果持有归档的原始生成目录,可执行命令
tar -c -f - 原始目录 | cmp - 待校验归档.tar,逐字节对比重新生成的归档和现有归档的内容,两者完全匹配即可证明现有归档无损坏。 - 注意:普通非压缩.tar没有内置冗余校验逻辑,无法单独定位单个条目的损坏程度,只能通过全量遍历判断归档整体完整性。
已显示处理完成的文件解压状态判定
可以确认:终端显示已处理ebd_sampling_relFeb-2021.txt.gz且程序继续向后执行,代表该文件已经被完整正常解压。
tar的执行逻辑为按存储顺序逐条目处理:每完成一个条目的全量读取、磁盘写出,才会将该文件名打印到终端,再移动到下一个条目位置读取。本次报错出在已处理条目之后的归档区域,本质是归档在传输、存储过程中被截断,缺失了后续存储块,没有到达tar要求的结束记录边界,因此触发了不可恢复错误。
内容的提问来源于stack exchange,提问作者Sulphur
相关产品推荐
相关产品推荐

