手机备份/恢复分区(boot/system/userdata)、数据的几种方法
前 提:
- 有root权限
- 备份恢复boot/system分区为例
先查看分区信息:
方法一 :
命令:ls -l
/dev/block/platform/mtk-msdc.0/by-name/
root@GiONEE_GBL7319:/ # ls -l /dev/block/platform/mtk-msdc.0/by-name/
lrwxrwxrwx root root 2022-05-20 21:16 boot -> /dev/block/mmcblk0p7
lrwxrwxrwx root root 2022-05-20 21:16 cache -> /dev/block/mmcblk0p21
lrwxrwxrwx root root 2022-05-20 21:16 expdb -> /dev/block/mmcblk0p10
lrwxrwxrwx root root 2022-05-20 21:16 flashinfo -> /dev/block/mmcblk0p23
lrwxrwxrwx root root 2022-05-20 21:16 frp -> /dev/block/mmcblk0p17
lrwxrwxrwx root root 2022-05-20 21:16 keystore -> /dev/block/mmcblk0p14
lrwxrwxrwx root root 2022-05-20 21:16 lk -> /dev/block/mmcblk0p5
lrwxrwxrwx root root 2022-05-20 21:16 logo -> /dev/block/mmcblk0p9
lrwxrwxrwx root root 2022-05-20 21:16 metadata -> /dev/block/mmcblk0p19
lrwxrwxrwx root root 2022-05-20 21:16 nvdata -> /dev/block/mmcblk0p18
lrwxrwxrwx root root 2022-05-20 21:16 nvram -> /dev/block/mmcblk0p2
lrwxrwxrwx root root 2022-05-20 21:16 oemkeystore -> /dev/block/mmcblk0p12
lrwxrwxrwx root root 2022-05-20 21:16 para -> /dev/block/mmcblk0p6
lrwxrwxrwx root root 2022-05-20 21:16 proinfo -> /dev/block/mmcblk0p1
lrwxrwxrwx root root 2022-05-20 21:16 protect1 -> /dev/block/mmcblk0p3
lrwxrwxrwx root root 2022-05-20 21:16 protect2 -> /dev/block/mmcblk0p4
lrwxrwxrwx root root 2022-05-20 21:16 recovery -> /dev/block/mmcblk0p8
lrwxrwxrwx root root 2022-05-20 21:16 seccfg -> /dev/block/mmcblk0p11
lrwxrwxrwx root root 2022-05-20 21:16 secro -> /dev/block/mmcblk0p13
lrwxrwxrwx root root 2022-05-20 21:16 system -> /dev/block/mmcblk0p20
lrwxrwxrwx root root 2022-05-20 21:16 tee1 -> /dev/block/mmcblk0p15
lrwxrwxrwx root root 2022-05-20 21:16 tee2 -> /dev/block/mmcblk0p16
lrwxrwxrwx root root 2022-05-20 21:16 userdata -> /dev/block/mmcblk0p22
boot分区对应实际的目录是/dev/block/mmcblk0p7
方法二:
根目录/下的fstab.xxx和/dev/recovery.fstab也可查相关信息
备 份:
方法一:cat
命令:cat /dev/block/mmcblk0p7 > /sdcard/bootBAK.img
root@GiONEE_GBL7319:/ # cat /dev/block/mmcblk0p7 > /sdcard/bootBAK.img
查看结果:
root@GiONEE_GBL7319:/ # ls -l /sdcard/boot*
-rw-rw---- root sdcard_r 7145472 2015-06-30 07:04 boot.img
-rw-rw---- root sdcard_r 16777216 2022-05-20 21:45 bootBAK.img
-rw-rw---- root sdcard_r 7485440 2022-02-28 08:22 bootF103_magisk.img
bootBAK.img大小是16777216字节
对比一下:
先查看分区大小
命令:cat /proc/partitions
root@GiONEE_GBL7319:/ # cat /proc/partitions
major minor #blocks name
254 0 491520 zram0
7 0 18944 loop0
179 0 15267840 mmcblk0
179 1 3072 mmcblk0p1
179 2 5120 mmcblk0p2
179 3 10240 mmcblk0p3
179 4 10240 mmcblk0p4
179 5 512 mmcblk0p5
179 6 512 mmcblk0p6
179 7 16384 mmcblk0p7 对应boot分区
179 8 16384 mmcblk0p8
179 9 8192 mmcblk0p9
179 10 10240 mmcblk0p10
179 11 512 mmcblk0p11
179 12 2048 mmcblk0p12
179 13 6144 mmcblk0p13
179 14 8192 mmcblk0p14
179 15 5120 mmcblk0p15
179 16 5120 mmcblk0p16
179 17 1024 mmcblk0p17
179 18 32768 mmcblk0p18
179 19 37888 mmcblk0p19
179 20 2097152 mmcblk0p20
179 21 409600 mmcblk0p21
179 22 12563968 mmcblk0p22
179 23 16384 mmcblk0p23
179 96 4096 mmcblk0rpmb
179 64 4096 mmcblk0boot1
179 32 4096 mmcblk0boot0
mmcblk0p7的blocks是16384块,每块大小1024字节
boot大小 = 16384 * 1024 = 16777216字节,与备份出来的大小一样。
方法二:dd
命令:dd if=/dev/block/mmcblk0p7 of=/sdcard/bootBAK2.img
1|root@GiONEE_GBL7319:/ # dd if=/dev/block/mmcblk0p7 of=/sdcard/bootBAK2.img
32768+0 records in
32768+0 records out
16777216 bytes transferred in 2.001 secs (8384415 bytes/sec)
或者:
dd if=/dev/block/mmcblk0p7 of=/sdcard/bootBAK2.img bs=1024 count=16384
命令说明 :
- if表示输入(数据源)
- of表示输出(备份到哪)
- bs即blocks
- count是多少个bs
结果:
root@GiONEE_GBL7319:/ # ls -l /sdcard/boot*
-rw-rw---- root sdcard_r 7145472 2015-06-30 07:04 boot.img
-rw-rw---- root sdcard_r 16777216 2022-05-20 21:45 bootBAK.img
-rw-rw---- root sdcard_r 16777216 2022-05-20 21:56 bootBAK2.img
-rw-rw---- root sdcard_r 7485440 2022-02-28 08:22 bootF103_magisk.img
方法三:cpio
命令:find /system -print | cpio -ovd -H newc > /sdcard/system.cpio 备份/system
root@GiONEE_GBL7319:/ # find /system -print | busybox cpio -ovd -H newc > /sdcard/system.cpio
root@GiONEE_GBL7319:/ # ls -l /sdcard/system*
-rw-rw---- root sdcard_r 1916820332 2022-05-25 23:11 system.cpio
root@GiONEE_GBL7319:/ # file /sdcard/system.cpio
/sdcard/system.cpio: ASCII cpio archive (SVR4 with no CRC)
方法四:tar
命令:tar cvzpf system-bak0526.tar.gz --exclude=/system/lost+found --exclude=
/system/recovery-from-boot.bak /system
备份/system时排除掉./lost+found , recovery-from-boot.bak
先查看/system数据:
c: mp\fastboot>adb shell
shell@GiONEE_GBL7319:/ $ su
root@GiONEE_GBL7319:/ # ls /system
app
bin
build.prop
data
etc
fonts
framework
lib
lib64
lost+found
media
plugin
priv-app
recovery-from-boot.bak
res
tts
usr
vendor
xbin
执行备份:
root@GiONEE_GBL7319:/ # cd /sdcard
root@GiONEE_GBL7319:/sdcard # busybox tar cvzpf system-bak0526.tar.gz --exclude=/system/lost+found --exclude=/system/recovery-from-boot.bak /system
参数说明:
- -c 建立压缩文件
- -x 解开压缩文件
- -v 显示列表
- -z 用gzip进行压缩
- -p 保留原来的属性
- -f 指定压缩文档名
- --exclude 排除的文件或目录
查看结果:
root@GiONEE_GBL7319:/sdcard # ll sys*
-rw-rw---- root sdcard_r 1132545851 2022-05-26 16:04 system-bak0526.tar.gz
130|root@GiONEE_GBL7319:/sdcard # busybox tar -tf system-bak0526.tar.gz|grep flash_image
system/xbin/flash_image
=================================
恢 复 分 区/数据:
方法一:dd
命令:dd if=/sdcard/bootBAK2.img of=/dev/block/mmcblk0p7
root@GiONEE_GBL7319:/ # dd if=/sdcard/bootBAK2.img of=/dev/block/mmcblk0p7
方法二:fastboot flash
命令:fastboot flash boot bootBAK2.img
c: mp\fastboot>adb reboot bootloader
c: mp\fastboot>fastboot devices
8T8HBIZSBU9PCM4S fastboot
c: mp\fastboot>fastboot flash boot bootBAK2.img
方法三:flash_image
命令:flash_image partition file.img
有时候partition不识别boot, 则改为/dev/block/mmcblk0p7试试
root@GiONEE_GBL7319:/ # flash_image boot /sdcard/bootBAK2.img
failed with error: -1
root@GiONEE_GBL7319:/ # flash_image /dev/block/mmcblk0p7 /sdcard/bootBAK2.img
方法四:cpio
命令:cpio -iuvd < /sdcard/system.cpio
参数说明:
- -i 将数据文件复制到系统中,copy-in
- -o 将系统数据复制成文件,copy-out
- -u 自动将较新文件覆盖旧文件
- -v 显示清单
- -d 自动建立目录
- -p 原版备份,不进行额外处理
- -H format
format有如下格式:
- bin : The obsolete binary format. (2147483647 bytes)
- odc : The old (POSIX.1) portable format. (8589934591 bytes)
- newc : The new (SVR4) portable format, which supports file systems having more than 65536 i-nodes. (4294967295 bytes)
另外说明 :
dd命令可备份 :文件、分区、磁盘、光盘等
用法说明:
Usage: dd [if=FILE] [of=FILE] [ibs=N obs=N/bs=N] [count=N] [skip=N] [seek=N]
[conv=notrunc|noerror|sync|fsync]
[iflag=skip_bytes|fullblock] [oflag=seek_bytes|append]
Copy a file with converting and formatting
if=FILE Read from FILE instead of stdin
of=FILE Write to FILE instead of stdout
bs=N Read and write N bytes at a time
ibs=N Read N bytes at a time
obs=N Write N bytes at a time
count=N Copy only N input blocks
skip=N Skip N input blocks
seek=N Skip N output blocks
conv=notrunc Don't truncate output file
conv=noerror Continue after read errors
conv=sync Pad blocks with zeros
conv=fsync Physically write data out before finishing
conv=swab Swap every pair of bytes
iflag=skip_bytes skip=N is in bytes
iflag=fullblock Read full blocks
oflag=seek_bytes seek=N is in bytes
oflag=append Open output file in append mode
status=noxfer Suppress rate output
status=none Suppress all output
N may be suffixed by c (1), w (2), b (512), kB (1000), k (1024), MB, M, GB, G
/dev/null : 回收站
/dev/zero :生成0字符