安卓备份分区----手动查询安卓系统分区信息 导出系统分区的一些基本操作

2023-09-21 13:06:39

在玩机搞机过程中。有时候需要手动查看有些分区信息,或者备份分区的操作。那么今天以小米8为例解析下其中的操作步骤

机型:小米8

adb版本:https://developer.android.com/studio/releases/platform-tools

机型芯片:高通骁龙845

手机系统版本:安卓10

机型界面:twrp

机型字库:UFS

查看分区

1---手机进入twrp模式里安装好联机驱动。然后打开adb输入指令

adb shell ls -al /dev/block/bootdevice/by-name/界面如下

C:\Users\Administrator\Desktop\adb>adb shell ls -al /dev/block/bootdevice/by-name/
drwxr-xr-x    2 root     root          1740 Aug 10  1970 .
drwxr-xr-x    3 root     root          1880 Aug 10  1970 ..
lrwxrwxrwx    1 root     root            15 Aug 10  1970 ImageFv -> /dev/block/sdf4
lrwxrwxrwx    1 root     root            16 Aug 10  1970 abl_a -> /dev/block/sde32
lrwxrwxrwx    1 root     root            16 Aug 10  1970 abl_b -> /dev/block/sde33
lrwxrwxrwx    1 root     root            16 Aug 10  1970 aop_a -> /dev/block/sde14
lrwxrwxrwx    1 root     root            16 Aug 10  1970 aop_b -> /dev/block/sde15
lrwxrwxrwx    1 root     root            15 Aug 10  1970 apdp -> /dev/block/sde6
lrwxrwxrwx    1 root     root            15 Aug 10  1970 bk01 -> /dev/block/sda3
lrwxrwxrwx    1 root     root            15 Aug 10  1970 bk02 -> /dev/block/sda4
lrwxrwxrwx    1 root     root            15 Aug 10  1970 bk03 -> /dev/block/sda5
lrwxrwxrwx    1 root     root            15 Aug 10  1970 bk04 -> /dev/block/sda8
lrwxrwxrwx    1 root     root            16 Aug 10  1970 bk05 -> /dev/block/sda13
lrwxrwxrwx    1 root     root            15 Aug 10  1970 bk31 -> /dev/block/sdd1
lrwxrwxrwx    1 root     root            15 Aug 10  1970 bk32 -> /dev/block/sdd3
lrwxrwxrwx    1 root     root            15 Aug 10  1970 bk33 -> /dev/block/sdd5
lrwxrwxrwx    1 root     root            15 Aug 10  1970 bk41 -> /dev/block/sde3
lrwxrwxrwx    1 root     root            15 Aug 10  1970 bk42 -> /dev/block/sde9
lrwxrwxrwx    1 root     root            16 Aug 10  1970 bk43 -> /dev/block/sde16
lrwxrwxrwx    1 root     root            16 Aug 10  1970 bk44 -> /dev/block/sde17
lrwxrwxrwx    1 root     root            16 Aug 10  1970 bk45 -> /dev/block/sde25
lrwxrwxrwx    1 root     root            16 Aug 10  1970 bk46 -> /dev/block/sde29
lrwxrwxrwx    1 root     root            16 Aug 10  1970 bk47 -> /dev/block/sde38
lrwxrwxrwx    1 root     root            16 Aug 10  1970 bk48 -> /dev/block/sde40
lrwxrwxrwx    1 root     root            16 Aug 10  1970 bk49 -> /dev/block/sde41
lrwxrwxrwx    1 root     root            15 Aug 10  1970 bk51 -> /dev/block/sdf2
lrwxrwxrwx    1 root     root            15 Aug 10  1970 bk52 -> /dev/block/sdf3
lrwxrwxrwx    1 root     root            15 Aug 10  1970 bk53 -> /dev/block/sdf5
lrwxrwxrwx    1 root     root            16 Aug 10  1970 bluetooth -> /dev/block/sde24
lrwxrwxrwx    1 root     root            16 Aug 10  1970 boot -> /dev/block/sde45
lrwxrwxrwx    1 root     root            16 Aug 10  1970 cache -> /dev/block/sda20
lrwxrwxrwx    1 root     root            15 Aug 10  1970 cdt -> /dev/block/sdd2
lrwxrwxrwx    1 root     root            16 Aug 10  1970 cmnlib64_a -> /dev/block/sde20
lrwxrwxrwx    1 root     root            16 Aug 10  1970 cmnlib64_b -> /dev/block/sde21
lrwxrwxrwx    1 root     root            16 Aug 10  1970 cmnlib_a -> /dev/block/sde18
lrwxrwxrwx    1 root     root            16 Aug 10  1970 cmnlib_b -> /dev/block/sde19
lrwxrwxrwx    1 root     root            16 Aug 10  1970 cust -> /dev/block/sda18
lrwxrwxrwx    1 root     root            15 Aug 10  1970 ddr -> /dev/block/sdd4
lrwxrwxrwx    1 root     root            16 Aug 10  1970 devcfg_a -> /dev/block/sde12
lrwxrwxrwx    1 root     root            16 Aug 10  1970 devcfg_b -> /dev/block/sde13
lrwxrwxrwx    1 root     root            16 Aug 10  1970 devinfo -> /dev/block/sda12
lrwxrwxrwx    1 root     root            16 Aug 10  1970 dip -> /dev/block/sde28
lrwxrwxrwx    1 root     root            16 Aug 10  1970 dsp -> /dev/block/sde44
lrwxrwxrwx    1 root     root            16 Aug 10  1970 dtbo -> /dev/block/sde37
lrwxrwxrwx    1 root     root            15 Aug 10  1970 frp -> /dev/block/sda7
lrwxrwxrwx    1 root     root            15 Aug 10  1970 fsc -> /dev/block/sdf1
lrwxrwxrwx    1 root     root            16 Aug 10  1970 fsg -> /dev/block/sde36
lrwxrwxrwx    1 root     root            16 Aug 10  1970 hyp_a -> /dev/block/sde26
lrwxrwxrwx    1 root     root            16 Aug 10  1970 hyp_b -> /dev/block/sde27
lrwxrwxrwx    1 root     root            16 Aug 10  1970 keymaster_a -> /dev/block/sde22
lrwxrwxrwx    1 root     root            16 Aug 10  1970 keymaster_b -> /dev/block/sde23
lrwxrwxrwx    1 root     root            15 Aug 10  1970 keystore -> /dev/block/sda6
lrwxrwxrwx    1 root     root            15 Aug 10  1970 limits -> /dev/block/sde2
lrwxrwxrwx    1 root     root            16 Aug 10  1970 logdump -> /dev/block/sda16
lrwxrwxrwx    1 root     root            16 Aug 10  1970 logfs -> /dev/block/sda10
lrwxrwxrwx    1 root     root            16 Aug 10  1970 logo -> /dev/block/sde43
lrwxrwxrwx    1 root     root            16 Aug 10  1970 minidump -> /dev/block/sda17
lrwxrwxrwx    1 root     root            15 Aug 10  1970 misc -> /dev/block/sda9
lrwxrwxrwx    1 root     root            16 Aug 10  1970 modem -> /dev/block/sde46
lrwxrwxrwx    1 root     root            15 Aug 10  1970 modemst1 -> /dev/block/sdf6
lrwxrwxrwx    1 root     root            15 Aug 10  1970 modemst2 -> /dev/block/sdf7
lrwxrwxrwx    1 root     root            15 Aug 10  1970 msadp -> /dev/block/sde7
lrwxrwxrwx    1 root     root            16 Aug 10  1970 oops -> /dev/block/sda11
lrwxrwxrwx    1 root     root            16 Aug 10  1970 persist -> /dev/block/sda14
lrwxrwxrwx    1 root     root            16 Aug 10  1970 persistbak -> /dev/block/sda15
lrwxrwxrwx    1 root     root            15 Aug 10  1970 qupfw_a -> /dev/block/sde4
lrwxrwxrwx    1 root     root            15 Aug 10  1970 qupfw_b -> /dev/block/sde5
lrwxrwxrwx    1 root     root            16 Aug 10  1970 recovery -> /dev/block/sda19
lrwxrwxrwx    1 root     root            15 Aug 10  1970 sec -> /dev/block/sde1
lrwxrwxrwx    1 root     root            16 Aug 10  1970 splash -> /dev/block/sde42
lrwxrwxrwx    1 root     root            16 Aug 10  1970 spunvm -> /dev/block/sde39
lrwxrwxrwx    1 root     root            15 Aug 10  1970 ssd -> /dev/block/sda2
lrwxrwxrwx    1 root     root            16 Aug 10  1970 sti -> /dev/block/sde30
lrwxrwxrwx    1 root     root            16 Aug 10  1970 storsec_a -> /dev/block/sde10
lrwxrwxrwx    1 root     root            16 Aug 10  1970 storsec_b -> /dev/block/sde11
lrwxrwxrwx    1 root     root            15 Aug 10  1970 switch -> /dev/block/sda1
lrwxrwxrwx    1 root     root            16 Aug 10  1970 system -> /dev/block/sda21
lrwxrwxrwx    1 root     root            16 Aug 10  1970 toolsfv -> /dev/block/sde31
lrwxrwxrwx    1 root     root            16 Aug 10  1970 tz_a -> /dev/block/sde34
lrwxrwxrwx    1 root     root            16 Aug 10  1970 tz_b -> /dev/block/sde35
lrwxrwxrwx    1 root     root            16 Aug 10  1970 userdata -> /dev/block/sda22
lrwxrwxrwx    1 root     root            15 Aug 10  1970 vbmeta -> /dev/block/sde8
lrwxrwxrwx    1 root     root            16 Aug 10  1970 vendor -> /dev/block/sde47
lrwxrwxrwx    1 root     root            15 Aug 10  1970 xbl_a -> /dev/block/sdb2
lrwxrwxrwx    1 root     root            15 Aug 10  1970 xbl_b -> /dev/block/sdc2
lrwxrwxrwx    1 root     root            15 Aug 10  1970 xbl_config_a -> /dev/block/sdb1
lrwxrwxrwx    1 root     root            15 Aug 10  1970 xbl_config_b -> /dev/block/sdc1

