This commit is contained in:
Yawasau
2022-02-09 22:58:53 +08:00
parent db93f54de8
commit 9ed0a6132b
4 changed files with 157 additions and 206 deletions

View File

@@ -6,9 +6,6 @@ Lo=0
#自定義備份目錄輸出位置 (忽略為空將默認腳本路徑中) #自定義備份目錄輸出位置 (忽略為空將默認腳本路徑中)
Output_path= Output_path=
#Getlist.sh列出系統應用
system_name=0
#備份與恢復遭遇異常或是結束後發送通知(toast與狀態欄提示) #備份與恢復遭遇異常或是結束後發送通知(toast與狀態欄提示)
toast_info=0 toast_info=0
@@ -16,7 +13,7 @@ toast_info=0
update=0 update=0
#檢測到更新後的行為(1跳轉瀏覽器 0不跳轉瀏覽器但是複製連結到剪裁版) #檢測到更新後的行為(1跳轉瀏覽器 0不跳轉瀏覽器但是複製連結到剪裁版)
update_behavior=1 update_behavior=0
#假設如果存在usb隨身碟是否默認使用隨身碟(1不詢問默認使用 0每次都進行詢問) #假設如果存在usb隨身碟是否默認使用隨身碟(1不詢問默認使用 0每次都進行詢問)
USBdefault=0 USBdefault=0
@@ -31,14 +28,14 @@ Backup_user_data=1
Backup_obb_data=1 Backup_obb_data=1
#是否在應用數據備份好後備份自定義目錄 #是否在應用數據備份好後備份自定義目錄
backup_media=1 backup_media=0
#添加自定義備份路徑 請勿刪除" " #添加自定義備份路徑 請勿刪除" "
Custom_path=" Custom_path="
/storage/emulated/0/Pictures /storage/emulated/0/Pictures
/storage/emulated/0/Download #/storage/emulated/0/Download
/storage/emulated/0/Music #/storage/emulated/0/Music
/storage/emulated/0/DCIM #/storage/emulated/0/DCIM
" "
#壓縮算法(可用lz4 zstd tar tar為僅打包 有什麼好用的壓縮算法請聯繫我 #壓縮算法(可用lz4 zstd tar tar為僅打包 有什麼好用的壓縮算法請聯繫我

View File

