迅维网

查看: 1269|回复: 0
打印 上一主题 下一主题

安卓系统级备份与恢复

[复制链接]
跳转到指定楼层
1#
发表于 2023-3-31 21:43:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 来自: 湖南 来自 湖南

马上注册,获取阅读精华内容及下载权限

您需要 登录 才可以下载或查看,没有帐号?注册

x
注:以下内容仅面向小白及一般读者,作者仅为爱好者发言不具备权威性,若有错误(估计还不少,流汗滑稽)欢迎大家指出;且刷机有风险,作者不对刷机造成的任何潜在损失负责!
就在9个月前……
于是就咕了9个整月,嗯。
正好这不是换了红米K30S了嘛,正好用得上安卓系统的备份与恢复,毕竟玩机还是有风险的,砖的几率不小,万一真砖了还能留一手回天之术(流汗滑稽)。
请注意:本教程主要面向安卓系统级的备份与恢复、救砖过程,不涉及app级备份与恢复,不涉及高通9008恢复方式,不涉及联发科SP TOOL恢复方式,不涉及刷写硬件颗粒恢复方式;需要前置工作如下:1. 手机解锁BL(Bootloader)锁并已经获取到root权限 2. 一台PC(本例以Windows 11为例) 3. 一根USB数据线 4. 任何计算机与手机通信期间保持手机电量在25%以上且不能意外断连(手机fastboot期间不会向电池内充电!)
零、杂项
1. 查看手机AB分区状态
VAB分区的各种系统级操作都稍微与非VAB分区不同,本文主要针对非VAB分区机型,但VAB分区用户也可以举一反三一下,操作大同小异。
2. 小米文件管理器开启临时FTP
3. 设置ADB到Windows环境变量中
Why-cn:个人安卓刷机经验(附小米6刷机指南)之一 - 二 - 0中,我省去了设置ADB环境变量的操作,不过鉴于在备份还原过程中可能出现多次ADB操作,设置ADB到环境变量中还是比较有用的。
上面三个技巧的方法均在:
Why-cn:个人安卓玩机小技巧集合1 赞同 · 1 评论文章
一、TWRP备份与恢复
本文默认手机已经安装了TWRP且获取了root权限(已安装Magisk),不知道如何操作请移步:Why-cn:个人安卓刷机经验(附小米6刷机指南)之一
下文中所有的“刷过机”均定义为:“Why-cn:个人安卓刷机经验(附小米6刷机指南)之一 - 一 - 1 - 刷机是什么?”中的刷机定义,但排除了单纯安装TWRP和Magisk这两项操作。即:未刷机的手机仅刷了TWRP和Magisk,在下文中定义为“未刷过机”,再进行其他刷机操作均定义为“刷过机”
1. 挂载全部分区
在TWRP的挂载菜单中,挂载除“外置U盘”外的所有分区。

并不会备份所有的分区,先挂载上2. 执行备份
在TWRP的备份菜单中,先点选“选项”选项卡,选中“启用压缩”,这样能够让生成的备份文件小一点。根据个人喜好,可以选择加密与否。

顺带一提,TWRP截图是音量下+电源键,存储在/sdcard/Pictures/Screenshots
回到“备份”选项卡,在“选择要备份的分区”中选择要备份的分区。以下列表展示了你可能遇到的分区选项:

更新:Cust分区为厂商推广分区,不过MIUI会把mipush文件也放在这里
  • 所有基带、蓝牙、WiFi相关的分区都是不能够被TWRP备份和恢复的;线刷可能能够恢复这些分区,也可能恢复不了;这些分区一机一号,因为每个手机的IMEI号、MAC地址等数据都是独一无二的。
  • 以上标“不清楚”的分区,线刷可能能恢复,也可能恢复不了;TWRP刷可能能恢复,也可能恢复不了;总之这些分区在正常使用和轻度刷机是不会被修改的,但不排除特殊情况如刷入了恶意模组/刷机包。
  • 如果有当前系统的线刷包且“未刷过机”,可以不用备份部分分区,如果系统遭到损坏直接通过线刷恢复或者解压线刷包中的对应镜像通过TWRP安装到对应分区即可。
  • 非VAB分区可能包含super分区,但super分区中不包含recovery;VAB分区必定包含Super分区且Super分区中必定包含recovery。