通过这个指令可以看到手机所有分区对应的分区浩。例如

lrwxrwxrwx    1 root     root            16 Aug 10  1970 boot -> /dev/block/sde45

boot分区就是在sde45序号里

备份分区

那么知道了分区对应的分区号。如何提取这个boot分区呢

指令;dd if=/dev/block/sde45 of=/sdcard/boot.img

然后打开手机存储就有这个分区

按此方法。可以提取出当前机型所有的分区。在这个界面。例如我们怎么简单方便备份手机最重要的基带分区呢。在usf字库芯片的机型里,基带辅助分区基本全部都在sdf分区里。查看分区xml就可以很清楚的看到

<?xml version="1.0" ?>
<data>
  <!--NOTE: This is an ** Autogenerated file **-->
  <!--NOTE: Sector size is 4096bytes-->
  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="fsc" num_partition_sectors="64" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="256.0" sparse="false" start_byte_hex="0x6000" start_sector="6"/>
  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="bk51" num_partition_sectors="186" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="744.0" sparse="false" start_byte_hex="0x46000" start_sector="70"/>
  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="bk52" num_partition_sectors="256" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="1024.0" sparse="false" start_byte_hex="0x100000" start_sector="256"/>
  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="imagefv.elf" label="ImageFv" num_partition_sectors="512" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="2048.0" sparse="false" start_byte_hex="0x200000" start_sector="512"/>
  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="bk53" num_partition_sectors="1024" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="4096.0" sparse="false" start_byte_hex="0x400000" start_sector="1024"/>
  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="modemst1" num_partition_sectors="2048" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="8192.0" sparse="false" start_byte_hex="0x800000" start_sector="2048"/>
  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="modemst2" num_partition_sectors="2048" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="8192.0" sparse="false" start_byte_hex="0x1000000" start_sector="4096"/>
  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="last_parti" num_partition_sectors="0" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="0" sparse="false" start_byte_hex="0x1800000" start_sector="6144"/>
  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="gpt_main5.bin" label="PrimaryGPT" num_partition_sectors="6" partofsingleimage="true" physical_partition_number="5" readbackverify="false" size_in_KB="24.0" sparse="false" start_byte_hex="0x0" start_sector="0"/>
  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="gpt_backup5.bin" label="BackupGPT" num_partition_sectors="5" partofsingleimage="true" physical_partition_number="5" readbackverify="false" size_in_KB="20.0" sparse="false" start_byte_hex="(4096*NUM_DISK_SECTORS)-20480." start_sector="NUM_DISK_SECTORS-5."/>
