我需要你们的帮助,因为我不知道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字节的备份文件.我不知道我现在该做什么.
而不是试图找到旧版本的adb,更容易为adb备份的参数添加引号:
adb backup "-apk -shared -all -f C:\Users\NAME\backup.ab"
正确调用的行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`"
FYI重要信息备份后,请验证您的数据!在我这边,有时会出现文件的一些损坏(我怀疑这是我的电脑,因为我只观察到这样的错误
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
)
这是我的环境:
操作系统:Ubuntu 16.04
电话:Android 7.0
亚行:1.0.32
完整的程序是(以防万一有人偶然发现这不知道需要什么):
零:安装adb
(在Ubuntu: sudo apt-get install android-tools-adb
)
第一:在手机上启用USB调试模式.
第二步:使用USB数据线将手机连接到计算机的USB(仅限充电线是不够的)
请注意,Ubuntu Phone Manager可能会显示并询问您手机的PIN码.你不需要它,如果它发生就关闭它.
第三:跑adb devices
- 你应该看到类似的东西XXXXXXXXXXXX unauthorized
在手机上待一段时间后会出现一条消息,要求提供USB调试权限
允许这一次.出于安全原因,您不应自动信任计算机,因为指纹很容易伪造.
请注意,如果某些内容妨碍了此确认窗口的单个像素(如某些辅助功能按钮),则无法点按OK
.首先移动阻碍窗口.
第四:再现一次adb devices
- 你应该看到类似的东西XXXXXXXXXXXX device
如果显示多行,则将多个电话连接到计算机.简单的方法是拔掉所有不想备份的人.(复杂的方法是设置环境变量ANDROID_SERIAL=XXXXXXXXXXXX
.)
现在运行adb backup
如上所示.根据需要更改文件.
这会打开一个窗口,要求备份权限.
在进行备份时,请勿关闭备份窗口.当我尝试这个时,备份停止,结果存档被破坏.
您可以提供密码来加密备份.我没有关于密码安全性的任何信息.但很有可能,如果您忘记了密码,则无法恢复备份.
我不知道如何将这样的备份恢复到其他手机.我甚至从未尝试过恢复,所以我也无法在这里帮忙.
笔记:
adb help
显示所有可能的选项 adb backup
备份前关闭手机上所有打开的应用程序.我不知道这是否需要,但肯定不会受到伤害.
备份运行时保持手机独立.我不知道这是否需要,但肯定不会受到伤害.
不要急躁.留出足够的时间备份.在我身边,我看到了大约100 MB /分钟(YMMV)的进度.因此,我的手机备份大约需要半小时(2.5 GB).
显然adb backup
没有完全备份一切!
我查看了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
可以qpdf
在Ubuntu 18.04的软件包中找到
这只是使用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