@@ -111,12 +111,22 @@ endtime() {
nskg=1 nskg=1
Print() { Print() {
if [[ $toast_info = true ]]; then if [[ $toast_info = true ]]; then
if [[ $(pm path ice.message) = "" ]]; then
echoRgb "未安裝toast 開始安裝" "0"
cp -r "${bin_path%/*}/apk"/*.apk "$TMPDIR" && pm install --user 0 -r "$TMPDIR"/*.apk &>/dev/null && rm -rf "$TMPDIR"/*
[[ $? = 0 ]] && echoRgb "安裝toast成功" "1" || echoRgb "安裝toast失敗" "0"
fi
a=$(echo "backup-$(date '+%T')" | sed 's#/#{xiegang}#g') a=$(echo "backup-$(date '+%T')" | sed 's#/#{xiegang}#g')
b=$(echo "$1" | sed 's#/#{xiegang}#g') b=$(echo "$1" | sed 's#/#{xiegang}#g')
content query --uri content://ice.message/notify/"$nskg<|>$a<|>$b<|>bs" >/dev/null 2>&1 content query --uri content://ice.message/notify/"$nskg<|>$a<|>$b<|>bs" >/dev/null 2>&1
fi fi
} }
longToast() { longToast() {
if [[ $(pm path ice.message) = "" ]]; then
echoRgb "未安裝toast 開始安裝" "0"
cp -r "${bin_path%/*}/apk"/*.apk "$TMPDIR" && pm install --user 0 -r "$TMPDIR"/*.apk &>/dev/null && rm -rf "$TMPDIR"/*
[[ $? = 0 ]] && echoRgb "安裝toast成功" "1" || echoRgb "安裝toast失敗" "0"
fi
[[ $toast_info = true ]] && content query --uri content://ice.message/long/"$*" >/dev/null 2>&1 [[ $toast_info = true ]] && content query --uri content://ice.message/long/"$*" >/dev/null 2>&1
} }
echoRgb() { echoRgb() {
@@ -193,23 +203,21 @@ ykj() {
} }
[[ -f /sys/block/sda/size ]] && ROM_TYPE="UFS" || ROM_TYPE="eMMC" [[ -f /sys/block/sda/size ]] && ROM_TYPE="UFS" || ROM_TYPE="eMMC"
if [[ -f /proc/scsi/scsi ]]; then if [[ -f /proc/scsi/scsi ]]; then
UFS_MODEL="$(sed -n 3p /proc/scsi/scsi | awk '/Vendor/{print $2}')" UFS_MODEL="$(sed -n 3p /proc/scsi/scsi | awk '/Vendor/{print $2,$4}')"
Particles="$(sed -n 3p /proc/scsi/scsi | awk '/Vendor/{print $4}')"
else else
if [[ $(cat "/sys/class/block/sda/device/inquiry" 2>/dev/null) != "" ]]; then
UFS_MODEL="$(cat "/sys/class/block/sda/device/inquiry")"
else
UFS_MODEL="unknown" UFS_MODEL="unknown"
fi
fi fi
#-閃存類型:$ROM_TYPE #-閃存類型:$ROM_TYPE
#-閃存顆粒:$UFS_MODEL $Particles #-閃存顆粒:$UFS_MODEL $Particles
Open_apps="$(appinfo -d "(" -ed ")" -o ands,pn -ta c)" Open_apps="$(appinfo -d "(" -ed ")" -o ands,pn -ta c)"
Open_apps2="$(echo "$Open_apps" | cut -f2 -d '(' | sed 's/)//g')" Open_apps2="$(echo "$Open_apps" | cut -f2 -d '(' | sed 's/)//g')"
bn=218 bn=218
echoRgb "\n --------------###############--------------\n -當前腳本執行路徑:$MODDIR\n -busybox路徑:$(which busybox)\n -busybox版本:$(busybox | head -1 | awk '{print $2}')\n -appinfo版本:$(appinfo --version)\n -腳本版本:$backup_version\n -Magisk版本:$(cat "/data/adb/magisk/util_functions.sh" 2>/dev/null | grep "MAGISK_VER_CODE" | cut -f2 -d '=')\n -設備架構:$abi\n -品牌:$(getprop ro.product.brand 2>/dev/null)\n -設備代號:$(getprop ro.product.device 2>/dev/null)\n -型號:$(getprop ro.product.model 2>/dev/null)-$(getprop ro.serialno 2>/dev/null)\n -RAM:$(cat /proc/meminfo 2>/dev/null | head -n 1 | awk '{print $2/1000"MB"}' 2>/dev/null)\n -閃存類型:$ROM_TYPE\n -閃存顆粒:$UFS_MODEL $Particles\n -Android版本:$(getprop ro.build.version.release 2>/dev/null)\n -SDK:$(getprop ro.build.version.sdk 2>/dev/null)\n -終端:$Open_apps" echoRgb "\n --------------###############--------------\n -當前腳本執行路徑:$MODDIR\n -busybox路徑:$(which busybox)\n -busybox版本:$(busybox | head -1 | awk '{print $2}')\n -appinfo版本:$(appinfo --version)\n -腳本版本:$backup_version\n -Magisk版本:$(cat "/data/adb/magisk/util_functions.sh" 2>/dev/null | grep "MAGISK_VER_CODE" | cut -f2 -d '=')\n -設備架構:$abi\n -品牌:$(getprop ro.product.brand 2>/dev/null)\n -設備代號:$(getprop ro.product.device 2>/dev/null)\n -型號:$(getprop ro.product.model 2>/dev/null)-$(getprop ro.serialno 2>/dev/null)\n -RAM:$(cat /proc/meminfo 2>/dev/null | head -n 1 | awk '{print $2/1000"MB"}' 2>/dev/null)\n -閃存類型:$ROM_TYPE\n -閃存顆粒:$UFS_MODEL\n -Android版本:$(getprop ro.build.version.release 2>/dev/null)\n -SDK:$(getprop ro.build.version.sdk 2>/dev/null)\n -終端:$Open_apps"
bn=117 bn=117
if [[ $(pm path ice.message) = "" ]]; then
echoRgb "未安裝toast 開始安裝" "0"
cp -r "${bin_path%/*}/apk"/*.apk "$TMPDIR" && pm install --user 0 -r "$TMPDIR"/*.apk &>/dev/null && rm -rf "$TMPDIR"/*
[[ $? = 0 ]] && echoRgb "安裝toast成功" "1" || echoRgb "安裝toast失敗" "0"
fi
zippath="$(find "$MODDIR" -maxdepth 1 -name "*.zip" -type f 2>/dev/null)" zippath="$(find "$MODDIR" -maxdepth 1 -name "*.zip" -type f 2>/dev/null)"
if [[ $zippath != "" ]]; then if [[ $zippath != "" ]]; then
case $(echo "$zippath" | wc -l) in case $(echo "$zippath" | wc -l) in

View File

@@ -160,20 +160,13 @@ backup)
echoRgb "請執行\"Getlist.sh\"獲取應用列表再來備份" "0" && exit 1 echoRgb "請執行\"Getlist.sh\"獲取應用列表再來備份" "0" && exit 1
else else
cat "$txt" | grep -v "#" | while read; do cat "$txt" | grep -v "#" | while read; do
name=($REPLY $REPLY $REPLY) name=($REPLY $REPLY)
if [[ $REPLY != "" && ${name[1]} != "" && $(pm path "${name[1]}" | cut -f2 -d ':') = "" ]]; then if [[ $REPLY != "" && ${name[1]} != "" && $(pm path "${name[1]}" | cut -f2 -d ':') = "" ]]; then
echoRgb "${name[3]}不存在系統,從列表中刪除" "0" echoRgb "${name[2]}不存在系統,從列表中刪除" "0"
echo "$(sed -e "s/$REPLY//g ; /^$/d" "$txt")" >"$txt" echo "$(sed -e "s/$REPLY//g ; /^$/d" "$txt")" >"$txt"
fi fi
done done
echo "$(sed -e '/^$/d' "$txt")" >"$txt" echo "$(sed -e '/^$/d' "$txt")" >"$txt"
if [[ -f $MODDIR/systemList.txt ]]; then
cat "$txt" >"$TMPDIR/applist" && cat "$MODDIR/systemList.txt" >>"$TMPDIR/applist"
[[ -f $TMPDIR/applist ]] && txt="$TMPDIR/applist"
echoRgb "列表內包含系統應用 針對系統應用僅備份數據不備份apk" "2"
else
echoRgb "僅第三方應用" "2"
fi
fi fi
r="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n '$=')" r="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n '$=')"
[[ $r = "" ]] && echoRgb "爬..appList.txt是空的或是包名被注釋了這樣備份個鬼" "0" && exit 1 [[ $r = "" ]] && echoRgb "爬..appList.txt是空的或是包名被注釋了這樣備份個鬼" "0" && exit 1
@@ -194,6 +187,7 @@ backup)
outshow="使用當前路徑作為備份目錄" outshow="使用當前路徑作為備份目錄"
fi fi
fi fi
PU="$(ls /dev/block/vold | grep public)"
if [[ $PU != "" ]]; then if [[ $PU != "" ]]; then
[[ -f /proc/mounts ]] && PT="$(cat /proc/mounts | grep "$PU" | awk '{print $2}')" [[ -f /proc/mounts ]] && PT="$(cat /proc/mounts | grep "$PU" | awk '{print $2}')"
if [[ -d $PT ]]; then if [[ -d $PT ]]; then
@@ -257,7 +251,6 @@ backup)
result=0 result=0
echoRgb "Apk版本無更新 跳過備份" "2" echoRgb "Apk版本無更新 跳過備份" "2"
else else
if [[ $name3 != system ]]; then
case $name2 in case $name2 in
com.google.android.youtube) com.google.android.youtube)
[[ -d /data/adb/Vanced ]] && nobackup="true" [[ -d /data/adb/Vanced ]] && nobackup="true"
@@ -267,7 +260,7 @@ backup)
;; ;;
esac esac
if [[ $nobackup != true ]]; then if [[ $nobackup != true ]]; then
[[ $(cat "$txt2" | grep -v "#" | sed -e '/^$/d' | awk '{print $2}' | grep -w "^${name2}$" | head -1) = "" ]] && echo "${Backup_folder##*/} $name2 $name3" >>"$txt2" [[ $(cat "$txt2" | grep -v "#" | sed -e '/^$/d' | awk '{print $2}' | grep -w "^${name2}$" | head -1) = "" ]] && echo "${Backup_folder##*/} $name2" >>"$txt2"
partition_info partition_info
[[ $lxj -ge 95 ]] && echoRgb "$hx空間不足,達到$lxj%" "0" && exit 2 [[ $lxj -ge 95 ]] && echoRgb "$hx空間不足,達到$lxj%" "0" && exit 2
rm -rf "$Backup_folder"/*.apk rm -rf "$Backup_folder"/*.apk
@@ -295,7 +288,6 @@ backup)
echo "apk_version=\"$(dumpsys package "$name2" | awk '/versionName=/{print $1}' | cut -f2 -d '=' | head -1)\"" >>"$app_details" echo "apk_version=\"$(dumpsys package "$name2" | awk '/versionName=/{print $1}' | cut -f2 -d '=' | head -1)\"" >>"$app_details"
[[ $PackageName = "" ]] && echo "PackageName=\"$name2\"" >>"$app_details" [[ $PackageName = "" ]] && echo "PackageName=\"$name2\"" >>"$app_details"
[[ $ChineseName = "" ]] && echo "ChineseName=\"$name1\"" >>"$app_details" [[ $ChineseName = "" ]] && echo "ChineseName=\"$name1\"" >>"$app_details"
[[ $type = "" ]] && echo "type=\"$name3\"" >>"$app_details"
[[ ! -f $Backup_folder/Restorebackup.sh ]] && cp -r "$script_path/restore2" "$Backup_folder/Restorebackup.sh" [[ ! -f $Backup_folder/Restorebackup.sh ]] && cp -r "$script_path/restore2" "$Backup_folder/Restorebackup.sh"
fi fi
if [[ $name2 = com.android.chrome ]]; then if [[ $name2 = com.android.chrome ]]; then
@@ -312,13 +304,6 @@ backup)
else else
echoRgb "$name不支持備份 需要使用vanced安裝" "0" && rm -rf "$Backup_folder" echoRgb "$name不支持備份 需要使用vanced安裝" "0" && rm -rf "$Backup_folder"
fi fi
else
echoRgb "$name2為系統應用不備份apk" "3" && result="0"
[[ $PackageName = "" ]] && echo "PackageName=\"$name2\"" >>"$app_details"
[[ $ChineseName = "" ]] && echo "ChineseName=\"$name1\"" >>"$app_details"
[[ $type = "" ]] && echo "type=\"$name3\"" >>"$app_details"
[[ ! -f $Backup_folder/Restorebackup.sh ]] && cp -r "$script_path/restore2" "$Backup_folder/Restorebackup.sh"
fi
fi fi
[[ $name2 = bin.mt.plus && ! -f $Backup/$name1.apk ]] && cp -r "$apk_path" "$Backup/$name1.apk" [[ $name2 = bin.mt.plus && ! -f $Backup/$name1.apk ]] && cp -r "$apk_path" "$Backup/$name1.apk"
D=1 D=1
@@ -394,7 +379,6 @@ backup)
unset name1 name2 apk_path apk_path2 result unset name1 name2 apk_path apk_path2 result
name1="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $1}')" name1="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $1}')"
name2="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $2}')" name2="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $2}')"
name3="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $3}')"
[[ $name2 = "" ]] && echoRgb "警告! appList.txt應用包名獲取失敗可能修改有問題" "0" && exit 1 [[ $name2 = "" ]] && echoRgb "警告! appList.txt應用包名獲取失敗可能修改有問題" "0" && exit 1
apk_path="$(pm path "$name2" | cut -f2 -d ':')" apk_path="$(pm path "$name2" | cut -f2 -d ':')"
apk_path2="$(echo "$apk_path" | head -1)" apk_path2="$(echo "$apk_path" | head -1)"
@@ -670,7 +654,6 @@ Restore)
echoRgb "恢複第$i/$r個應用 剩下$((r - i))" "3" echoRgb "恢複第$i/$r個應用 剩下$((r - i))" "3"
name1="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $1}')" name1="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $1}')"
name2="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $2}')" name2="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $2}')"
name3="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $3}')"
unset No_backupdata unset No_backupdata
if [[ $name1 = *! || $name1 = * ]]; then if [[ $name1 = *! || $name1 = * ]]; then
name1="$(echo "$name1" | sed 's/!//g ; s///g')" name1="$(echo "$name1" | sed 's/!//g ; s///g')"
@@ -683,7 +666,6 @@ Restore)
if [[ -d $Backup_folder ]]; then if [[ -d $Backup_folder ]]; then
echoRgb "恢複$name1 ($name2)" echoRgb "恢複$name1 ($name2)"
starttime2="$(date -u "+%s")" starttime2="$(date -u "+%s")"
if [[ $name3 != system ]]; then
if [[ $(pm path "$name2") = "" ]]; then if [[ $(pm path "$name2") = "" ]]; then
apkfile="$(find "$Backup_folder" -maxdepth 1 -name "apk.*" -type f 2>/dev/null)" apkfile="$(find "$Backup_folder" -maxdepth 1 -name "apk.*" -type f 2>/dev/null)"
if [[ $apkfile != "" ]]; then if [[ $apkfile != "" ]]; then
@@ -729,9 +711,6 @@ Restore)
else else
echoRgb "存在當前系統中略過安裝Apk" "2" echoRgb "存在當前系統中略過安裝Apk" "2"
fi fi
else
echoRgb "$name2是系統應用" "3"
fi
if [[ $No_backupdata = "" ]]; then if [[ $No_backupdata = "" ]]; then
if [[ $(pm path "$name2") != "" ]]; then if [[ $(pm path "$name2") != "" ]]; then
#停止應用 #停止應用
@@ -815,11 +794,8 @@ Restore2)
[[ $name = "" ]] && echoRgb "包名獲取失敗" "0" && exit 2 [[ $name = "" ]] && echoRgb "包名獲取失敗" "0" && exit 2
name2="$ChineseName" name2="$ChineseName"
[[ $name2 = "" ]] && echoRgb "應用名獲取失敗" "0" && exit 2 [[ $name2 = "" ]] && echoRgb "應用名獲取失敗" "0" && exit 2
name3="$type"
[[ $name3 = "" ]] && echoRgb "應用類型獲取失敗" "0" && exit 2
echoRgb "恢複$name2 ($name)" "3" echoRgb "恢複$name2 ($name)" "3"
starttime2="$(date -u "+%s")" starttime2="$(date -u "+%s")"
if [[ $name3 != "" ]]; then
if [[ $(pm path "$name") = "" ]]; then if [[ $(pm path "$name") = "" ]]; then
apkfile="$(find "$Backup_folder" -maxdepth 1 -name "apk.*" -type f 2>/dev/null)" apkfile="$(find "$Backup_folder" -maxdepth 1 -name "apk.*" -type f 2>/dev/null)"
if [[ $apkfile != "" ]]; then if [[ $apkfile != "" ]]; then
@@ -865,9 +841,6 @@ Restore2)
else else
echoRgb "存在當前系統中略過安裝Apk" "2" echoRgb "存在當前系統中略過安裝Apk" "2"
fi fi
else
echoRgb "$name2是系統應用" "3"
fi
if [[ $(pm path "$name") != "" ]]; then if [[ $(pm path "$name") != "" ]]; then
#停止應用 #停止應用
[[ $name != $Open_apps2 ]] && am force-stop "$name" [[ $name != $Open_apps2 ]] && am force-stop "$name"
@@ -1042,12 +1015,9 @@ com.android.chrome"
isBoolean "$Lo" "LO" && Lo="$nsx" isBoolean "$Lo" "LO" && Lo="$nsx"
if [[ $Lo = false ]]; then if [[ $Lo = false ]]; then
isBoolean "$update" "update" && update="$nsx" isBoolean "$update" "update" && update="$nsx"
isBoolean "$system_name" "system_name" && system_name="$nsx"
else else
echoRgb "如果檢測到更新後跳轉瀏覽器下載?\n -音量上跳轉,下不跳轉" echoRgb "如果檢測到更新後跳轉瀏覽器下載?\n -音量上跳轉,下不跳轉"
get_version "跳轉" "不跳轉" && update="$branch" get_version "跳轉" "不跳轉" && update="$branch"
echoRgb "列出系統應用?\n -音量上列出,音量下不列出" "2"
get_version "列出" "不列出" && system_name="$branch"
fi fi
update_script update_script
echoRgb "請勿關閉腳本,等待提示結束" echoRgb "請勿關閉腳本,等待提示結束"
@@ -1059,30 +1029,6 @@ com.android.chrome"
Apk_info="$(appinfo -sort-i -d " " -o ands,pn -pn $system $launcher_app -3 2>/dev/null | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)" Apk_info="$(appinfo -sort-i -d " " -o ands,pn -pn $system $launcher_app -3 2>/dev/null | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)"
Apk_Quantity="$(echo "$Apk_info" | wc -l)" Apk_Quantity="$(echo "$Apk_info" | wc -l)"
LR="1" LR="1"
if [[ $system_name = true ]]; then
echoRgb "第三方+系統應用\n -列出系統應用....." "2"
echoRgb "警告!系統應用將不備份apk僅備份數據\n -請勿跨系統恢復防止出現問題,原生系統則不受此限制\n -另外腳本會自動檢測系統應用是否存在,否則不進行數據恢復" "0"
nametxt2="$txtpath/systemList.txt"
Apk_info2="$(appinfo -sort-i -d " " -o ands,pn -s 2>/dev/null | egrep -v "$(echo $system | sed 's/ /\|/g')")"
Apk_Quantity2="$(echo "$Apk_info2" | wc -l)"
i="0"
Q="0"
echo "$Apk_info2" | sed 's/\///g ; s/\://g ; s/(//g ; s/)//g ; s/\[//g ; s/\]//g ; s/\-//g ; s/!//g' | while read; do
[[ $bn -ge 229 ]] && bn=118
app_1=($REPLY $REPLY)
if [[ $(cat "$nametxt2" 2>/dev/null | cut -f2 -d ' ' | egrep "^${app_1[1]}$") != ${app_1[1]} ]]; then
echo "$REPLY system" >>"$nametxt2" && [[ ! -e $MODDIR/tmp ]] && touch "$MODDIR/tmp"
echoRgb "$REPLY($bn)"
let i++
else
let Q++
fi
[[ $LR = $Apk_Quantity2 ]] && [[ -e $MODDIR/tmp ]] && echoRgb "\n -系統apk數量=\"$Apk_Quantity2\"\n -存在列表中=\"$Q\"\n -輸出=\"$i\"" && LR="1"
let bn++ LR++
done
else
echoRgb "僅第三方" "2" && rm -rf "$txtpath/systemList.txt"
fi
echoRgb "列出第三方應用......." "2" echoRgb "列出第三方應用......." "2"
i="0" i="0"
rc="0" rc="0"

Binary file not shown.