</data>

如果单一的进行备份比较麻烦。我们可以把这个sdf分区全部备份下来。指令:

dd if=/dev/block/sdf of=/sdcard/sdf.bin

按此方法你也可以备份所有的总分区 sda sdb  sdc sdd sde ,

恢复分区

怎么备份的就可以怎么恢复。无非把指令调换了下。例如刚才备份的boot分区和sdf分区

dd if=/sdcard/boot.img of=/dev/block/sde45

dd if=/sdcard/sdf.bin of=/dev/block/sdf

 dd if与of指令含义

dd命令是一个特殊的命令,它使用底层比特复制的方式从源头将数据复制并转换至一个指定的目的地。在Android破解中,在数据和结果必须确切时,dd命令通常被用于将一个映像文件写入内存或文件,从而使其可以在诸如操作系统引导文件等重要过程中被找到和使用。

dd命令使用如下语法:

dd if=<源文件> of=<目标文件>

if(输入文件)参数告诉命令在哪里找源文件。

of(输出文件)告诉命令将目标文件写到哪里。

在使用这两个参数时应特别小心:将if和of这两个参数顺序颠倒其结果将会是毁灭性的。

更多提取方法
例如使用cat指令也可以提取

cat /dev/block/sde45 > /sdcard/boot2.img

