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并左键单击adb,同时按住Shift键。 然后我点击“在这里打开命令窗口”。 在此之后我输入“adb devices”并说:

附加设备列表

3204cfaaf8611199设备

然后我输入:

adb backup -apk -shared -all -f C:\Users\NAME\backup.ab 

它说

现在解锁您的设备并确认备份操作。

我做了这个,我的智能手机打开了“完全备份”,然后我就可以为备份设置密码了。 我不需要密码,我只需点击“备份我的数据”然后它回到我的主屏幕并说“开始备份…”作为祝酒消息,并在此之后立即说“备份完成”并创建了一个40字节的备份文件。 我不知道我现在应该做什么。

Solutions Collecting From Web of "Adb备份不起作用"

而不是试图find旧版本的adb,更容易为adb备份的参数添加引号:

 adb backup '-apk -shared -all -f C:\Users\NAME\backup.ab' 

这只是使用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

似乎并非所有应用都可以备份。 Android显然允许应用禁用备份:(

https://developer.android.com/guide/topics/manifest/application-element.html (搜索allowbackup)

正确调用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`" 

重要信息进行备份后,请validation您的数据! 在我这边,有时会出现文件的一些损坏(我怀疑它是我的电脑,因为我只用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命令,以validation备份的正确性!

FYI

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

这是我的环境:

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

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

  • Zeroth:安装adb (在Ubuntu上: sudo apt-get install android-tools-adb
  • 第一: 在手机上启用USB调试模式 。
  • 第二步:使用USB数据线将手机连接到计算机的USB(仅限充电线是不够的)
  • 请注意,Ubuntu Phone Manager可能会显示并询问您手机的PIN码。 你不需要它,如果它发生就关闭它。
  • 第三:运行adb devices – 你应该看到像XXXXXXXXXXXX unauthorized这样的东西是XXXXXXXXXXXX unauthorized
  • 在手机上待一段时间后会出现一条消息,询问是否有USB调试权限
    • 允许这一次。 出于安全原因,您不应自动信任计算机,因为指纹很容易伪造。
    • 请注意,如果某些内容妨碍了此确认窗口的单个像素(如某些辅助function按钮),则无法点击“ OK 。 首先移动阻碍窗口。
  • 第四:现在再次运行adb devices – 你应该看到类似XXXXXXXXXXXX device东西
    • 如果显示多行,则将多个电话连接到计算机。 简单的方法是拔掉所有你不想备份的人。 (复杂的方法是设置环境variablesANDROID_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 - )并且没有find所有已安装的应用程序。

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

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

我无法find的(请注意此列表不完整):

  • 警报。 (我可能无法检测到正确的应用程序)
  • 完整的外部SD卡(此卡上的数据比下面显示的数量share/1 。例如,移动到SD的应用程序。)

结论:

  • 有时, adb backup可能会创建损坏的备份,这可能会被忽视。 因此,要么检查备份,要么经常进行备份,并假装足够幸运,以免所有备份都损坏。
  • 使用adb backup您可以获得大部分宝贵数据的备份,例如相机图像等。 但是,打开包装可能有点困难。
  • adb backup不足以完成手机的完整备份。
  • adb backup不足以备份你的SD卡,如果它坏了,你可以用一个新的替换它,内容恢复。 这太伤心了!

PS:错字“ Forth ”不是偶然的。

PPS: zlib-flate可以在Ubuntu 18.04上的包qpdffind

问题是您的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以及如何降级我的SDK版本?