bugfix
This commit is contained in:
@@ -67,7 +67,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="V15.6.9"
|
backup_version="V15.7.0"
|
||||||
#bin_path="${bin_path/'/storage/emulated/'/'/data/media/'}"
|
#bin_path="${bin_path/'/storage/emulated/'/'/data/media/'}"
|
||||||
filepath="/data/backup_tools"
|
filepath="/data/backup_tools"
|
||||||
busybox="$filepath/busybox"
|
busybox="$filepath/busybox"
|
||||||
@@ -129,11 +129,16 @@ TMPDIR="/data/local/tmp"
|
|||||||
if [[ $(which busybox) = "" ]]; then
|
if [[ $(which busybox) = "" ]]; then
|
||||||
echoRgb "環境變量中沒有找到busybox 請在tools/bin內添加一個\narm64可用的busybox\n或是安裝搞機助手 scene或是Magisk busybox模塊...." "0"
|
echoRgb "環境變量中沒有找到busybox 請在tools/bin內添加一個\narm64可用的busybox\n或是安裝搞機助手 scene或是Magisk busybox模塊...." "0"
|
||||||
exit 1
|
exit 1
|
||||||
|
elif [[ $(which toybox | egrep -o "system") != system ]]; then
|
||||||
|
echoRgb "環境變量中沒有找到toybox" "0"
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#下列為自定義函數
|
#下列為自定義函數
|
||||||
alias appinfo="exec app_process /system/bin --nice-name=appinfo han.core.order.appinfo.AppInfo $@"
|
alias appinfo="exec app_process /system/bin --nice-name=appinfo han.core.order.appinfo.AppInfo $@"
|
||||||
alias down="exec app_process /system/bin --nice-name=down han.core.order.down.Down $@"
|
alias down="exec app_process /system/bin --nice-name=down han.core.order.down.Down $@"
|
||||||
alias zstd="zstd -T0 -1 -q --priority=rt"
|
alias zstd="zstd -T0 -1 -q --priority=rt"
|
||||||
|
alias LS="toybox ls -Zd"
|
||||||
alias lz4="zstd -T0 -1 -q --priority=rt --format=lz4"
|
alias lz4="zstd -T0 -1 -q --priority=rt --format=lz4"
|
||||||
Set_back() {
|
Set_back() {
|
||||||
return 1
|
return 1
|
||||||
@@ -809,11 +814,18 @@ Release_data() {
|
|||||||
FILE_NAME2="${FILE_NAME%%.*}"
|
FILE_NAME2="${FILE_NAME%%.*}"
|
||||||
case ${FILE_NAME##*.} in
|
case ${FILE_NAME##*.} in
|
||||||
lz4 | zst | tar)
|
lz4 | zst | tar)
|
||||||
unset FILE_PATH Size
|
unset FILE_PATH Size Selinux_state
|
||||||
case $FILE_NAME2 in
|
case $FILE_NAME2 in
|
||||||
user) [[ -d $X ]] && FILE_PATH="$path2" Size="$userSize" || echoRgb "$X不存在 無法恢復$FILE_NAME2數據" "0" ;;
|
user)
|
||||||
data) FILE_PATH="$path/data" Size="$dataSize";;
|
if [[ -d $X ]]; then
|
||||||
obb) FILE_PATH="$path/obb" Size="$obbSize";;
|
FILE_PATH="$path2"
|
||||||
|
Size="$userSize"
|
||||||
|
Selinux_state="$(LS "$X" | awk 'NF>1{print $1}' | sed -e "s/system_data_file/app_data_file/g" 2>/dev/null)"
|
||||||
|
else
|
||||||
|
echoRgb "$X不存在 無法恢復$FILE_NAME2數據" "0"
|
||||||
|
fi;;
|
||||||
|
data) FILE_PATH="$path/data" Size="$dataSize" Selinux_state="$(LS "$FILE_PATH" | awk 'NF>1{print $1}' | sed -e "s/system_data_file/app_data_file/g" 2>/dev/null)";;
|
||||||
|
obb) FILE_PATH="$path/obb" Size="$obbSize" Selinux_state="$(LS "$FILE_PATH" | awk 'NF>1{print $1}' | sed -e "s/system_data_file/app_data_file/g" 2>/dev/null)";;
|
||||||
thanox) FILE_PATH="/data/system" Size="$(cat "$app_details" | awk "/${FILE_NAME2}Size/"'{print $1}' | cut -f2 -d '=' | tail -n1 | sed 's/\"//g')" && find "/data/system" -name "thanos*" -maxdepth 1 -type d -exec rm -rf {} \; 2>/dev/null ;;
|
thanox) FILE_PATH="/data/system" Size="$(cat "$app_details" | awk "/${FILE_NAME2}Size/"'{print $1}' | cut -f2 -d '=' | tail -n1 | sed 's/\"//g')" && find "/data/system" -name "thanos*" -maxdepth 1 -type d -exec rm -rf {} \; 2>/dev/null ;;
|
||||||
storage-isolation) FILE_PATH="/data/adb" Size="$(cat "$app_details" | awk "/${FILE_NAME2}Size/"'{print $1}' | cut -f2 -d '=' | tail -n1 | sed 's/\"//g')" ;;
|
storage-isolation) FILE_PATH="/data/adb" Size="$(cat "$app_details" | awk "/${FILE_NAME2}Size/"'{print $1}' | cut -f2 -d '=' | tail -n1 | sed 's/\"//g')" ;;
|
||||||
*)
|
*)
|
||||||
@@ -861,15 +873,17 @@ Release_data() {
|
|||||||
G="$(echo "$G" | egrep -o '[0-9]+')"
|
G="$(echo "$G" | egrep -o '[0-9]+')"
|
||||||
if [[ $G != "" ]]; then
|
if [[ $G != "" ]]; then
|
||||||
if [[ -d $X ]]; then
|
if [[ -d $X ]]; then
|
||||||
|
[[ $user = 0 ]] && uid="$G:$G" || uid="$user$G:$user$G"
|
||||||
if [[ $FILE_NAME2 = user ]]; then
|
if [[ $FILE_NAME2 = user ]]; then
|
||||||
echoRgb "路徑:$X"
|
echoRgb "路徑:$X"
|
||||||
Path_details="$(stat -c "%A/%a %U/%G" "$X")"
|
Path_details="$(stat -c "%A/%a %U/%G" "$X")"
|
||||||
[[ $user = 0 ]] && chown -hR "$G:$G" "$X/" || chown -hR "$user$G:$user$G" "$X/"
|
chown -hR "$uid" "$X/"
|
||||||
echo_log "設置用戶組:$(echo "$Path_details" | awk '{print $2}')"
|
echo_log "設置用戶組:$(echo "$Path_details" | awk '{print $2}'),shell in :$uid"
|
||||||
restorecon -RFD "$X/" 2>/dev/null
|
chcon -hR "$Selinux_state" "$X/" 2>/dev/null
|
||||||
echo_log "selinux上下文設置"
|
echo_log "selinux上下文設置"
|
||||||
elif [[ $FILE_NAME2 = data ]]; then
|
elif [[ $FILE_NAME2 = data || $FILE_NAME2 = obb ]]; then
|
||||||
chown -hR "$G:1078" "$FILE_PATH/$name2/"
|
chown -hR "$uid" "$FILE_PATH/$name2/"
|
||||||
|
chcon -hR "$Selinux_state" "$FILE_PATH/$name2/" 2>/dev/null
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echoRgb "路徑$X不存在" "0"
|
echoRgb "路徑$X不存在" "0"
|
||||||
@@ -1019,7 +1033,7 @@ get_name(){
|
|||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
self_test() {
|
self_test() {
|
||||||
if [[ $(dumpsys deviceidle get charging) = false && $(dumpsys battery | awk '/level/{print $2}' | egrep -o '[0-9]+') -le 20 ]]; then
|
if [[ $(dumpsys deviceidle get charging) = false && $(dumpsys battery | awk '/level/{print $2}' | egrep -o '[0-9]+') -le 15 ]]; then
|
||||||
echoRgb "電量$(dumpsys battery | awk '/level/{print $2}' | egrep -o '[0-9]+')%太低且未充電\n -為防止備份檔案或是恢復因低電量強制關機導致檔案損毀\n -請連接充電器後備份" "0" && exit 2
|
echoRgb "電量$(dumpsys battery | awk '/level/{print $2}' | egrep -o '[0-9]+')%太低且未充電\n -為防止備份檔案或是恢復因低電量強制關機導致檔案損毀\n -請連接充電器後備份" "0" && exit 2
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -1231,7 +1245,6 @@ backup)
|
|||||||
[[ $name2 = com.tencent.mobileqq ]] && echoRgb "QQ可能恢復備份失敗或是丟失聊天記錄,請自行用你信賴的應用備份" "0"
|
[[ $name2 = com.tencent.mobileqq ]] && echoRgb "QQ可能恢復備份失敗或是丟失聊天記錄,請自行用你信賴的應用備份" "0"
|
||||||
[[ $name2 = com.tencent.mm ]] && echoRgb "WX可能恢復備份失敗或是丟失聊天記錄,請自行用你信賴的應用備份" "0"
|
[[ $name2 = com.tencent.mm ]] && echoRgb "WX可能恢復備份失敗或是丟失聊天記錄,請自行用你信賴的應用備份" "0"
|
||||||
apk_number="$(echo "$apk_path" | wc -l)"
|
apk_number="$(echo "$apk_path" | wc -l)"
|
||||||
[[ $name2 != $Open_apps2 ]] && pm suspend "$name2" 2>/dev/null | sed "s/Package $name2/ -應用:$name1/g ; s/new suspended state: true/暫停狀態:凍結/g"
|
|
||||||
if [[ $apk_number = 1 ]]; then
|
if [[ $apk_number = 1 ]]; then
|
||||||
Backup_apk "非Split Apk" "3"
|
Backup_apk "非Split Apk" "3"
|
||||||
else
|
else
|
||||||
@@ -1249,7 +1262,6 @@ backup)
|
|||||||
[[ $name2 = github.tornaco.android.thanos ]] && Backup_data "thanox" "$(find "/data/system" -name "thanos*" -maxdepth 1 -type d 2>/dev/null)"
|
[[ $name2 = github.tornaco.android.thanos ]] && Backup_data "thanox" "$(find "/data/system" -name "thanos*" -maxdepth 1 -type d 2>/dev/null)"
|
||||||
[[ $name2 = moe.shizuku.redirectstorage ]] && Backup_data "storage-isolation" "/data/adb/storage-isolation"
|
[[ $name2 = moe.shizuku.redirectstorage ]] && Backup_data "storage-isolation" "/data/adb/storage-isolation"
|
||||||
fi
|
fi
|
||||||
pm unsuspend "$name2" 2>/dev/null | sed "s/Package $name2/ -應用:$name1/g ; s/new suspended state: false/暫停狀態:解凍/g"
|
|
||||||
endtime 2 "$name1 備份" "3"
|
endtime 2 "$name1 備份" "3"
|
||||||
Occupation_status="$(df -h "${Backup%/*}" | sed -n 's|% /.*|%|p' | awk '{print $(NF-1),$(NF)}')"
|
Occupation_status="$(df -h "${Backup%/*}" | sed -n 's|% /.*|%|p' | awk '{print $(NF-1),$(NF)}')"
|
||||||
lxj="$(echo "$Occupation_status" | awk '{print $3}' | sed 's/%//g')"
|
lxj="$(echo "$Occupation_status" | awk '{print $3}' | sed 's/%//g')"
|
||||||
@@ -1263,9 +1275,6 @@ backup)
|
|||||||
fi
|
fi
|
||||||
if [[ $i = $r ]]; then
|
if [[ $i = $r ]]; then
|
||||||
endtime 1 "應用備份" "3"
|
endtime 1 "應用備份" "3"
|
||||||
appinfo -d " " -o pn -p | while read ; do
|
|
||||||
pm unsuspend "$REPLY" | sed "s/Package $name2/ -應用:$name1/g ; s/new suspended state: false/暫停狀態:凍結/g"
|
|
||||||
done
|
|
||||||
#設置無障礙開關
|
#設置無障礙開關
|
||||||
if [[ $var != "" ]]; then
|
if [[ $var != "" ]]; then
|
||||||
if [[ $var != null ]]; then
|
if [[ $var != null ]]; then
|
||||||
@@ -1373,6 +1382,12 @@ Restore)
|
|||||||
echoRgb "選擇應用恢復模式\n -音量上僅恢復未安裝,下全恢復"
|
echoRgb "選擇應用恢復模式\n -音量上僅恢復未安裝,下全恢復"
|
||||||
get_version "恢復未安裝" "全恢復" && recovery_mode="$branch"
|
get_version "恢復未安裝" "全恢復" && recovery_mode="$branch"
|
||||||
fi
|
fi
|
||||||
|
Get_user="$(echo "$MODDIR" | rev | cut -d '/' -f1 | cut -d '_' -f1 | rev | egrep -o '[0-9]+')"
|
||||||
|
if [[ $Get_user != $user ]]; then
|
||||||
|
echoRgb "檢測當前用戶$user與恢復資料夾用戶:$Get_user不同\n -音量上繼續恢復,下不恢復並離開腳本"
|
||||||
|
get_version "恢復安裝" "不恢復安裝" && recovery_mode2="$branch"
|
||||||
|
fi
|
||||||
|
[[ $recovery_mode2 = false ]] && exit 2
|
||||||
if [[ $recovery_mode = true ]]; then
|
if [[ $recovery_mode = true ]]; then
|
||||||
echoRgb "獲取未安裝應用中"
|
echoRgb "獲取未安裝應用中"
|
||||||
TXT="$MODDIR/TEMP.txt"
|
TXT="$MODDIR/TEMP.txt"
|
||||||
@@ -1430,12 +1445,9 @@ Restore)
|
|||||||
fi
|
fi
|
||||||
if [[ $(pm path --user "$user" "$name2" 2>/dev/null) != "" ]]; then
|
if [[ $(pm path --user "$user" "$name2" 2>/dev/null) != "" ]]; then
|
||||||
if [[ $No_backupdata = "" ]]; then
|
if [[ $No_backupdata = "" ]]; then
|
||||||
#停止應用
|
|
||||||
[[ $name2 != $Open_apps2 ]] && pm suspend "$name2" 2>/dev/null | sed "s/Package $name2/ -應用:$name1/g ; s/new suspended state: true/暫停狀態:凍結/g"
|
|
||||||
find "$Backup_folder" -maxdepth 1 ! -name "apk.*" -name "*.tar*" -type f 2>/dev/null | sort | while read; do
|
find "$Backup_folder" -maxdepth 1 ! -name "apk.*" -name "*.tar*" -type f 2>/dev/null | sort | while read; do
|
||||||
Release_data "$REPLY"
|
Release_data "$REPLY"
|
||||||
done
|
done
|
||||||
pm unsuspend "$name2" 2>/dev/null | sed "s/Package $name2/ -應用:$name1/g ; s/new suspended state: false/暫停狀態:解凍/g"
|
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
[[ $No_backupdata = "" ]]&& echoRgb "$name1沒有安裝無法恢復數據" "0"
|
[[ $No_backupdata = "" ]]&& echoRgb "$name1沒有安裝無法恢復數據" "0"
|
||||||
@@ -1449,9 +1461,6 @@ Restore)
|
|||||||
echoRgb "$Backup_folder資料夾遺失,無法恢複" "0"
|
echoRgb "$Backup_folder資料夾遺失,無法恢複" "0"
|
||||||
fi
|
fi
|
||||||
if [[ $i = $r ]]; then
|
if [[ $i = $r ]]; then
|
||||||
appinfo -d " " -o pn -p | while read ; do
|
|
||||||
pm unsuspend "$REPLY" | sed "s/Package $name2/ -應用:$name1/g ; s/new suspended state: false/暫停狀態:解凍/g"
|
|
||||||
done
|
|
||||||
endtime 1 "應用恢復" "2"
|
endtime 1 "應用恢復" "2"
|
||||||
if [[ -d $Backup_folder2 ]]; then
|
if [[ -d $Backup_folder2 ]]; then
|
||||||
Print "是否恢復多媒體數據 音量上恢復,音量下不恢復"
|
Print "是否恢復多媒體數據 音量上恢復,音量下不恢復"
|
||||||
@@ -1518,12 +1527,9 @@ Restore2)
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [[ $(pm path --user "$user" "$name2" 2>/dev/null) != "" ]]; then
|
if [[ $(pm path --user "$user" "$name2" 2>/dev/null) != "" ]]; then
|
||||||
#停止應用
|
|
||||||
[[ $name2 != $Open_apps2 ]] && pm suspend "$name2" 2>/dev/null | sed "s/Package $name2/ -應用:$name1/g ; s/new suspended state: true/暫停狀態:凍結/g"
|
|
||||||
find "$Backup_folder" -maxdepth 1 ! -name "apk.*" -name "*.tar*" -type f 2>/dev/null | sort | while read; do
|
find "$Backup_folder" -maxdepth 1 ! -name "apk.*" -name "*.tar*" -type f 2>/dev/null | sort | while read; do
|
||||||
Release_data "$REPLY"
|
Release_data "$REPLY"
|
||||||
done
|
done
|
||||||
pm unsuspend "$name2" 2>/dev/null | sed "s/Package $name2/ -應用:$name1/g ; s/new suspended state: false/暫停狀態:解凍/g"
|
|
||||||
else
|
else
|
||||||
echoRgb "$name1沒有安裝無法恢復數據" "0"
|
echoRgb "$name1沒有安裝無法恢復數據" "0"
|
||||||
fi
|
fi
|
||||||
@@ -1673,7 +1679,7 @@ backup_media)
|
|||||||
[[ ! -f $Backup/轉換資料夾名稱.sh ]] && cp -r "$script_path/convert" "$Backup/轉換資料夾名稱.sh"
|
[[ ! -f $Backup/轉換資料夾名稱.sh ]] && cp -r "$script_path/convert" "$Backup/轉換資料夾名稱.sh"
|
||||||
[[ ! -f $Backup/壓縮檔完整性檢查.sh ]] && cp -r "$script_path/check_file" "$Backup/壓縮檔完整性檢查.sh"
|
[[ ! -f $Backup/壓縮檔完整性檢查.sh ]] && cp -r "$script_path/check_file" "$Backup/壓縮檔完整性檢查.sh"
|
||||||
[[ ! -d $Backup/tools ]] && cp -r "$tools_path" "$Backup" && rm -rf "$Backup/tools/bin/zip" "$Backup/tools/script"
|
[[ ! -d $Backup/tools ]] && cp -r "$tools_path" "$Backup" && rm -rf "$Backup/tools/bin/zip" "$Backup/tools/script"
|
||||||
[[ ! -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"
|
[[ ! -f $Backup/backup_settings.conf ]] && echo "#1開啟0關閉\n\n#是否在每次執行恢復腳本時使用音量鍵詢問如下需求\n#如果是那下面兩項項設置就被忽略,改為音量鍵選擇\nLo=$Lo\n\n#備份與恢復遭遇異常或是結束後發送通知(toast與狀態欄提示)\ntoast_info=$toast_info\n\n#使用者\nuser=\n\n#腳本檢測更新後進行更新?\nupdate=$update\n\n#檢測到更新後的行為(1跳轉瀏覽器 0不跳轉瀏覽器,但是複製連結到剪裁版)\nupdate_behavior=$update_behavior\n\n#恢復模式(1僅恢復未安裝應用0全恢復)\nrecovery_mode=0\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"
|
||||||
app_details="$Backup_folder/app_details"
|
app_details="$Backup_folder/app_details"
|
||||||
filesize="$(du -ks "$Backup_folder" | awk '{print $1}')"
|
filesize="$(du -ks "$Backup_folder" | awk '{print $1}')"
|
||||||
[[ -f $app_details ]] && . "$app_details" &>/dev/null || touch "$app_details"
|
[[ -f $app_details ]] && . "$app_details" &>/dev/null || touch "$app_details"
|
||||||
|
|||||||
Reference in New Issue
Block a user