可能遇到的问题

这边提到一个问题,有时候提取后当时查看提取到的分区大小为0.不要着急。这个是没有同步的原因。重新联机下twrp即可显示实际分区大小。有时候需要重启twrp。

查看分区大小

通过cat /proc/partitions可以查看分区大小。例如我们刚才备份的boot分区

当然以上描述的步骤只是纯手动进行备份分区。还可以借助第三方成品工具进行备份和回复。我前面很多博文有过解析。例如在开机界面使用工具箱备份或者9008端口和mtk的BROM模式里进行备份分区。

感兴趣的可以参考:玩机搞机---安卓机型mtk和高通芯片查看分区 导出分区 备份分区的一些工具分析

更多推荐

英语CN专刊《英语教师》简介及投稿须知

英语CN专刊《英语教师》简介及投稿须知《英语教师》杂志是由中华人民共和国新闻出版总署、正式批准公开发行的优秀期刊,《英语教师》系一本面向基础教育和高等教育英语教师的、兼顾理论性与实践性的专业性期刊。《英语教师》的读者对象主要是广大英语教师、英语教研员以及高校外语院系学生。本刊主要刊载有关英语教学和英语教师教育的论文、实

Linux 系统移植(二)--系统调试

文章目录一、编译文件系统1.1下载资源安装包1.2配置模板ARM64目标平台1.3配置交叉编译器1.4配置登录用户名和密码1.5配置Linux控制台1.6配置文件系统格式1.7编译buildroot文件系统二、编译ARM64Linux三、启动QemuLinux系统参考链接:一、编译文件系统1.1下载资源安装包我们使用b

