Adb备份不起作用

时间:2015-12-27 15:49:01

标签: android cmd sdk backup adb

我需要你们的帮助,因为我不知道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字节的备份文件。我不知道我现在该做什么。

8 个答案:

答案 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命令,以验证备份的正确性!
  •   

FYI

我发布此更新,因为所有其他答案都有帮助,但不完全是最后的细节。 (与完整引号一起使用时,已完成备份,但称为backup.ab

这是我的环境:

  • 操作系统:Ubuntu 16.04
  • 电话:Android 7.0
  • 亚行:1.0.32

完整的程序是(以防万一有人偶然发现这不知道需要什么):

  • Zeroth:安装adb(在Ubuntu上:sudo apt-get install android-tools-adb
  • 首先:Enable USB debugging mode on the phone
  • 第二步:使用USB数据线将手机连接到电脑的USB(仅限充电线是不够的)
  • 请注意,Ubuntu Phone Manager可能会显示并询问您手机的PIN码。如果发生这种情况,你不需要它,关闭它。
  • 第三:运行adb devices - 您应该会看到XXXXXXXXXXXX unauthorized
  • 之类的内容
  • 手机上一段时间后会显示一条消息,询问是否有USB调试权限
    • 允许这一次。出于安全原因,您不应自动信任计算机,因为指纹很容易伪造。
    • 请注意,如果某些内容妨碍了此确认窗口的单个像素(例如某些辅助功能按钮),则无法点按OK。首先移动阻碍窗口。
  • Forth:现在再次运行adb devices - 您应该会看到XXXXXXXXXXXX device之类的内容
    • 如果显示多行,则您将多部手机连接到计算机。简单的方法是拔掉所有不想备份的人。 (复杂的方法是设置环境变量ANDROID_SERIAL=XXXXXXXXXXXX。)

现在运行adb backup,如上所示。根据需要更改文件。

  • 这会打开一个窗口,要求备份权限。
  • 请勿在备份时关闭备份窗口。当我尝试这个时,备份停止了,结果存档被破坏了。
  • 您可以提供密码来加密备份。我没有关于密码安全性的任何信息。但很有可能,如果您忘记了密码,则无法恢复备份。
  • 我不知道如何将这样的备份恢复到其他手机。我甚至从未尝试过恢复,所以我也无法帮助。

注意:

  • adb help显示了adb backup
  • 的所有可能选项
  • 备份前关闭手机上所有打开的应用程序。我不知道这是否需要,但肯定不会受到伤害。
  • 备份运行时保持手机独立。我不知道这是否需要,但肯定不会受到伤害。
  • 不要急躁。留出足够的时间备份。在我身边,我看到了大约100 MB /分钟(YMMV)的进度。因此,我的手机备份大约需要半小时(2.5 GB)。

显然adb backup并未完全备份所有内容!

我查看了备份(cd X && dd if=../XXXX.adb bs=24 skip=1 | zlib-flate -uncompress | tar xf -),但未找到所有已安装的应用程序。

我能找到的是(注意这个列表不完整):

  • 内部模拟SD卡:shared/0
  • 外部SD卡:shared/1
  • 应用:apps/ - 许多应用(例如Google身份验证器)丢失
  • 日历:apps/com.android.providers.calendar/db/calendar.db(可能)

我无法找到的内容(请注意此列表不完整):

  • 闹铃。 (我可能无法找到合适的应用程序)
  • 完整的外部SD卡(此卡上的内容比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-thoughHow 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"