如何提取损坏的压缩包文件
作者:matrix 发布时间:2020-05-19 分类:零零星星
有些压缩包损坏之后无法正常解压,尝试修复压缩包之后再忽略错误解压其实就可以提取出所有文件了,但是损坏的文件取出来不能保证完整性。
待修复文件: 华为主题压缩包 3.zip
尝试提取/unlock/manifest.xml
文件
方法1. windows下手动操作
windows下尝试使用7z直接打开会提示错误,看不到里面任何内容。
- 先用WinRAR修复压缩包:
工具
->修复压缩文件
- 用7zip工具打开修复之后的压缩包,然后点击顶部的
提取
按钮就可以取出来啦
方法2. *unix下执行脚本
尝试解压提取出bla-bla.zip所有文件,资料会提取到相同位置的bla-bla_repaired
目录。
macos下测试可用。
gist: https://gist.github.com/Hootrix/1d5d96d95dc5238e170405c77d54f02f
#!/bin/bash
file=$1
dir=`dirname $file`
# 检测文件存在
if [ ! -f $file ];then
echo "404: file not found"
exit 1
fi
# 检测zip命令
if ! type "zip" > /dev/null; then
echo "500: command not found. Please execute install > apt-get/yum install zip"
exit 1
fi
file_name=`echo $file | awk -F . '{print $1}'|awk -F '/' '{print $(NF)}'` # 截取文件名
save_path=$dir/"$file_name"_repaired # 修复后提取存放路径
echo -e "extract file: $file"
echo -e "processing... ... "
repaired_zip_package=$dir/"$file_name"_repaired.zip #修复后的压缩包路径
zip -FF $file --out $repaired_zip_package && unzip $repaired_zip_package -d $save_path
sleep 1;unlink $repaired_zip_package
echo -e " \e[0;32msuccessful: $save_path\e[0m"
参考:
https://superuser.com/questions/23290/terminal-tool-linux-for-repair-corrupted-zip-files