(日积月累版)大数据基础知识点1-关系型数据库

好久不见,甚是想念。笔者最近有时间整理关于大数据的一些基础知识点,整理的目不在于能提升多少技能,关键在于巩固一些很基础的知识点,毕竟互联网就是基础略稳固的人比较有优势,在遇到或发现一些技术问题时,从底层科学的去理解这些问题,说不定会有另一片天下。那么本期带来大数据面是:关系型数据库一、什么是关系型数据库?关系型数据库是

全国职业技能大赛云计算--高职组赛题卷④(私有云)

全国职业技能大赛云计算--高职组赛题卷④(私有云)第一场次题目:OpenStack平台部署与运维任务1基础运维任务(5分)任务3OpenStack云平台运维(15分)任务4OpenStack云平台运维开发(15分,本任务只公布考试范围,不公布赛题)需要环境私信博主!!!第一场次题目:OpenStack平台部署与运维某企

2023,DaaS驶入“AI大航海时代”

2023,“制胜”已然成为所有行业、企业的共同命题,随着数字化行至中程,数据壁垒逐渐被打破,DaaS作为企业增长问题的解法,再次被看到。作者|斗斗编辑|皮爷出品|产业家2002年,在竞争激烈的美国职业棒球联盟,奥克兰运动家队无论在人员和物质配备以及资金实力上都只是“下三流”之列。然而在数据分析高材生的帮助下,经过分析数

RK3568开发笔记(十一):开发版buildroot固件移植一个ffmpeg播放rtsp的播放器Demo

若该文为原创文章,转载请注明原文出处本文章博客地址:https://hpzwl.blog.csdn.net/article/details/133022813红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…瑞芯微开

HBase基本操作及命令示例

HBase是一种分布式、可扩展、面向列的数据库,它是由Google的Bigtable项目衍生而来,并由Apache软件基金会开发及维护。对于HBase的基本操作类型,主要包括以下几种:创建表:在HBase中,可以创建一个新的表来存储数据。创建表时,需要定义表的名称以及表的列族。命令示例:create'table_nam

ASP.NET Core 8 的 Web App

WebAppWebApp与WebAPI的不同之处在于包含UI部分,所谓的UI就是HTML页面。WebApp支持几种渲染HTML的方式:服务端渲染客户端渲染混合渲染服务端渲染服务端渲染UI是在浏览器请求的时候,服务端生成HTML,然后返回给浏览器。优点是:减轻客户端的压力服务端生成HTML,适配各种浏览器极少从Clien

前端常用库之-JavaScript工具库lodash

文章目录前端常用库之-JavaScript工具库lodash一、什么是lodash二、安装三、lodash使用Lodash的pick()函数介绍和使用react实例demo:pick结合...展开运算符(spreadoperator)前端常用库之-JavaScript工具库lodash一、什么是lodash官网:htt

炒期权的资金门槛是多少 ?

期权是一种合约,买方向卖方支付一定费用后有权利在特定的时间,以特定的价格买入或卖出一定数量的特定资产,卖方需履行相应义务,期权开户支持线上和零门槛开头,下文介绍炒期权的资金门槛是多少?本文来自:期权酱一、期权一般投入多少钱?其实在期权市场上,绝大部分投资者都是中小型投资者,也就意味着期权投资不需要多少钱,几十几百几千元

【新版】系统架构设计师 - 案例分析 - 信息安全

个人总结,仅供参考,欢迎加好友一起讨论文章目录架构-案例分析-信息安全安全架构安全模型分类BLP模型Biba模型ChineseWall模型信息安全整体架构设计WPDRRC模型各模型安全防范功能网络安全体系架构设计开放系统互联安全体系结构安全服务与安全机制的对应关系认证框架访问控制框架机密性框架完整性框架抗抵赖框架什么是

热文推荐