选好之后,向右滑动最下方的滑块进行备份。
备份存储在选择的存储位置\TWRP\BACKUPS\<设备ID>\<备份时间>文件夹下。最好将这个文件夹拷贝出来归档。这些文件只能通过TWRP恢复。
3. 执行恢复
将归档的备份文件放在手机的内部存储(sdcard等)\TWRP\BACKUPS\<设备ID>\<备份时间>文件夹下,就像它们被创建时一样。如果不按照这种地址放,TWRP会识别不到。你也可以插OTG U盘,但我不建议这么做。
点选要恢复的备份包,进入恢复页面,选中“启用Digest校验备份文件”,防止文件在传输过程中出现错误导致恢复失败;然后向右滑动最下方滑块来进行恢复。
请注意:根据你备份时的状况,可能出现掉TWRP、掉Magisk的情况发生。
二、基带备份与恢复(高通QCN)
上文中说,基带相关的分区均无法通过TWRP备份和恢复,你或许可以这么操作,但迎接你的是卡第一屏;基带一机一码,就算线刷和9008也救不了掉基带;售后只会让你换主板。这么重要又危险的文件该如何备份呢?
高通设备可以通过高通工程工具QPST(Qualcomm Product Support Tools)生成高通专用的QCN文件(Qualcomm Calibration Network File,高通网络校准文件)来对基带等敏感信息进行备份和恢复。以下为操作流程:
0. 准备工作
1. 下载并安装最新版的QPST工具。
Download Archives - QPST Tool​
qpsttool.com/category/download
选择最左上角的最新版本,点击进入下载页下载。
2. 安装QPST工具。
1. 打开手机端高通调试端口
将手机连接电脑并打开开发者选项,打开USB调试(某些手机可能需要等待10秒,可以播放一曲小米圣经度过这难忍的等待时间),当手机弹出“允许这台电脑进行USB调试吗”选中一律允许并同意。
在电脑上打开命令提示符,输入
adb shell su setprop sys.usb.config diag,adb
来打开调试端口。
请注意:
  • 此时Magisk会弹出shell获取超级用户的权限提醒,选择“永久”并允许。
  • 如果手机弹出“选择USB连接方式”,不要动,否则会覆盖掉刚才的设置
  • 如果没反应,可能需要在手机上使用一些终端模拟设备来进行操作
  • 如果调试端口打开成功,在Windows的设备管理器中会出现一个名为“Qualcomm HS-USB Android DIAG 901D”的端口设备

此时端口打开成功。
如果几次尝试均不成功,请搜索“高通USB驱动”并安装。
2. 使用QPST工具对QCN进行备份
打开“QPST Configuration”软件。如果端口打开且成功被软件探测到,则会在“Active Phones”处显示该机。本例中使用的红米K30S为高通骁龙865 SoC,编码为SM8250。
关掉QPST Configuration,打开“QFIL”软件。
先点击右面的“Select Port”按钮,在弹出的窗口中选择刚才看到的端口,点击“OK”。
点击菜单栏的“Tools”- QCN Backup Restore
选择一个地址保存,双卡机选中“Enable Multi-SIM”,然后点击“Backup QCN”。
下方Status开始滚动,说明程序开始备份。
然后——失败了。
查了一下,好像865的机型全都无法备份;但骁龙625、660机型均成功,故这个方法还是有一定可行性。
3. 使用QPST工具对QCN进行恢复
还是上面的方法,直到“Backup QCN”处,此时不点击“Backup QCN”而是点击“Restore QCN”进行恢复。
请注意:由于在酷安有人反映恢复后掉IMEI 1,所以没出现掉基带的问题,不要随意恢复QCN!
手机USB模式会在重新插拔USB线后恢复默认。
三、整个ROM备份与恢复1. 备份
毕竟手机系统还是由数据组成,无法备份QCN,我大不了把整个ROM全都备份了。
这里请出酷安大佬@Rannki开发的“多系统工具箱”:
多系统工具箱(com.example.ourom) - 应用 - 酷安​
www.coolapk.com/apk/com.example.ourom
打开多系统工具箱,允许获得超级用户权限,点击左上角的“三”打开菜单,点击“字库备份与还原”。
具体操作和注意事项,作者已经很详尽地标明了:
大佬说的自行刷写ROM,见下面的第四部分。
备份后的文件通常都比较大,因为这是从分区一比特一比特dump下来的;当初什么样,恢复后也是什么样,这样就算分区加密了也无所谓。特别提一句,备份出的文件中不含data.img,也就是说data分区是不会被备份的。

