66
66
echo " Magisk busybox Path does not exist"
67
67
fi
68
68
export PATH=" $PATH "
69
- backup_version=" V15.7.3 "
69
+ backup_version=" V15.7.4 "
70
70
# bin_path="${bin_path/'/storage/emulated/'/'/data/media/'}"
71
71
filepath=" /data/backup_tools"
72
72
busybox=" $filepath /busybox"
@@ -386,6 +386,7 @@ update_script() {
386
386
unset NAME
387
387
}
388
388
update_script
389
+ zipFile=" $( ls -t /storage/emulated/0/Download/* .zip 2> /dev/null | head -1) "
389
390
[[ $( unzip -l " $zipFile " 2> /dev/null | awk ' {print $4}' | egrep -wo " ^backup_settings.conf$" ) != " " ]] && update_script
390
391
case $operate in
391
392
backup|Restore|Restore2|Getlist)
@@ -407,6 +408,8 @@ backup|Restore|Restore2|Getlist)
407
408
read option
408
409
fi
409
410
done
411
+ else
412
+ user=" 0"
410
413
fi
411
414
fi
412
415
echoRgb " 當前操作為用戶$user "
@@ -417,10 +420,10 @@ backup|Restore|Restore2|Getlist)
417
420
esac
418
421
if [[ $( getprop ro.build.version.sdk) -lt 30 ]]; then
419
422
alias INSTALL=" pm install --user $user -r -t &>/dev/null"
420
- alias create=" pm install-create --user $user -t 2 >/dev/null"
423
+ alias create=" pm install-create --user $user -t & >/dev/null"
421
424
else
422
- alias INSTALL=" pm install -i com.android.vending - -user $user -r -t &>/dev/null"
423
- alias create=" pm install-create -i com.android.vending -- user $user -t 2 >/dev/null"
425
+ alias INSTALL=" pm install --user $user -r -t &>/dev/null"
426
+ alias create=" pm install-create -- user $user -t & >/dev/null"
424
427
fi
425
428
case $operate in
426
429
Getlist|Restore2|Restore3|dumpname|check_file) ;;
@@ -634,19 +637,12 @@ partition_info() {
634
637
}
635
638
kill_app () {
636
639
if [[ $name2 != $Open_apps2 ]]; then
637
- if [[ $name2 = com.tencent.mobileqq || $name2 = com.tencent.mm ]]; then
638
- if [[ $( getprop ro.miui.ui.version.code) != " " ]]; then
639
- Serve=" $( appops get --user " $user " " $name2 " 10008 | egrep -o ' ignore|allow' ) "
640
- appops set --user " $user " " $name2 " 10008 ignore
641
- fi
642
- am force-stop --user " $user " " $name2 "
643
- fi
640
+ pm suspend --user " $user " " $name2 " 2> /dev/null | sed " s/Package $name2 / -應用:$name1 /g ; s/new suspended state: true/暫停狀態:凍結/g"
641
+ am force-stop --user " $user " " $name2 "
644
642
fi
645
643
}
646
644
Set_service () {
647
- if [[ $name2 = com.tencent.mobileqq || $name2 = com.tencent.mm ]]; then
648
- [[ $( getprop ro.miui.ui.version.code) != " " ]] && appops set --user " $user " " $name2 " 10008 " $Serve "
649
- fi
645
+ pm unsuspend " $name2 " 2> /dev/null | sed " s/Package $name2 / -應用:$name1 /g ; s/new suspended state: false/暫停狀態:解凍/g"
650
646
}
651
647
Backup_apk () {
652
648
# 檢測apk狀態進行備份
@@ -661,8 +657,6 @@ Backup_apk() {
661
657
result=0
662
658
echoRgb " Apk版本無更新 跳過備份" " 2"
663
659
else
664
- # 停止應用
665
- kill_app
666
660
case $name2 in
667
661
com.google.android.youtube)
668
662
[[ -d /data/adb/Vanced ]] && nobackup=" true"
@@ -740,7 +734,6 @@ Backup_apk() {
740
734
let osj++
741
735
echoRgb " $name1 不支持備份 需要使用vanced安裝" " 0" && rm -rf " $Backup_folder "
742
736
fi
743
- Set_service
744
737
fi
745
738
[[ $name2 = bin.mt.plus && ! -f $Backup /$name1 .apk ]] && cp -r " $apk_path " " $Backup /$name1 .apk"
746
739
}
@@ -1154,7 +1147,7 @@ backup)
1154
1147
i=1
1155
1148
# 數據目錄
1156
1149
txt=" $MODDIR /appList.txt"
1157
- txt=" ${txt/ ' /storage/emulated/' / ' /data/media/' } "
1150
+ # txt="${txt/'/storage/emulated/'/'/data/media/'}"
1158
1151
[[ ! -f $txt ]] && echoRgb " 請執行\" 生成應用列表.sh\" 獲取應用列表再來備份" " 0" && exit 1
1159
1152
sort -u " $txt " -o " $txt " 2> /dev/null
1160
1153
data=" $MODDIR "
@@ -1164,55 +1157,55 @@ backup)
1164
1157
echoRgb " 配置詳細:\n -壓縮方式:$Compression_method \n -音量鍵確認:$Lo \n -Toast:$toast_info \n -更新:$update \n -已卸載應用檢查:$delete_folder \n -卸載應用默認操作(true刪除false移動):$default_behavior \n -默認使用usb:$USBdefault \n -備份外部數據:$Backup_obb_data \n -備份user數據:$Backup_user_data \n -自定義目錄備份:$backup_media "
1165
1158
D=" 1"
1166
1159
C=" $( grep -v " #" " $txt " | sed -e ' /^$/d' | sed -n ' $=' ) "
1167
- if [[ $delete_folder = true ]]; then
1168
- if [[ -d $Backup ]]; then
1169
- if [[ $1 = " " ]]; then
1170
- find " $Backup " -maxdepth 1 -type d 2> /dev/null | sort | while read ; do
1171
- if [[ -f $REPLY /app_details ]]; then
1172
- unset PackageName
1173
- . " $REPLY /app_details" & > /dev/null
1174
- if [[ $PackageName != " " && $( pm path --user " $user " " $PackageName " 2> /dev/null | cut -f2 -d ' :' ) = " " ]]; then
1175
- if [[ $default_behavior = true ]]; then
1176
- rm -rf " $REPLY "
1177
- echoRgb " ${REPLY##*/ } 不存在系統 刪除資料夾" " 0"
1160
+ [[ $user = 0 ]] && Apk_info=" $( appinfo -sort-i -o pn -pn $system -3 | egrep -v ' ice.message|com.topjohnwu.magisk' | sort -u) " || Apk_info=" $( appinfo -sort-i -o pn -pn $system $( pm list packages -3 --user " $user " | cut -f2 -d ' :' ) | egrep -v ' ice.message|com.topjohnwu.magisk' | sort -u) "
1161
+ [[ $Apk_info = " " ]] && echoRgb " appinfo輸出失敗" " 0" && exit 2
1162
+ Tmplist=" $MODDIR /o"
1163
+ rm -rf " $Tmplist "
1164
+ if [[ -d $Backup ]]; then
1165
+ if [[ $delete_folder = true ]]; then
1166
+ find " $Backup " -maxdepth 1 -type d 2> /dev/null | sort | while read ; do
1167
+ if [[ -f $REPLY /app_details ]]; then
1168
+ unset PackageName
1169
+ . " $REPLY /app_details" & > /dev/null
1170
+ if [[ $PackageName != " " && $( echo " $Apk_info " | egrep -w " ^$PackageName $" ) = " " ]]; then
1171
+ if [[ $default_behavior = true ]]; then
1172
+ rm -rf " $REPLY "
1173
+ echoRgb " ${REPLY##*/ } 不存在系統 刪除資料夾" " 0"
1174
+ else
1175
+ if [[ ! -d $Backup /被卸載的應用 ]]; then
1176
+ mkdir -p " $Backup /被卸載的應用" && mv " $REPLY " " $Backup /被卸載的應用/"
1178
1177
else
1179
- if [[ ! -d $Backup /被卸載的應用 ]]; then
1180
- mkdir -p " $Backup /被卸載的應用" && mv " $REPLY " " $Backup /被卸載的應用/"
1181
- else
1182
- mv " $REPLY " " $Backup /被卸載的應用/"
1183
- fi
1184
- [[ ! -d $Backup /被卸載的應用/tools ]] && cp -r " $tools_path " " $Backup /被卸載的應用" && rm -rf " $Backup /被卸載的應用/tools/bin/zip" " $Backup /被卸載的應用/tools/script"
1185
- [[ ! -f $Backup /被卸載的應用/恢復備份.sh ]] && cp -r " $script_path /restore" " $Backup /被卸載的應用/恢復備份.sh"
1186
- [[ ! -f $Backup /被卸載的應用/重新生成應用列表.sh ]] && cp -r " $script_path /Get_DirName" " $Backup /被卸載的應用/重新生成應用列表.sh"
1187
- [[ ! -f $Backup /被卸載的應用/轉換資料夾名稱.sh ]] && cp -r " $script_path /convert" " $Backup /被卸載的應用/轉換資料夾名稱.sh"
1188
- [[ ! -f $Backup /被卸載的應用/壓縮檔完整性檢查.sh ]] && cp -r " $script_path /check_file" " $Backup /被卸載的應用/壓縮檔完整性檢查.sh"
1189
- [[ ! -f $Backup /被卸載的應用/終止腳本.sh ]] && cp -r " $MODDIR /終止腳本.sh" " $Backup /被卸載的應用/終止腳本.sh"
1190
- [[ ! -f $Backup /被卸載的應用/backup_settings.conf ]] && echo " #1開啟0關閉\n\n#是否在每次執行恢復腳本時使用音量鍵詢問如下需求\n#如果是那下面兩項項設置就被忽略,改為音量鍵選擇\nLo=$Lo \n\n#備份與恢復遭遇異常或是結束後發送通知(toast與狀態欄提示)\ntoast_info=$toast_info \n\n#腳本檢測更新後進行更新?\nupdate=$update \n\n#主色\nrgb_a=$rgb_a \n#輔色\nrgb_b=$rgb_b \nrgb_c=$rgb_c " > " $Backup /backup_settings.conf" && echo " $( sed ' s/true/1/g ; s/false/0/g' " $Backup /backup_settings.conf" ) " > " $Backup /被卸載的應用/backup_settings.conf" && echo " $( sed ' s/true/1/g ; s/false/0/g' " $Backup /backup_settings.conf" ) " > " $Backup /被卸載的應用/backup_settings.conf"
1191
- txt2=" $Backup /被卸載的應用/appList.txt"
1192
- [[ ! -f $txt2 ]] && echo " #不需要恢復還原的應用請在開頭注釋# 比如#xxxxxxxx 酷安" > " $txt2 "
1193
- echo " ${REPLY##*/ } $PackageName " >> " $txt2 "
1194
- echo " $( sed -e " s/${REPLY##*/ } $PackageName //g ; /^$/d" " $Backup /appList.txt" ) " > " $Backup /appList.txt"
1195
- echoRgb " ${REPLY##*/ } 不存在系統 已移動到$Backup /被卸載的應用" " 0"
1178
+ mv " $REPLY " " $Backup /被卸載的應用/"
1196
1179
fi
1180
+ [[ ! -d $Backup /被卸載的應用/tools ]] && cp -r " $tools_path " " $Backup /被卸載的應用" && rm -rf " $Backup /被卸載的應用/tools/bin/zip" " $Backup /被卸載的應用/tools/script"
1181
+ [[ ! -f $Backup /被卸載的應用/恢復備份.sh ]] && cp -r " $script_path /restore" " $Backup /被卸載的應用/恢復備份.sh"
1182
+ [[ ! -f $Backup /被卸載的應用/重新生成應用列表.sh ]] && cp -r " $script_path /Get_DirName" " $Backup /被卸載的應用/重新生成應用列表.sh"
1183
+ [[ ! -f $Backup /被卸載的應用/轉換資料夾名稱.sh ]] && cp -r " $script_path /convert" " $Backup /被卸載的應用/轉換資料夾名稱.sh"
1184
+ [[ ! -f $Backup /被卸載的應用/壓縮檔完整性檢查.sh ]] && cp -r " $script_path /check_file" " $Backup /被卸載的應用/壓縮檔完整性檢查.sh"
1185
+ [[ ! -f $Backup /被卸載的應用/終止腳本.sh ]] && cp -r " $MODDIR /終止腳本.sh" " $Backup /被卸載的應用/終止腳本.sh"
1186
+ [[ ! -f $Backup /被卸載的應用/backup_settings.conf ]] && echo " #1開啟0關閉\n\n#是否在每次執行恢復腳本時使用音量鍵詢問如下需求\n#如果是那下面兩項項設置就被忽略,改為音量鍵選擇\nLo=$Lo \n\n#備份與恢復遭遇異常或是結束後發送通知(toast與狀態欄提示)\ntoast_info=$toast_info \n\n#腳本檢測更新後進行更新?\nupdate=$update \n\n#主色\nrgb_a=$rgb_a \n#輔色\nrgb_b=$rgb_b \nrgb_c=$rgb_c " > " $Backup /backup_settings.conf" && echo " $( sed ' s/true/1/g ; s/false/0/g' " $Backup /backup_settings.conf" ) " > " $Backup /被卸載的應用/backup_settings.conf" && echo " $( sed ' s/true/1/g ; s/false/0/g' " $Backup /backup_settings.conf" ) " > " $Backup /被卸載的應用/backup_settings.conf"
1187
+ txt2=" $Backup /被卸載的應用/appList.txt"
1188
+ [[ ! -f $txt2 ]] && echo " #不需要恢復還原的應用請在開頭注釋# 比如#xxxxxxxx 酷安" > " $txt2 "
1189
+ echo " ${REPLY##*/ } $PackageName " >> " $txt2 "
1190
+ echo " $( sed -e " s/${REPLY##*/ } $PackageName //g ; /^$/d" " $Backup /appList.txt" ) " > " $Backup /appList.txt"
1191
+ echoRgb " ${REPLY##*/ } 不存在系統 已移動到$Backup /被卸載的應用" " 0"
1197
1192
fi
1198
1193
fi
1199
- done
1200
- fi
1194
+ fi
1195
+ done
1201
1196
fi
1202
1197
fi
1203
- if [[ $1 = " " ]]; then
1204
- echoRgb " 檢查備份列表中是否存在已經卸載應用" " 3"
1205
- while [[ $D -le $C ]]; do
1206
- name1=" $( grep -v " #" " $txt " | sed -e ' /^$/d' | sed -n " ${D} p" | awk ' {print $1}' ) "
1207
- name2=" $( grep -v " #" " $txt " | sed -e ' /^$/d' | sed -n " ${D} p" | awk ' {print $2}' ) "
1208
- if [[ $name2 != " " && $( pm path --user " $user " " $name2 " 2> /dev/null | cut -f2 -d ' :' ) = " " ]]; then
1209
- echoRgb " $name1 不存在系統,從列表中刪除" " 0"
1210
- echo " $( sed -e " s/$name1 $name2 //g ; /^$/d" " $txt " ) " > " $txt "
1211
- fi
1212
- let D++
1213
- done
1214
- echo " $( sed -e ' /^$/d' " $txt " ) " > " $txt "
1215
- fi
1198
+ echoRgb " 檢查備份列表中是否存在已經卸載應用" " 3"
1199
+ while [[ $D -le $C ]]; do
1200
+ name1=" $( grep -v " #" " $txt " | sed -e ' /^$/d' | sed -n " ${D} p" | awk ' {print $1}' ) "
1201
+ name2=" $( grep -v " #" " $txt " | sed -e ' /^$/d' | sed -n " ${D} p" | awk ' {print $2}' ) "
1202
+ if [[ $( echo " $Apk_info " | egrep -w " ^$name2 $" ) = " " ]]; then
1203
+ echoRgb " $name1 不存在系統,從列表中刪除" " 0"
1204
+ echo " $( sed -e " s/$name1 $name2 //g ; /^$/d" " $txt " ) " > " $Tmplist "
1205
+ fi
1206
+ let D++
1207
+ done
1208
+ [[ -f $Tmplist ]] && mv " $Tmplist " " $txt "
1216
1209
r=" $( grep -v " #" " $txt " | sed -e ' /^$/d' | sed -n ' $=' ) "
1217
1210
[[ $1 != " " ]] && r=1
1218
1211
[[ $r = " " ]] && echoRgb " $MODDIR_NAME /appList.txt是空的或是包名被注釋備份個鬼\n -檢查是否注釋亦或者執行$MODDIR_NAME /生成應用列表.sh" " 0" && exit 1
@@ -1670,8 +1663,8 @@ Getlist)
1670
1663
starttime1=" $( date -u " +%s" ) "
1671
1664
echoRgb " 提示!因為系統自帶app(位於data分區或是可卸載預裝應用)備份恢復可能存在問題\n -所以不會輸出..但是檢測為Xposed類型包名將輸出\n -如果提示不是Xposed但他就是Xposed可能為此應用元數據不符合規範導致" " 0"
1672
1665
xposed_name=" $( appinfo -o pn -xm) "
1673
- [[ $user = 0 ]] && Apk_info=" $( appinfo -sort-i -d " " -o addXpTag:' Xposed ' ,ands,pn -pn $system -3 | egrep -v ' ice.message|com.topjohnwu.magisk' | sort -u) " || Apk_info=" $( appinfo -sort-i -d " " -o addXpTag:' Xposed ' ands,pn -pn $system $( pm list packages -3 --user " $user " | cut -f2 -d ' :' ) | egrep -v ' ice.message|com.topjohnwu.magisk' | sort -u) "
1674
- [[ $Apk_info = " " ]] && echoRgb " appinfo輸出失敗" " 0" && exit 2 || Apk_info=" $( echo " $Apk_info " | sed ' s/Xposed //g' ) " && Apk_info2=" $( echo " $Apk_info " | awk ' {print $2}' ) "
1666
+ [[ $user = 0 ]] && Apk_info=" $( appinfo -sort-i -d " " -o addXpTag:' Xposed: ' ,ands,pn -pn $system -3 | egrep -v ' ice.message|com.topjohnwu.magisk' | sort -u) " || Apk_info=" $( appinfo -sort-i -d " " -o addXpTag:' Xposed ' ands,pn -pn $system $( pm list packages -3 --user " $user " | cut -f2 -d ' :' ) | egrep -v ' ice.message|com.topjohnwu.magisk' | sort -u) "
1667
+ [[ $Apk_info = " " ]] && echoRgb " appinfo輸出失敗" " 0" && exit 2 || Apk_info=" $( echo " $Apk_info " | sed ' s/Xposed: //g' ) " && Apk_info2=" $( echo " $Apk_info " | awk ' {print $2}' ) "
1675
1668
Apk_Quantity=" $( echo " $Apk_info " | wc -l) "
1676
1669
LR=" 1"
1677
1670
echoRgb " 列出第三方應用......." " 2"
@@ -1731,16 +1724,13 @@ Getlist)
1731
1724
while [[ $D -le $C ]]; do
1732
1725
name1=" $( grep -v " #" " $nametxt " | sed -e ' /^$/d' | sed -n " ${D} p" | awk ' {print $1}' ) "
1733
1726
name2=" $( grep -v " #" " $nametxt " | sed -e ' /^$/d' | sed -n " ${D} p" | awk ' {print $2}' ) "
1734
- {
1735
1727
if [[ $( echo " $Apk_info2 " | egrep -w " ^$name2 $" ) = " " ]]; then
1736
1728
echoRgb " $name1 $name2 不存在系統,從列表中刪除" " 0"
1737
1729
echo " $( sed -e " s/$name1 $name2 //g" " $nametxt " ) " > " $Tmplist "
1738
1730
fi
1739
- } &
1740
1731
let D++
1741
1732
done
1742
1733
[[ -f $Tmplist ]] && sed -e ' /^$/d' " $Tmplist " | sort> " $nametxt " && rm -rf " $Tmplist "
1743
- echo " $( sed -e ' /^$/d' " $nametxt " | sort) " > " $nametxt "
1744
1734
fi
1745
1735
wait
1746
1736
endtime 1
0 commit comments