bugfix
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
Lo=0
|
Lo=0
|
||||||
|
|
||||||
#備份時檢查資料夾是否存在已經卸載應用 有則音量鍵選擇刪除或是移動到恢復資料夾/被卸載的應用
|
#備份時檢查資料夾是否存在已經卸載應用 有則音量鍵選擇刪除或是移動到恢復資料夾/被卸載的應用
|
||||||
delete_folder=0
|
delete_folder=1
|
||||||
|
|
||||||
#自定義備份目錄輸出位置 (忽略為空將默認腳本路徑中)
|
#自定義備份目錄輸出位置 (忽略為空將默認腳本路徑中)
|
||||||
Output_path=
|
Output_path=
|
||||||
@@ -13,10 +13,10 @@ Output_path=
|
|||||||
toast_info=1
|
toast_info=1
|
||||||
|
|
||||||
#腳本檢測更新後進行跳轉瀏覽器或是複製連結?
|
#腳本檢測更新後進行跳轉瀏覽器或是複製連結?
|
||||||
update=0
|
update=1
|
||||||
|
|
||||||
#檢測到更新後的行為(1跳轉瀏覽器 0不跳轉瀏覽器,但是複製連結到剪裁版)
|
#檢測到更新後的行為(1跳轉瀏覽器 0不跳轉瀏覽器,但是複製連結到剪裁版)
|
||||||
update_behavior=0
|
update_behavior=1
|
||||||
|
|
||||||
#假設如果存在usb隨身碟是否默認使用隨身碟?(1不詢問默認使用 0每次都進行詢問)
|
#假設如果存在usb隨身碟是否默認使用隨身碟?(1不詢問默認使用 0每次都進行詢問)
|
||||||
USBdefault=0
|
USBdefault=0
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ else
|
|||||||
echo "Magisk busybox Path does not exist"
|
echo "Magisk busybox Path does not exist"
|
||||||
fi
|
fi
|
||||||
export PATH="$PATH"
|
export PATH="$PATH"
|
||||||
backup_version="V14.5"
|
backup_version="V14.6"
|
||||||
#設置二進制命令目錄位置
|
#設置二進制命令目錄位置
|
||||||
[[ $bin_path = "" ]] && echo "未正確指定bin.sh位置" && exit 2
|
[[ $bin_path = "" ]] && echo "未正確指定bin.sh位置" && exit 2
|
||||||
#bin_path="${bin_path/'/storage/emulated/'/'/data/media/'}"
|
#bin_path="${bin_path/'/storage/emulated/'/'/data/media/'}"
|
||||||
@@ -204,7 +204,7 @@ fi
|
|||||||
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\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:$(awk '($1 == "MemTotal:"){print $2/1000"MB"}' /proc/meminfo)\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
|
||||||
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
|
||||||
|
|||||||
@@ -191,6 +191,7 @@ backup)
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
PU="$(ls /dev/block/vold | grep public)"
|
PU="$(ls /dev/block/vold | grep public)"
|
||||||
|
echo $PU
|
||||||
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
|
||||||
@@ -222,36 +223,38 @@ backup)
|
|||||||
D="1"
|
D="1"
|
||||||
C="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n '$=')"
|
C="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n '$=')"
|
||||||
if [[ $delete_folder = true ]]; then
|
if [[ $delete_folder = true ]]; then
|
||||||
echoRgb "腳本開始前檢查備份目錄中是否存在已經卸載應用" "3"
|
if [[ -d $Backup ]]; then
|
||||||
echoRgb "檢查到已卸載應用操作?\n -音量上刪除資料夾,下移動到其他處"
|
echoRgb "腳本開始前檢查備份目錄中是否存在已經卸載應用" "3"
|
||||||
get_version "刪除" "移動到其他處" && operate="$branch"
|
echoRgb "檢查到已卸載應用操作?\n -音量上刪除資料夾,下移動到其他處"
|
||||||
find "$Backup" -maxdepth 1 -type d | sort | while read; do
|
get_version "刪除" "移動到其他處" && operate="$branch"
|
||||||
if [[ -f $REPLY/app_details ]]; then
|
find "$Backup" -maxdepth 1 -type d | sort | while read; do
|
||||||
unset PackageName
|
if [[ -f $REPLY/app_details ]]; then
|
||||||
. "$REPLY/app_details"
|
unset PackageName
|
||||||
if [[ $PackageName != "" && $(pm path "$PackageName" | cut -f2 -d ':') = "" ]]; then
|
. "$REPLY/app_details"
|
||||||
if [[ $operate = true ]]; then
|
if [[ $PackageName != "" && $(pm path "$PackageName" | cut -f2 -d ':') = "" ]]; then
|
||||||
rm -rf "$REPLY"
|
if [[ $operate = true ]]; then
|
||||||
echoRgb "${REPLY##*/}不存在系統 刪除資料夾" "0"
|
rm -rf "$REPLY"
|
||||||
else
|
echoRgb "${REPLY##*/}不存在系統 刪除資料夾" "0"
|
||||||
if [[ ! -d $Backup/被卸載的應用 ]]; then
|
|
||||||
mkdir -p "$Backup/被卸載的應用" && mv "$REPLY" "$Backup/被卸載的應用/"
|
|
||||||
else
|
else
|
||||||
mv "$REPLY" "$Backup/被卸載的應用/"
|
if [[ ! -d $Backup/被卸載的應用 ]]; then
|
||||||
|
mkdir -p "$Backup/被卸載的應用" && mv "$REPLY" "$Backup/被卸載的應用/"
|
||||||
|
else
|
||||||
|
mv "$REPLY" "$Backup/被卸載的應用/"
|
||||||
|
fi
|
||||||
|
[[ ! -d $Backup/被卸載的應用/tools ]] && cp -r "$tools_path" "$Backup/被卸載的應用" && rm -rf "$Backup/被卸載的應用/tools/bin/zip" "$Backup/被卸載的應用/tools/script"
|
||||||
|
[[ ! -f $Backup/被卸載的應用/Restorebackup.sh ]] && cp -r "$script_path/restore" "$Backup/被卸載的應用/Restorebackup.sh"
|
||||||
|
[[ ! -f $Backup/被卸載的應用/DumpName.sh ]] && cp -r "$script_path/Get_DirName" "$Backup/被卸載的應用/DumpName.sh"
|
||||||
|
[[ ! -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#檢測到更新後的行為(1跳轉瀏覽器 0不跳轉瀏覽器,但是複製連結到剪裁版)\nupdate_behavior=$update_behavior">"$Backup/被卸載的應用/backup_settings.conf" && echo "$(sed 's/true/1/g ; s/false/0/g' "$Backup/backup_settings.conf")">"$Backup/被卸載的應用/backup_settings.conf"
|
||||||
|
txt2="$Backup/被卸載的應用/appList.txt"
|
||||||
|
[[ ! -f $txt2 ]] && echo "#不需要恢復還原的應用請在開頭注釋# 比如#xxxxxxxx 酷安">"$txt2"
|
||||||
|
echo "${REPLY##*/} $PackageName">>"$txt2"
|
||||||
|
echo "$(sed -e "s/${REPLY##*/} $PackageName//g ; /^$/d" "$Backup/appList.txt")" >"$Backup/appList.txt"
|
||||||
|
echoRgb "${REPLY##*/}不存在系統 已移動到$Backup/被卸載的應用" "0"
|
||||||
fi
|
fi
|
||||||
[[ ! -d $Backup/被卸載的應用/tools ]] && cp -r "$tools_path" "$Backup/被卸載的應用" && rm -rf "$Backup/被卸載的應用/tools/bin/zip" "$Backup/被卸載的應用/tools/script"
|
|
||||||
[[ ! -f $Backup/被卸載的應用/Restorebackup.sh ]] && cp -r "$script_path/restore" "$Backup/被卸載的應用/Restorebackup.sh"
|
|
||||||
[[ ! -f $Backup/被卸載的應用/DumpName.sh ]] && cp -r "$script_path/Get_DirName" "$Backup/被卸載的應用/DumpName.sh"
|
|
||||||
[[ ! -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#檢測到更新後的行為(1跳轉瀏覽器 0不跳轉瀏覽器,但是複製連結到剪裁版)\nupdate_behavior=$update_behavior">"$Backup/被卸載的應用/backup_settings.conf" && echo "$(sed 's/true/1/g ; s/false/0/g' "$Backup/backup_settings.conf")">"$Backup/被卸載的應用/backup_settings.conf"
|
|
||||||
txt2="$Backup/被卸載的應用/appList.txt"
|
|
||||||
[[ ! -f $txt2 ]] && echo "#不需要恢復還原的應用請在開頭注釋# 比如#xxxxxxxx 酷安">"$txt2"
|
|
||||||
echo "${REPLY##*/} $PackageName">>"$txt2"
|
|
||||||
echo "$(sed -e "s/${REPLY##*/} $PackageName//g ; /^$/d" "$Backup/appList.txt")" >"$Backup/appList.txt"
|
|
||||||
echoRgb "${REPLY##*/}不存在系統 已移動到$Backup/被卸載的應用" "0"
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
done
|
||||||
done
|
fi
|
||||||
fi
|
fi
|
||||||
echoRgb "檢查備份列表中是否存在已經卸載應用" "3"
|
echoRgb "檢查備份列表中是否存在已經卸載應用" "3"
|
||||||
while [[ $D -le $C ]]; do
|
while [[ $D -le $C ]]; do
|
||||||
@@ -298,6 +301,7 @@ backup)
|
|||||||
[[ ! -d $Backup_folder ]] && mkdir -p "$Backup_folder"
|
[[ ! -d $Backup_folder ]] && mkdir -p "$Backup_folder"
|
||||||
if [[ $apk_version = $(dumpsys package "$name2" | awk '/versionName=/{print $1}' | cut -f2 -d '=' | head -1) ]]; then
|
if [[ $apk_version = $(dumpsys package "$name2" | awk '/versionName=/{print $1}' | cut -f2 -d '=' | head -1) ]]; then
|
||||||
unset xb
|
unset xb
|
||||||
|
let osj++
|
||||||
result=0
|
result=0
|
||||||
echoRgb "Apk版本無更新 跳過備份" "2"
|
echoRgb "Apk版本無更新 跳過備份" "2"
|
||||||
else
|
else
|
||||||
@@ -310,6 +314,7 @@ backup)
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
if [[ $nobackup != true ]]; then
|
if [[ $nobackup != true ]]; then
|
||||||
|
let osn++
|
||||||
apk_version2="$(dumpsys package "$name2" | awk '/versionName=/{print $1}' | cut -f2 -d '=' | head -1)"
|
apk_version2="$(dumpsys package "$name2" | awk '/versionName=/{print $1}' | cut -f2 -d '=' | head -1)"
|
||||||
if [[ $apk_version != "" ]]; then
|
if [[ $apk_version != "" ]]; then
|
||||||
echoRgb "版本:$apk_version>$apk_version2"
|
echoRgb "版本:$apk_version>$apk_version2"
|
||||||
@@ -391,6 +396,7 @@ backup)
|
|||||||
echoRgb "備份$1數據"
|
echoRgb "備份$1數據"
|
||||||
case $1 in
|
case $1 in
|
||||||
user)
|
user)
|
||||||
|
let osx++
|
||||||
case $Compression_method in
|
case $Compression_method in
|
||||||
tar | Tar | TAR) tar --exclude="${data_path##*/}/.ota" --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/lib" -cpf - -C "${data_path%/*}" "${data_path##*/}" 2>/dev/null | pv >"$Backup_folder/$1.tar" ;;
|
tar | Tar | TAR) tar --exclude="${data_path##*/}/.ota" --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/lib" -cpf - -C "${data_path%/*}" "${data_path##*/}" 2>/dev/null | pv >"$Backup_folder/$1.tar" ;;
|
||||||
zstd | Zstd | ZSTD) tar --exclude="${data_path##*/}/.ota" --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/lib" -cpf - -C "${data_path%/*}" "${data_path##*/}" 2>/dev/null | pv | zstd -r -T0 --ultra -6 -q --priority=rt >"$Backup_folder/$1.tar.zst" ;;
|
zstd | Zstd | ZSTD) tar --exclude="${data_path##*/}/.ota" --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/lib" -cpf - -C "${data_path%/*}" "${data_path##*/}" 2>/dev/null | pv | zstd -r -T0 --ultra -6 -q --priority=rt >"$Backup_folder/$1.tar.zst" ;;
|
||||||
@@ -398,6 +404,10 @@ backup)
|
|||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
case $1 in
|
||||||
|
data) let osb++ ;;
|
||||||
|
obb) let osg++ ;;
|
||||||
|
esac
|
||||||
case $Compression_method in
|
case $Compression_method in
|
||||||
tar | Tar | TAR) tar --exclude="Backup_"* --exclude="${data_path##*/}/cache" -cPpf - "$data_path" 2>/dev/null | pv >"$Backup_folder/$1.tar" ;;
|
tar | Tar | TAR) tar --exclude="Backup_"* --exclude="${data_path##*/}/cache" -cPpf - "$data_path" 2>/dev/null | pv >"$Backup_folder/$1.tar" ;;
|
||||||
zstd | Zstd | ZSTD) tar --exclude="Backup_"* --exclude="${data_path##*/}/cache" -cPpf - "$data_path" 2>/dev/null | pv | zstd -r -T0 --ultra -6 -q --priority=rt >"$Backup_folder/$1.tar.zst" ;;
|
zstd | Zstd | ZSTD) tar --exclude="Backup_"* --exclude="${data_path##*/}/cache" -cPpf - "$data_path" 2>/dev/null | pv | zstd -r -T0 --ultra -6 -q --priority=rt >"$Backup_folder/$1.tar.zst" ;;
|
||||||
@@ -428,6 +438,11 @@ backup)
|
|||||||
if [[ -f $data_path ]]; then
|
if [[ -f $data_path ]]; then
|
||||||
echoRgb "$1是一個文件 不支持備份" "0"
|
echoRgb "$1是一個文件 不支持備份" "0"
|
||||||
else
|
else
|
||||||
|
case $1 in
|
||||||
|
user) let osz++ ;;
|
||||||
|
data) let osd++ ;;
|
||||||
|
obb) let ose++ ;;
|
||||||
|
esac
|
||||||
echoRgb "$1數據不存在跳過備份" "2"
|
echoRgb "$1數據不存在跳過備份" "2"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -439,6 +454,14 @@ backup)
|
|||||||
TIME="$starttime1"
|
TIME="$starttime1"
|
||||||
en=118
|
en=118
|
||||||
{
|
{
|
||||||
|
osn=0
|
||||||
|
osx=0
|
||||||
|
osb=0
|
||||||
|
osg=0
|
||||||
|
osz=0
|
||||||
|
osd=0
|
||||||
|
ose=0
|
||||||
|
osj=0
|
||||||
while [[ $i -le $r ]]; do
|
while [[ $i -le $r ]]; do
|
||||||
[[ $en -ge 229 ]] && en=118
|
[[ $en -ge 229 ]] && en=118
|
||||||
unset name1 name2 apk_path apk_path2
|
unset name1 name2 apk_path apk_path2
|
||||||
@@ -509,6 +532,7 @@ backup)
|
|||||||
fi
|
fi
|
||||||
if [[ $i = $r ]]; then
|
if [[ $i = $r ]]; then
|
||||||
endtime 1 "應用備份" "3"
|
endtime 1 "應用備份" "3"
|
||||||
|
echoRgb "\n -已更新的apk=\"$osn\"\n -apk版本號無變化=\"$osj\"\n -user數據已備份=\"$osx\"\n -data數據已備份=\"$osb\"\n -obb數據已備份=\"$osg\"\n -user數據不存在=\"$osz\"\n -obb數據不存在=\"$osd\"\n -obb數據不存在=\"$ose\""
|
||||||
if [[ $backup_media = true ]]; then
|
if [[ $backup_media = true ]]; then
|
||||||
A=1
|
A=1
|
||||||
B="$(echo "$Custom_path" | grep -v "#" | sed -e '/^$/d' | sed -n '$=')"
|
B="$(echo "$Custom_path" | grep -v "#" | sed -e '/^$/d' | sed -n '$=')"
|
||||||
@@ -705,7 +729,7 @@ Restore)
|
|||||||
[[ -d $path/$FILE_NAME2/$name2 ]] && chmod -R 0777 "$path/$FILE_NAME2/$name2"
|
[[ -d $path/$FILE_NAME2/$name2 ]] && chmod -R 0777 "$path/$FILE_NAME2/$name2"
|
||||||
;;
|
;;
|
||||||
thanox)
|
thanox)
|
||||||
restorecon -RF "$(find "/data/system" -name "thanos*" -maxdepth 1 -type d)/" >/dev/null 2>&1
|
restorecon -RF "$(find "/data/system" -name "thanos*" -maxdepth 1 -type d 2)/" >/dev/null 2>&1
|
||||||
echo_log "selinux上下文設置" && echoRgb "警告 thanox配置恢復後務必重啟\n -否則不生效" "0"
|
echo_log "selinux上下文設置" && echoRgb "警告 thanox配置恢復後務必重啟\n -否則不生效" "0"
|
||||||
;;
|
;;
|
||||||
storage-isolation)
|
storage-isolation)
|
||||||
@@ -1054,6 +1078,7 @@ Getlist)
|
|||||||
#白名單
|
#白名單
|
||||||
whitelist="com.xiaomi.xmsf
|
whitelist="com.xiaomi.xmsf
|
||||||
com.xiaomi.xiaoailite
|
com.xiaomi.xiaoailite
|
||||||
|
com.xiaomi.hm.health
|
||||||
com.duokan.phone.remotecontroller
|
com.duokan.phone.remotecontroller
|
||||||
com.miui.weather2
|
com.miui.weather2
|
||||||
com.milink.service
|
com.milink.service
|
||||||
|
|||||||
Reference in New Issue
Block a user