我想问一下是否可以通过ADB备份和还原所有Android设置和应用程序。

我尝试过:

adb backup -all
adb: unable to connect for backup


它是在所有其他命令都起作用时不起作用。

是否可以使用此bmgr?

评论

我在win7-64上使用adb 1.0.29,并收到错误adb:执行adb backup -all时无法打开文件./backup.ab。能否找到Android设备?

是的,我可以看到设备ID。

在命令行上提交多包名称时,我遇到了类似的问题。问题是要备份的软件包数量太长。我需要将其拆分为多个命令调用

#1 楼

确保已启用调试并连接了设备。另外,请记住实际选择设备本身上的“备份我的数据”按钮(设备需要确认)。如果您在设备上看不到这样的屏幕,则很可能正在运行ICS之前版本(<4.0)的电话,不幸的是,它将没有此功能。

另外,bmgr并非此解决方案-它是一种工具,可通过在备份代理中手动触发“ backup”和“ restore”方法来测试使用备份API处理自己的备份的应用程序应用程序,而不是插入设备并向/从开发机复制数据。

评论


是的-对我来说,问题是手机上的Android版本低于4.0。谢谢!

–nealmcb
2015年8月5日14:20

这实际上包括设置/数据吗?

–没人
18年2月2日,12:35

#2 楼

这是我备份内容的命令

./adb shell ls -l -a | grep '^[^l]' | sed -e 's/^d.* \([^ ]*\)\r$/mkdir sav\/; .\/adb pull \/ sav\//' -e 's/-.* \([^ ]*\)\r$/.\/adb pull \/ sav\//' | /bin/bash



列出所有文件
忽略链接
用于

files:输出adb pull命令
目录:将dir(以防万一我们将其拉空)并输出adb pull命令


执行bash中的所有内容

有些文件中我的权限被拒绝-但是由于备份是为了根植设备,因此我无法获得更多的权限:(

评论


实际上,即使在较旧的Android设备(在本例中为Gingerbread 2.3.3)上,这似乎也可以备份所有文件(减去“拒绝权限”位)。我使用此变体(在mkdir中添加了-p参数,以避免出现一些错误消息,并在./adb之前将其删除。/):time adb shell ls -l -a | grep'^ [^ l]'| sed -e's / ^ d。* \([^] * \)\ r $ / mkdir -p sav \ / \ 1; adb pull \ / \ 1 sav \ / \ 1 /'-e's /-.* \([^] * \)\ r $ / adb pull \ / \ 1 sav \ / \ 1 /'| / bin / bash

–StéphaneGourichon
13年11月6日在7:53

无需任何花哨的正则表达式即可对所有文件进行递归备份的简单得多的方法是“ adb pull /”。

– JC Hulce
16年2月2日,1:14

#3 楼

如果我对您的理解正确,那么此链接可能就是您所需要的。总结一下:

1)运行adb devices以确保您的设备已连接。

2)运行adb pull /data/app ./来获取所有应用APK,并将它们放入当前文件夹中。 br /> a)或运行adb pull /system/sd/app ./在SD卡上获取应用程序。

3)设置位于不同的位置,因此请找出位置,然后使用相同的adb pull命令来抓取它们。

,然后该链接详细说明了如何基于Mac或Windows进行还原。

或者,您提到的bmgr命令看起来也可以与一些简单的命令一起使用(adb shell bmgr backup <package>进行备份和adb shell bmgr restore <package>恢复)。您还在寻找什么?

评论


正如Alexander Lucas在下面的回答中指出的那样,bmgr命令是开发人员测试应用程序备份/还原的工具。它实际上不会从设备上复制任何数据,因此它不太可能有用。

– P.T.
2012年10月3日,下午3:16

在Gingerbread设备上的adb 1.0.30上不起作用:pull:正在建立文件列表... 0个文件被拉。已跳过0个文件。

–StéphaneGourichon
13年11月6日在7:54

您的adb拉取将不适用于非根设备上的私人应用程序数据。而bmgr仅用于控制Google的云备份

–默默尔
16年8月24日在10:36

#4 楼

问题可能是由于连接了多个设备/仿真器。

检查adb devices如果显示了多个设备,则可能无法连接specialy to emulators

运行adb usb它将重新启动其他设备,然后断开/重新连接USB电缆,现在运行
adb devices

它应该只显示一个设备。

现在做

adb backup -all

你应该很好:)

评论


如果我通过用于Android的终端模拟器在本地使用命令,该怎么办?

–user2284570
2015年2月8日在23:49

#5 楼

确保运行SDK更新,并特别选中Google USB驱动程序框并更新SDK。

在设备上启用USB调试并插入PC后,您将得到有关安装驱动程序的提示。即使成功打开设备管理器并找到您的手机,也可以右键单击并更新驱动程序,然后将其指向SDK > Extras > Google USB中的Google USB驱动程序文件夹,并让其更新驱动程序。

那么您应该能够从设备中提取完整备份。

评论


这为我解决了这个问题。驱动程序不是问题,但是ADB版本本身已经过时了。

– AJ亨德森
2014年7月21日14:27



#6 楼

我有一个我需要备份的GS4,很不幸遇到了这个错误。经过一番挠头(和咒骂)后,我发现了一个修复程序,希望对您有用。我可以通过运行abd并滚动浏览帮助文档来找到它。我发现-d是一个“将命令定向到唯一连接的USB设备”的参数。因此,在插拔之后,我就可以使用它了。我使用的命令是:

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

希望对我遇到同样问题的人有用。

#7 楼

我有同样的问题,也是ICS之前的课程。解决该问题的方法是使用ls /和awk(使用grep跳过链接)创建一个批处理文件,该文件将每个实际目录都拉到PC上的目录中。