92

我正在运行一个 android 4.0.3 设备,我想提取由以下创建的备份文件:

adb backup -f ~/data.ab -noapk app.package.name

上面的行在 CMD(windows)内工作,我能够在“~”目录中获取 data.ab 文件。

我不能做的是使用 CMD 提取该文件。我尝试了以下两种方法。

dd if=data.ab bs=1 skip=24 | openssl zlib -d | tar -xvf -

dd if=data.ab bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" | tar -xvf -

我收到以下错误

错误

我尝试通过 CYGWIN 提取它,但是我也失败了。

错误

我应该在哪里进行提取?我的命令提示符应该在哪个目录中?有什么见解吗?

4

2 回答 2

100

根据https://android.stackexchange.com/a/78183/239063,您可以在 Linux 中运行单行命令以添加适当的 tar 标头以提取它。

( printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" ; tail -c +25 backup.ab ) |  tar xfvz -

backup.ab替换为文件的路径。

于 2017-09-30T07:15:54.150 回答
66

我也不得不解压缩一个.ab-file,并在寻找答案时找到了这篇文章。我建议的解决方案是Android Backup Extractor,这是一款适用于 Windows、Linux 和 Mac OS 的免费 Java 工具。

如果遇到问题,请务必查看自述文件。.ab如果您的-file 受密码保护,您可能需要下载更多文件。

用法:
java -jar abe.jar [-debug] [-useenv=yourenv] unpack <backup.ab> <backup.tar> [password]

例子:

假设您有一个test.ab不受密码保护的文件,您正在使用 Windows 并希望.tar调用生成的 -Archive test.tar。那么你的命令应该是:

java.exe -jar abe.jar unpack test.ab test.tar ""

于 2016-05-30T15:54:36.270 回答