红米K30S MIUI V12.5.8.0备份后的文件占用高达12G
建议将备份文件从手机中拷贝出来归档。
2. 恢复
还是用该app恢复即可。
我手机都砖了欸,根本进不去系统怎么办?
别急,就在刚才归档的文件夹内,找到fastboot.bat文件:
只要还没黑砖到fastboot都无法启动,将手机连接到电脑并重启到fastboot模式,执行该批处理文件就好。
再次感谢酷安大佬@Rannki开发的如此NB的工具!
四、线刷恢复与img刷入
线刷恢复可以恢复大部分因刷机造成的软件故障,但线刷不保证能够修复基带缺失、分区表改变等问题。获取线刷包,可以从手机厂商提供的地址,或者询问售后获得。
1. 小米系线刷恢复[教程] 小米手机解BL锁、线刷详细教程,适用于小米全系列手机 - 小米社区​
web.vip.miui.com/page/info/mio/mio/detail?postId=17936575
2. img镜像文件刷入
从上文中多系统工具箱备份出来的文件,或者从线刷包解压出来的文件可以看出,大部分的文件都是img格式,这就是磁盘镜像文件,特点是其根据磁盘的二进制数据一分不差地复制并保存成一个单独的文件,不仅保留了数据,还保留了分区格式,甚至是数据为空的纯0字段,所以文件常常占用大小与原始分区大小一致。优点是恢复方便且完整,缺点是占用空间较大。
对于任意.img文件,可以直接刷写至设备分区中,方法如下:
2.1 adb刷入
将手机连接至电脑并重启到fastboot模式(关机状态下长按音量键减+电源键,或者在启动时长按音量键减),在保存.img文件夹处打开命令提示符,输入:
fastboot flash <安卓目标分区> <.img文件文件名>
并按回车执行。比如要将一个名为TWRP_3.6.0_Andriod11-RedmiK30S_apollo_Coolapk-mi_block_v3.1[RAM].img的镜像文件刷入手机的Recovery分区,那么命令将是:
fastboot flash recovery "TWRP_3.6.0_Andriod11-RedmiK30S_apollo_Coolapk-mi_block_v3.1[RAM].img"
2.2 TWRP刷入
首先将需要刷入的img文件放在手机内部存储中,以/sdcard/download/TWRP_3.6.0_Andriod11-RedmiK30S_apollo_Coolapk-mi_block_v3.1[RAM].img为例;
重启手机到Recovery模式,进入TWRP,选择“安装”,点击右下角“刷入镜像”。
选中要刷入的镜像,点击之,进入刷入Image镜像页面,选择要刷入的目标分区:
向右滑动滑块,完成刷入。
2.3 终端刷入
由于安卓是一个高度集成化的Linux系统变体,我们可以借助Linux命令来刷入img镜像。
2.3.1 打开安卓终端
要执行Linux命令,首先要打开安卓终端。有以下几种办法:
  • ADB法:手机开机进入OS,打开USB调试,连接电脑,打开PC命令提示符输入

adb shell su
回车,此时手机上会弹出shell获取root权限的提示,永久允许。
  • TWRP法:重启手机到Recovery模式进入TWRP,点选高级 - 终端命令,

打开的页面即是已经获取了root权限的安卓终端。
  • 终端模拟器法:在手机中安装任意(来源可信的)终端模拟器,推荐“MT管理器”自带的终端模拟器:

