我需要你们的帮助,因为我不知道adb backup的错误是什么。
我想在没有root的情况下备份我的三星Galaxy S3 LTE(GT-I9305)。我用Google搜索并发现了使用SDK Manager的完整Android备份。我安装了所有我需要的东西,如Java Development Kit 8版本66(JDK 8u66 x64)和包含SDK Manager的Android Studio。然后他们很伤心我应该下载谷歌USB驱动程序。我下载了但没有发生任何事。我认为它现在应该可以工作然后我转到C:\ Users \ MYNAME \ AppData \ Local \ Android \ sdk \ platform-tools并按住Shift键左键单击adb。然后我点击“在这里打开命令窗口”。在此之后我输入“adb devices”并说:
附加设备列表
3204cfaaf8611199设备
然后我输入:
adb backup -apk -shared -all -f C:\Users\NAME\backup.ab
它说
现在解锁您的设备并确认备份操作。
我这样做了,我的智能手机打开了“完全备份”,然后我就可以为备份设置密码了。我不需要密码,我只需点击“备份我的数据”然后它回到我的主屏幕并说“开始备份...”作为祝酒消息,并在此之后立即说“备份完成”并创建了一个40字节的备份文件。我不知道我现在该做什么。
答案 0 :(得分:38)
不是试图找到旧版本的adb,而是更容易为 adb backup 的参数添加引号:
adb backup "-apk -shared -all -f C:\Users\NAME\backup.ab"
答案 1 :(得分:8)
正确调用adb
的行需要在我这边看起来像这样:
adb backup "-apk -obb -shared -all -system" -f phone-20180522-120000.adb
此行适用于Linux,但也适用于Windows和OS-X。对于Linux(可能还有OS-X),您可以使用如下脚本,它会自动为文件分配时间戳:
adb backup "-apk -obb -shared -all -system" -f "${PHONE:-phone}-`date +%Y%m%d-%H%M%S`.adb`"
重要执行备份后,请验证您的数据!在我这边,有时会出现文件的一些损坏(我怀疑这是我的电脑,因为我只用
adb
观察到这些错误。)这是我使用的
check
指令:set -o pipefail for a in *.adb; do echo "$a"; dd if="$a" bs=24 skip=1 | zlib-flate -uncompress | tar tf - >/dev/null; echo "ret=$?"; done
它应显示
ret=0
,但它确实显示。
- 如果您看到
inflate: data: invalid code lengths set
您的存档已损坏且很可能无法恢复!- 如果您看到
tar: Unexpected EOF in archive
您的备份可能可用(所有备份都以这种方式结束,我不知道原因)。- 即使您只看到
ret=0
,也可能会发现仍未阻止恢复的未发现错误。- 明确缺少
adb verify
命令,以验证备份的正确性!
我发布此更新,因为所有其他答案都有帮助,但不完全是最后的细节。 (与完整引号一起使用时,已完成备份,但称为backup.ab
)
这是我的环境:
完整的程序是(以防万一有人偶然发现这不知道需要什么):
adb
(在Ubuntu上:sudo apt-get install android-tools-adb
)adb devices
- 您应该会看到XXXXXXXXXXXX unauthorized
OK
。首先移动阻碍窗口。adb devices
- 您应该会看到XXXXXXXXXXXX device
之类的内容
ANDROID_SERIAL=XXXXXXXXXXXX
。)现在运行adb backup
,如上所示。根据需要更改文件。
注意:
adb help
显示了adb backup
显然adb backup
并未完全备份所有内容!
我查看了备份(cd X && dd if=../XXXX.adb bs=24 skip=1 | zlib-flate -uncompress | tar xf -
),但未找到所有已安装的应用程序。
我能找到的是(注意这个列表不完整):
shared/0
shared/1
apps/
- 许多应用(例如Google身份验证器)丢失 apps/com.android.providers.calendar/db/calendar.db
(可能)我无法找到的内容(请注意此列表不完整):
share/1
下面显示的更多。例如,移动到SD的应用程序。)结论:
adb backup
可能会创建损坏的备份,这可能会被忽视。因此,要么检查备份,要么经常进行备份,并假装足够幸运,以免所有备份都损坏。adb backup
,您可以获得大部分宝贵数据的备份,例如相机图片等。但是打开包装可能有点困难。adb backup
不足以完成手机的完整备份。adb backup
不足以备份您的SD卡,如果它已经中断,您可以将其替换为新内容并恢复内容。这太伤心了!PS:错字" Forth"不是偶然的。
PPS:zlib-flate
可以在Ubuntu 18.04上的qpdf
包中找到
答案 2 :(得分:5)
这只是使用Ubuntu 15.10(" wily")来备份运行Android 6.0.1版本的Galaxy SM-G900V。
安装使用:
sudo apt-get install android-tools-adb
然后我从命令行运行以下命令(没有' sudo'):
adb backup -apk -shared -all -f backup.adb
结果:
user@hostname:~/droid$ ls -lah
total 1.2GB
drwxrwxr-x 2 user user 4.0BK Mar 6 18:43 .
drwxr-xr-x 52 user user 4.0KB Mar 6 17:40 ..
-rw-r----- 1 user user 1.2GB Mar 6 18:29 backup.ab
谢谢你" NG"。我开始认为我的手机已被塞住了。
忘记添加:运行adb版本:Android Debug Bridge版本1.0.31
答案 3 :(得分:3)
问题是您的PC的adb版本。使用adb 版本1.0.31 ,备份/恢复将成功。
有关详情:https://android.stackexchange.com/questions/83080/adb-backup-creates-0-byte-file-prompts-for-current-backup-password-even-though 和How to downgrade my SDK Version?
如果您的设备的adb版本低于1.0.31,那么您必须在PC上使用1.0.31的adb版本。 adb 1.0.32+的版本打破了向后兼容性。资料来源:Issue 208337
答案 4 :(得分:3)
似乎并非所有应用都可以备份。 Android显然允许应用禁用备份:(
https://developer.android.com/guide/topics/manifest/application-element.html(搜索allowbackup)
答案 5 :(得分:1)
以防万一仍然有人遇到麻烦-在Windows中,我发现只在目录两边加上引号,例如“ C:\ Users \ NAME \ backup.ab”即可。
答案 6 :(得分:0)
adb backup -all
为我工作了一段时间,然后冻结了。使用NG给出的所有选项提示我解锁并确认,但随后立即退出而没有给我机会。单独使用-system
会产生46字节的无用“备份”。
答案 7 :(得分:0)
我找到了这个解决方案:
adb backup -apk -shared -all -f "<path-where-the-backup-will-be-created>.ab"
并恢复:
adb restore "<path-where-the-backup-is>.ab"