-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path字库备份脚本.sh
83 lines (72 loc) · 2.14 KB
/
字库备份脚本.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/system/bin/sh
echo "> 闪存备份中..."
echo "> 备份时间约为 2-30 分钟"
echo "> 请确保剩余内存空间足够(20GB 以上)"
echo "> 即将开始备份分区..."
echo "> 请不要中断..."
echo "-------------------------------------------------------"
sleep 3
# 文件位置初始化
model=$(getprop ro.product.model)
serial_no=$(getprop ro.serialno)
date_str=$(date "+%Y%m%d")
dir_name="/sdcard/${model}_${serial_no}_${date_str}"
# 创建备份目录
if [ ! -d "$dir_name" ]; then
mkdir -p "$dir_name"
else
rm -rf "$dir_name/*"
fi
if [ ! -d "$dir_name/images" ]; then
mkdir "$dir_name/images"
fi
# 创建 fastboot.sh 文件并赋予执行权限
echo "" >> "$dir_name/fastboot.sh"
chmod +x "$dir_name/fastboot.sh"
# 过滤分区列表
exclude_partitions=(
"userdata"
"mmcblk0"
"sda"
"backup"
"sdb"
"sdc"
"sdd"
"sde"
"sdf"
"sdg"
)
fastboot_cmd=""
# 获取分区信息
all_partitions=$(ls /dev/block/bootdevice/by-name/)
for partition in ${all_partitions}
do
rs="No"
for exclude_partition in ${exclude_partitions[@]}
do
if [[ "$exclude_partition" == "$partition" ]]; then
rs="Yes"
break
fi
done
if [[ "Yes" == "$rs" ]]; then
continue
fi
# 备份分区
echo "> 正在备份 [$partition] 分区"
dd if="/dev/block/bootdevice/by-name/$partition" of="$dir_name/images/$partition.img"
echo ""
# 生成 fastboot 命令
fastboot_cmd="${fastboot_cmd}fastboot flash $partition ./images/$partition.img\n"
done
# 输出 fastboot 命令至文件
echo "$fastboot_cmd" > "$dir_name/fastboot.bat"
fastboot_cmd="# !/usr/bin/env bash\n# encoding: utf-8.0\n\n$fastboot_cmd"
echo "$fastboot_cmd" > "$dir_name/fastboot.sh"
# 信息提示
echo "-------------------------------------------------------"
echo "> 分区备份完成,所有备份的分区镜像存放在 $dir_name 目录下..."
echo "> 请将手机进入 fastboot 模式,然后在电脑上执行 fastboot.bat/fastboot.sh 进行刷机"
echo "> 修改者:酷安 @Quarters"
echo "> 原作者:酷安 @Rannki"
exit 0