MT管理器(bin.mt.plus) - 应用 - 酷安​
www.coolapk.com/apk/bin.mt.plus
同样地,终端模拟器要运行超级用户权限的命令,也需要获得root权限。
这三种方法开启的终端基本相同,不过要注意连接了shell的Windows命令提示符不能再获取到Windows上的文件。
2.3.2* 寻找要刷入的真实分区
(请注意:这一步不是必须的;不同的手机分区软链接方式不同;本操作建议拥有一定Linux知识再继续)
由于Linux系统的文件特性,系统挂载的分区往往是真实分区的一个软链接,有点像Windows上的文件夹快捷方式,不过仍然会被系统认作为实际存在的分区。
输入命令显示所有软链接挂载的真实分区:
ls -al /dev/block/by-name
在输出中,最后面的一列给出了挂载分区 -> 真实分区的信息,如我们要找Recovery分区挂载的真实分区,那么就要找recovery字样:
可见挂载到recovery分区的真实分区为/dev/block/sda28。
2.3.3 刷入镜像到分区
找到要刷入的分区,使用dd命令将img镜像文件写入该分区即可。还是在终端中,输入命令并执行:
dd if=<输入镜像> of=<输出分区>
还是以上面的例子为例,这里的命令为:
dd if=/sdcard/download/TWRP_3.6.0_Andriod11-RedmiK30S_apollo_Coolapk-mi_block_v3.1[RAM].img of=/dev/block/sda28
回车执行命令后重启,recovery已经刷入了我们想要的镜像。
2.4 获取、备份img镜像
前面介绍了如何恢复img镜像到分区,那么如何生成这样的镜像呢?
在已知分区地址的情况下,可以用上面提到的终端执行cat命令来提取分区到镜像文件中。
cat <分区地址> > <输出镜像地址>
比如我想制作super分区的镜像super.img保存在手机内部存储空间/Download/,可以用以下命令:
cat /dev/block/super > /sdcard/Download/super.img
当命令执行完成后,在手机内部存储空间/Download/下会出现刚才制作的img镜像。
除了这种方法,提取线刷包的img出厂镜像也可以。以红米K30S的MIUI稳定版V12.5.8.0线刷包为例,解压tgz线刷包获得一个tar压缩包,在该压缩包内部,打开images文件夹,里面有各种出厂img镜像可用:
五、TWRP日常备份
日常使用(“未刷过机”)下,仅需要手动备份手机内部存储文件和通过TWRP备份Data分区即可。请注意TWRP是无法增量备份的,每次备份可以把上一次的备份删除。
如果改动过其他分区的文件(常见为system, vendor, super等,刷个模块就有可能发生改变),如果知道是哪个分区,再次备份该分区即可;如果不知道,可以都备份一下,然后对照生成的对应分区的.sha2文件内容进行比较;如果内容相同,说明该分区没有发生变化,反之则发生了变化。对于一些敏感分区如system,vendor,boot等,应多留几个版本的备份,防止在一段时间后发生问题想恢复,却发现之前的备份已经被删除了。

我自己的POCO F1备份,备份了几个版本以便不时之需六、免责声明及警告
刷机有风险,操作要谨慎!
备份并不是万金油,恢复不一定能完全修复问题,甚至可能完全无法修复问题,或造成更多的问题!
这里讲的方法只是为了让你在刷机路上多一条路,但不一定就是后路!
(我以前恢复TWRP备份就把原来能正常开机的手机刷成卡第一屏过,不过我自己清楚是怎么造成的,后来恢复回来了)
每次操作刷机前一定要清楚自己在干什么!不要信任和使用来历不明的工具、脚本、卡刷包和模块,一些恶意或伪造的模块会包含恶意代码,清除手机上的所有数据!导致线刷都救不回来的那种!
本文章(半经验半教程)主要是为了给给位玩家提供思路,请一定要在具备一定计算机知识、命令行操作经验、Linux操作经验下再举一反三地执行;各软硬件条件及情况可能不同,以上的步骤不一定都能成功执行(尤其是二和四),部分命令可能需要根据实际情况修改(尤其是二和四);每次操作想好步骤、看清命令、做好回退准备,出了问题冷静思考挽救方法,寻求帮助描述好问题原因和现状。
!!!再次声明:作者仅为爱好者发言不具备权威性,不对刷机造成的任何潜在损失负责!!!
七、一些可以尝试的App备份工具
这些工具在取得Root权限后可以很方便地对App进行备份与更新,不过并不建议在任何情况下跨系统版本恢复、跨ROM恢复、跨安卓版本恢复,成功率依次递减。App应常通过其内部备份来备份(比如导出设置、导出记录等),而不应一味地依赖第三方备份恢复工具——甚至是系统自带的工具,因为安卓应用在备份恢复过后偶发玄学失败问题,且一些应用依赖于机器ID等,在恢复后拒绝使用恢复的数据(某小而美等)。这里列举一些可以尝试的应用备份恢复工具,但不再写明操作方法。
7.1 由于钛备份不再更新,故不推荐使用钛备份。
7.2 Swift Backup
Swift Backup - Google Play 上的应用​
play.google.com/store/apps/details?id=org.swiftapps.swiftbackup
7.3 数据备份
数据备份(com.xayah.databackup) - Beta-4.2.8 - 应用 - 酷安​
coolapk.com/apk/com.xayah.databackup


您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长提醒 上一条 /1 下一条

快速回复 返回顶部 返回列表
附近
店铺
微信扫码查看附近店铺
维修
报价
扫码查看手机版报价
信号元
件查询
点位图


芯片搜索

快速回复