From 6e4d90114caed4fc1011b0af88965da0a5d33a1c Mon Sep 17 00:00:00 2001 From: Yawasau <229953100a@gmail.com> Date: Sun, 8 May 2022 14:29:54 +0800 Subject: [PATCH] bugfix --- backup_settings.conf | 4 +- tools/bin/bin.sh | 149 +++++++++++++++---------- tools/bin/tools.sh | 48 ++++---- backup.sh => 備份應用.sh | 0 backup_media.sh => 備份自定義資料夾.sh | 0 Getlist.sh => 生成應用列表.sh | 0 終止腳本.sh | 17 +++ 7 files changed, 138 insertions(+), 80 deletions(-) rename backup.sh => 備份應用.sh (100%) rename backup_media.sh => 備份自定義資料夾.sh (100%) rename Getlist.sh => 生成應用列表.sh (100%) create mode 100644 終止腳本.sh diff --git a/backup_settings.conf b/backup_settings.conf index 710d62c..59e54bb 100644 --- a/backup_settings.conf +++ b/backup_settings.conf @@ -4,7 +4,7 @@ Lo=0 #備份時檢查資料夾是否存在已經卸載應用 有則音量鍵選擇刪除或是移動到恢復資料夾/被卸載的應用 -delete_folder=1 +delete_folder=0 #自定義備份目錄輸出位置 (忽略為空將默認腳本路徑中) Output_path= @@ -31,7 +31,7 @@ Backup_user_data=1 Backup_obb_data=1 #是否在應用數據備份好後備份自定義目錄 -backup_media=0 +backup_media=1 #假設你遇到列表輸出異常問題請將此設為1 debug_list=0 diff --git a/tools/bin/bin.sh b/tools/bin/bin.sh index fd6365e..5a38317 100644 --- a/tools/bin/bin.sh +++ b/tools/bin/bin.sh @@ -1,11 +1,39 @@ -test "$(whoami)" != root && echo "你是憨批?不給Root用你媽 爬" && exit 1 +echoRgb() { + #轉換echo顏色提高可讀性 + if [[ $2 = 0 ]]; then + echo -e "\e[38;5;197m -$1\e[0m" + elif [[ $2 = 1 ]]; then + echo -e "\e[38;5;121m -$1\e[0m" + elif [[ $2 = 2 ]]; then + echo -e "\e[38;5;218m -$1\e[0m" + elif [[ $2 = 3 ]]; then + echo -e "\e[38;5;183m -$1\e[0m" + else + echo -e "\e[38;5;${bn}m -$1\e[0m" + fi + [[ $Status_log != "" ]] && echo " -$(date '+%T') $1" >>"$Status_log" +} +bn=214 +if [ "$(whoami)" != root ]; then + echoRgb "你是憨批?不給Root用你媽 爬" "0" + exit 1 +fi abi="$(getprop ro.product.cpu.abi)" case $abi in arm64*) - [[ $(getprop ro.build.version.sdk) -lt 28 ]] && echo "設備Android $(getprop ro.build.version.release)版本過低 請升級至Android 9+" && exit 1 + if [[ $(getprop ro.build.version.sdk) -lt 26 ]]; then + echoRgb "設備Android $(getprop ro.build.version.release)版本過低 請升級至Android 8+" "0" + exit 1 + else + case $(getprop ro.build.version.sdk) in + 26|27|28) + echoRgb "設備Android $(getprop ro.build.version.release)版本偏低,無法確定腳本能正確的使用" "0" + ;; + esac + fi ;; *) - echo "-未知的架構: $abi" + echoRgb "未知的架構: $abi" "0" exit 1 ;; esac @@ -20,9 +48,12 @@ else echo "Magisk busybox Path does not exist" fi export PATH="$PATH" -backup_version="V14.7" +backup_version="V14.8" #設置二進制命令目錄位置 -[[ $bin_path = "" ]] && echo "未正確指定bin.sh位置" && exit 2 +if [[ $bin_path = "" ]]; then + echoRgb "未正確指定bin.sh位置" "0" + exit 2 +fi #bin_path="${bin_path/'/storage/emulated/'/'/data/media/'}" Status_log="$MODDIR/Log.txt" rm -rf "$Status_log" @@ -40,12 +71,12 @@ update bin.sh" if [[ ! -d $filepath ]]; then mkdir -p "$filepath" - [[ $? = 0 ]] && echo "設置busybox環境中" + [[ $? = 0 ]] && echoRgb "設置busybox環境中" fi [[ ! -f $bin_path/busybox_path ]] && touch "$bin_path/busybox_path" if [[ $filepath != $(cat "$bin_path/busybox_path") ]]; then [[ -d $(cat "$bin_path/busybox_path") ]] && rm -rf "$(cat "$bin_path/busybox_path")" - echo "$filepath" >"$bin_path/busybox_path" + echoRgb "$filepath" >"$bin_path/busybox_path" fi #刪除無效軟連結 find -L "$filepath" -maxdepth 1 -type l -exec rm -rf {} \; @@ -54,7 +85,7 @@ if [[ -d $bin_path ]]; then filesha256="$(sha256sum "$busybox" | cut -d" " -f1)" filesha256_1="$(sha256sum "$busybox2" | cut -d" " -f1)" if [[ $filesha256 != $filesha256_1 ]]; then - echo "busybox sha256不一致 重新創立環境中" + echoRgb "busybox sha256不一致 重新創立環境中" rm -rf "$filepath"/* fi fi @@ -63,15 +94,15 @@ if [[ -d $bin_path ]]; then if [[ ! -f $filepath/$File_name ]]; then cp -r "$REPLY" "$filepath" chmod 0777 "$filepath/$File_name" - echo "$File_name > $filepath/$File_name" + echoRgb "$File_name > $filepath/$File_name" else filesha256="$(sha256sum "$filepath/$File_name" | cut -d" " -f1)" filesha256_1="$(sha256sum "$bin_path/$File_name" | cut -d" " -f1)" if [[ $filesha256 != $filesha256_1 ]]; then - echo "$File_name sha256不一致 重新創建" + echoRgb "$File_name sha256不一致 重新創建" cp -r "$REPLY" "$filepath" chmod 0777 "$filepath/$File_name" - echo "$File_name > $filepath/$File_name" + echoRgb "$File_name > $filepath/$File_name" fi fi done @@ -83,7 +114,7 @@ if [[ -d $bin_path ]]; then done fi else - echo "遺失$bin_path" + echoRgb "遺失$bin_path" "0" exit 1 fi export PATH="$filepath:$PATH" @@ -91,7 +122,7 @@ export TZ=Asia/Taipei TMPDIR="/data/local/tmp" [[ ! -d $TMPDIR ]] && mkdir "$TMPDIR" if [[ $(which busybox) = "" ]]; then - echo "環境變量中沒有找到busybox 請在tools/bin內添加一個\narm64可用的busybox\n或是安裝搞機助手 scene或是Magisk busybox模塊...." + echoRgb "環境變量中沒有找到busybox 請在tools/bin內添加一個\narm64可用的busybox\n或是安裝搞機助手 scene或是Magisk busybox模塊...." "0" exit 1 fi #下列為自定義函數 @@ -108,6 +139,15 @@ endtime() { duration="$(echo $((endtime - starttime)) | awk '{t=split("60 秒 60 分 24 時 999 天",a);for(n=1;n/dev/null 2>&1 } -echoRgb() { - #轉換echo顏色提高可讀性 - if [[ $2 = 0 ]]; then - echo -e "\e[38;5;197m -$1\e[0m" - elif [[ $2 = 1 ]]; then - echo -e "\e[38;5;121m -$1\e[0m" - elif [[ $2 = 2 ]]; then - echo -e "\e[38;5;218m -$1\e[0m" - elif [[ $2 = 3 ]]; then - echo -e "\e[38;5;183m -$1\e[0m" - else - echo -e "\e[38;5;${bn}m -$1\e[0m" - fi - echo " -$(date '+%T') $1" >>"$Status_log" -} bn=1 l=300 debug() { @@ -172,7 +197,8 @@ isBoolean() { elif [[ $1 = 0 ]]; then nsx=false else - echoRgb "$MODDIR/backup_settings.conf $2=$1填寫錯誤,正確值1or0" "0" && exit 2 + echoRgb "$MODDIR/backup_settings.conf $2=$1填寫錯誤,正確值1or0" "0" + exit 2 fi } echo_log() { @@ -199,11 +225,11 @@ else UFS_MODEL="unknown" fi fi -Open_apps="$(appinfo -d "(" -ed ")" -o ands,pn -ta c)" +Open_apps="$(appinfo -d "(" -ed ")" -o ands,pn -ta c 2>/dev/null)" Open_apps2="$(echo "$Open_apps" | cut -f2 -d '(' | sed 's/)//g')" bn=214 -raminfo="$(awk '($1 == "MemTotal:"){print $2/1000"MB"}' /proc/meminfo)" -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:$raminfo\n -閃存類型:$ROM_TYPE\n -閃存顆粒:$UFS_MODEL\n -Android版本:$(getprop ro.build.version.release 2>/dev/null) SDK:$(getprop ro.build.version.sdk 2>/dev/null)\n -終端:$Open_apps" +raminfo="$(awk '($1 == "MemTotal:"){print $2/1000"MB"}' /proc/meminfo 2>/dev/null)" +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)\n -RAM:$raminfo\n -閃存類型:$ROM_TYPE\n -閃存顆粒:$UFS_MODEL\n -Android版本:$(getprop ro.build.version.release 2>/dev/null) SDK:$(getprop ro.build.version.sdk 2>/dev/null)\n -終端:$Open_apps\n -By@YAWAsau\n -Support: https://jq.qq.com/?_wv=1027&k=f5clPNC3" zippath="$(find "$MODDIR" -maxdepth 1 -name "*.zip" -type f 2>/dev/null)" if [[ $zippath != "" ]]; then case $(echo "$zippath" | wc -l) in @@ -221,44 +247,47 @@ if [[ $zippath != "" ]]; then *Backup_*) if [[ -f $MODDIR/app_details ]]; then mv "$MODDIR/tools" "${MODDIR%/*}" - echoRgb "更新當前${MODDIR##*/}目錄下恢復相關腳本+外部tools目錄" - cp -r "$tools_path/script/Get_DirName" "${MODDIR%/*}/DumpName.sh" - cp -r "$tools_path/script/restore" "${MODDIR%/*}/Restorebackup.sh" - [[ -d ${MODDIR%/}/Media ]] && cp -r "$tools_path/script/restore3" "${MODDIR%/*}/Media/恢復多媒體數據.sh" - . "$MODDIR/app_details" - if [[ $PackageName != "" ]]; then - cp -r "$tools_path/script/restore2" "$MODDIR/Restorebackup.sh" - else - cp -r "$tools_path/script/restore3" "${MODDIR%/*}/Media/恢復多媒體數據.sh" - fi - if [[ -d ${MODDIR%/*/*}/tools && -f ${MODDIR%/*/*}/backup.sh ]]; then + echoRgb "更新當前${MODDIR##*/}目錄下恢復相關腳本+外部tools目錄與腳本" + cp -r "$tools_path/script/Get_DirName" "${MODDIR%/*}/重新生成應用列表.sh" + cp -r "$tools_path/script/restore" "${MODDIR%/*}/恢復備份.sh" + cp -r "$MODDIR/終止腳本.sh" "${MODDIR%/*}/終止腳本.sh" + [[ -d ${MODDIR%/*}/Media ]] && cp -r "$tools_path/script/restore3" "${MODDIR%/*}/恢復自定義資料夾.sh" + find "${MODDIR%/*}" -maxdepth 1 -type d | sort | while read; do + if [[ -f $REPLY/app_details ]]; then + unset PackageName + . "$REPLY/app_details" + [[ $PackageName != "" ]] && cp -r "$tools_path/script/restore2" "$REPLY/恢復備份.sh" + fi + done + if [[ -d ${MODDIR%/*/*}/tools && -f ${MODDIR%/*/*}/備份應用.sh ]]; then echoRgb "更新${MODDIR%/*/*}/tools與備份相關腳本" rm -rf "${MODDIR%/*/*}/tools" find "${MODDIR%/*/*}" -maxdepth 1 -name "*.sh" -type f -exec rm -rf {} \; - mv "$MODDIR/backup_settings.conf" "$MODDIR/backup.sh" "$MODDIR/Getlist.sh" "${MODDIR%/*/*}" + mv "$MODDIR/備份應用.sh" "$MODDIR/生成應用列表.sh" "$MODDIR/備份自定義資料夾.sh" "$MODDIR/終止腳本.sh" "${MODDIR%/*/*}" cp -r "$tools_path" "${MODDIR%/*/*}" fi + rm -rf "$MODDIR/終止腳本.sh" else echoRgb "更新當前${MODDIR##*/}目錄下恢復相關腳本+tools目錄" - cp -r "$tools_path/script/Get_DirName" "$MODDIR/DumpName.sh" - cp -r "$tools_path/script/restore" "$MODDIR/Restorebackup.sh" - [[ -d $MODDIR/Media ]] && cp -r "$tools_path/script/restore3" "$MODDIR/Media/恢復多媒體數據.sh" + cp -r "$tools_path/script/Get_DirName" "$MODDIR/重新生成應用列表.sh" + cp -r "$tools_path/script/restore" "$MODDIR/恢復備份.sh" + [[ -d $MODDIR/Media ]] && cp -r "$tools_path/script/restore3" "$MODDIR/恢復自定義資料夾.sh" find "$MODDIR" -maxdepth 1 -type d | sort | while read; do if [[ -f $REPLY/app_details ]]; then unset PackageName . "$REPLY/app_details" - [[ $PackageName != "" ]] && cp -r "$tools_path/script/restore2" "$REPLY/Restorebackup.sh" + [[ $PackageName != "" ]] && cp -r "$tools_path/script/restore2" "$REPLY/恢復備份.sh" fi done - if [[ -d ${MODDIR%/*}/tools && -f ${MODDIR%/*}/backup.sh ]]; then + if [[ -d ${MODDIR%/*}/tools && -f ${MODDIR%/*}/備份應用.sh ]]; then echoRgb "更新${MODDIR%/*}/tools與備份相關腳本" rm -rf "${MODDIR%/*}/tools" find "${MODDIR%/*}" -maxdepth 1 -name "*.sh" -type f -exec rm -rf {} \; - mv "$MODDIR/backup_settings.conf" "$MODDIR/backup.sh" "$MODDIR/Getlist.sh" "${MODDIR%/*}" + cp -r "$MODDIR/備份應用.sh" "$MODDIR/終止腳本.sh" "$MODDIR/生成應用列表.sh" "$MODDIR/備份自定義資料夾.sh" "${MODDIR%/*}" cp -r "$tools_path" "${MODDIR%/*}" fi fi - rm -rf "$tools_path/script" "$MODDIR/backup_settings.conf" "$MODDIR/backup.sh" "$MODDIR/Getlist.sh" + rm -rf "$MODDIR/備份自定義資料夾.sh" "$MODDIR/生成應用列表.sh" "$MODDIR/備份應用.sh" "$tools_path/script" ;; *) if [[ $(find "$MODDIR" -maxdepth 1 -name "Backup_*" -type d) != "" ]]; then @@ -267,14 +296,15 @@ if [[ $zippath != "" ]]; then echoRgb "更新當前目錄下備份相關腳本&tools目錄+${backup_path##*/}內tools目錄+恢復腳本+tools" rm -rf "$backup_path/tools" cp -r "$tools_path" "$backup_path" && rm -rf "$backup_path/tools/bin/zip" "$backup_path/tools/script" - cp -r "$tools_path/script/restore" "$backup_path/Restorebackup.sh" - cp -r "$tools_path/script/Get_DirName" "$backup_path/DumpName.sh" - [[ -d $backup_path/Media ]] && cp -r "$tools_path/script/restore3" "$backup_path/Media/恢復多媒體數據.sh" + cp -r "$tools_path/script/restore" "$backup_path/恢復備份.sh" + cp -r "$tools_path/script/Get_DirName" "$backup_path/重新生成應用列表.sh" + cp -r "$MODDIR/終止腳本.sh" "$backup_path/終止腳本.sh" + [[ -d $backup_path/Media ]] && cp -r "$tools_path/script/restore3" "$backup_path/恢復自定義資料夾.sh" find "$MODDIR" -maxdepth 2 -type d | sort | while read; do if [[ -f $REPLY/app_details ]]; then unset PackageName . "$REPLY/app_details" - [[ $PackageName != "" ]] && cp -r "$tools_path/script/restore2" "$REPLY/Restorebackup.sh" + [[ $PackageName != "" ]] && cp -r "$tools_path/script/restore2" "$REPLY/恢復備份.sh" fi done fi @@ -289,11 +319,14 @@ if [[ $zippath != "" ]]; then fi rm -rf "$TMPDIR"/* find "$MODDIR" -maxdepth 1 -name "*.zip" -type f -exec rm -rf {} \; - echoRgb "更新完成 請重新執行腳本" "2" && exit + echoRgb "更新完成 請重新執行腳本" "2" + exit fi ;; *) - echoRgb "錯誤 請刪除當前目錄多餘zip\n -保留一個最新的數據備份.zip\n -下列為當前目錄zip\n$zippath" "0" && exit 1 + echoRgb "錯誤 請刪除當前目錄多餘zip\n -保留一個最新的數據備份.zip\n -下列為當前目錄zip\n$zippath" "0" + exit 1 ;; esac -fi \ No newline at end of file +fi +#buzexe /data/tmp false tools.sh \ No newline at end of file diff --git a/tools/bin/tools.sh b/tools/bin/tools.sh index d4de8f9..23b8b9c 100644 --- a/tools/bin/tools.sh +++ b/tools/bin/tools.sh @@ -33,7 +33,7 @@ if [[ $toast_info = true ]]; then pm enable "ice.message" &>/dev/null if [[ $(pm path ice.message) = "" ]]; then echoRgb "未安裝toast 開始安裝" "0" - cp -r "${bin_path%/*}/apk"/*.apk "$TMPDIR" && pm install --user 0 -r -t"$TMPDIR"/*.apk &>/dev/null && rm -rf "$TMPDIR"/* + cp -r "${bin_path%/*}/apk"/*.apk "$TMPDIR" && pm install --user 0 -r -t "$TMPDIR"/*.apk &>/dev/null && rm -rf "$TMPDIR"/* [[ $? = 0 ]] && echoRgb "安裝toast成功" "1" || echoRgb "安裝toast失敗" "0" fi else @@ -172,11 +172,11 @@ backup) txt="$MODDIR/appList.txt" txt="${txt/'/storage/emulated/'/'/data/media/'}" PU="$(ls /dev/block/vold | grep public)" - [[ ! -f $txt ]] && echoRgb "請執行\"Getlist.sh\"獲取應用列表再來備份" "0" && exit 1 + [[ ! -f $txt ]] && echoRgb "請執行\"生成應用列表.sh\"獲取應用列表再來備份" "0" && exit 1 data="$MODDIR" hx="本地" - echoRgb "壓縮方式:$Compression_method" "1" - echoRgb "提示 腳本支持後台壓縮 可以直接離開腳本\n -或是關閉終端也能備份 如需終止腳本\n -請再次執行$script即可停止\n -備份結束將發送toast提示語" "1" + echoRgb "壓縮方式:$Compression_method" + echoRgb "提示 腳本支持後台壓縮 可以直接離開腳本\n -或是關閉終端也能備份 如需終止腳本\n -請執行$script即可停止\n -備份結束將發送toast提示語" "3" if [[ $Output_path != "" ]]; then [[ ${Output_path: -1} = / ]] && Output_path="${Output_path%?}" Backup="$Output_path/Backup_$Compression_method" @@ -242,8 +242,8 @@ backup) 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/被卸載的應用/恢復備份.sh ]] && cp -r "$script_path/restore" "$Backup/被卸載的應用/恢復備份.sh" + [[ ! -f $Backup/被卸載的應用/重新生成應用列表.sh ]] && cp -r "$script_path/Get_DirName" "$Backup/被卸載的應用/重新生成應用列表.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" @@ -285,8 +285,9 @@ backup) txt2="$Backup/appList.txt" [[ ! -f $txt2 ]] && echo "#不需要恢復還原的應用請在開頭注釋# 比如#xxxxxxxx 酷安">"$txt2" [[ ! -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/恢復備份.sh ]] && cp -r "$script_path/restore" "$Backup/恢復備份.sh" + [[ ! -f $Backup/終止腳本.sh ]] && cp -r "$MODDIR/終止腳本.sh" "$Backup/終止腳本.sh" + [[ ! -f $Backup/重新生成應用列表.sh ]] && cp -r "$script_path/Get_DirName" "$Backup/重新生成應用列表.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" filesize="$(du -ks "$Backup" | awk '{print $1}')" Quantity=0 @@ -353,7 +354,7 @@ backup) fi [[ $PackageName = "" ]] && echo "PackageName=\"$name2\"" >>"$app_details" [[ $ChineseName = "" ]] && echo "ChineseName=\"$name1\"" >>"$app_details" - [[ ! -f $Backup_folder/Restorebackup.sh ]] && cp -r "$script_path/restore2" "$Backup_folder/Restorebackup.sh" + [[ ! -f $Backup_folder/恢復備份.sh ]] && cp -r "$script_path/restore2" "$Backup_folder/恢復備份.sh" fi if [[ $name2 = com.android.chrome ]]; then #刪除所有舊apk ,保留一個最新apk進行備份 @@ -469,6 +470,7 @@ backup) keyboard="$(settings get secure default_input_method)" [[ $(cat "$txt" | grep -v "#" | sed -e '/^$/d' | awk '{print $2}' | grep -w "^${keyboard%/*}$") != ${keyboard%/*} ]] && unset keyboard while [[ $i -le $r ]]; do + stopscript [[ $en -ge 229 ]] && en=118 unset name1 name2 apk_path apk_path2 name1="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $1}')" @@ -532,7 +534,7 @@ backup) Occupation_status="$(df -h "${Backup%/*}" | sed -n 's|% /.*|%|p' | awk '{print $(NF-1),$(NF)}')" lxj="$(echo "$Occupation_status" | awk '{print $3}' | sed 's/%//g')" echoRgb "完成$((i * 100 / r))% $hx$(echo "$Occupation_status" | awk 'END{print "剩餘:"$1"使用率:"$2}')" "3" - echoRgb "____________________________________" + echoRgb "_________________$(endtime 1 "已經")___________________" else echoRgb "$name1[$name2]不在安裝列表,備份個寂寞?" "0" fi @@ -562,19 +564,20 @@ backup) echoRgb "備份結束,備份多媒體" "1" starttime1="$(date -u "+%s")" Backup_folder="$Backup/Media" - [[ ! -f $Backup/Restoremedia.sh ]] && cp -r "$script_path/restore3" "$Backup/Restoremedia.sh" + [[ ! -f $Backup/恢復自定義資料夾.sh ]] && cp -r "$script_path/restore3" "$Backup/恢復自定義資料夾.sh" [[ ! -d $Backup_folder ]] && mkdir -p "$Backup_folder" app_details="$Backup_folder/app_details" [[ -f $app_details ]] && . "$app_details" mediatxt="$Backup/mediaList.txt" [[ ! -f $mediatxt ]] && echo "#不需要恢復的資料夾請在開頭注釋# 比如#媒體" > "$mediatxt" echo "$Custom_path" | grep -v "#" | sed -e '/^$/d' | while read; do + stopscript echoRgb "備份第$A/$B個資料夾 剩下$((B - A))個" "3" starttime2="$(date -u "+%s")" Backup_data "${REPLY##*/}" "$REPLY" [[ $result = 0 ]] && [[ $(cat "$mediatxt" | grep -v "#" | sed -e '/^$/d' | grep -w "^${REPLY##*/}.tar$" | head -1) = "" ]] && echo "${REPLY##*/}.tar" >> "$mediatxt" endtime 2 "${REPLY##*/}備份" "1" - echoRgb "完成$((A * 100 / B))% $hx$(echo "$Occupation_status" | awk 'END{print "剩餘:"$1"使用率:"$2}')" "2" && echoRgb "____________________________________" && let A++ + echoRgb "完成$((A * 100 / B))% $hx$(echo "$Occupation_status" | awk 'END{print "剩餘:"$1"使用率:"$2}')" "2" && echoRgb "_________________$(endtime 1 "已經")___________________" && let A++ done echoRgb "目錄↓↓↓\n -$Backup_folder" endtime 1 "自定義備份" @@ -586,7 +589,6 @@ backup) let i++ en++ nskg++ done rm -rf "$TMPDIR/scriptTMP" - echoRgb "你要備份跑路?祝你卡米9008" #計算出備份大小跟差異性 filesizee="$(du -ks "$Backup" | awk '{print $1}')" dsize="$(($((filesizee - filesize)) / 1024))" @@ -652,6 +654,7 @@ dumpname) echoRgb "$txt重新生成" "1" ;; Restore) + echoRgb "假設反悔了要終止腳本請儘速離開此腳本點擊終止腳本.sh,否則腳本將繼續執行直到結束" "0" #效驗選填是否正確 isBoolean "$Lo" "LO" && Lo="$nsx" if [[ $Lo = false ]]; then @@ -674,9 +677,9 @@ Restore) [[ ! -d $path2 ]] && echoRgb "設備不存在user目錄" "0" && exit 1 i=1 txt="$MODDIR/appList.txt" - [[ ! -f $txt ]] && echoRgb "請執行\"DumpName.sh\"獲取應用列表再來恢復" "0" && exit 2 + [[ ! -f $txt ]] && echoRgb "請執行\"重新生成應用列表.sh\"獲取應用列表再來恢復" "0" && exit 2 r="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n '$=')" - [[ $r = "" ]] && echoRgb "appList.txt包名為空或是被注釋了\n -請執行\"DumpName.sh\"獲取應用列表再來恢復" "0" && exit 1 + [[ $r = "" ]] && echoRgb "appList.txt包名為空或是被注釋了\n -請執行\"重新生成應用列表.sh\"獲取應用列表再來恢復" "0" && exit 1 [[ $(which restorecon) = "" ]] && echoRgb "restorecon命令不存在" "0" && exit 1 #顯示執行結果 Release_data() { @@ -817,6 +820,7 @@ Restore) en=118 { while [[ $i -le $r ]]; do + stopscript [[ $en -ge 229 ]] && en=118 echoRgb "恢複第$i/$r個應用 剩下$((r - i))個" "3" name1="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $1}')" @@ -1064,11 +1068,12 @@ Restore2) ;; Restore3) echoRgb "點錯了?這是恢復自定義資料夾腳本 如果你是要恢復應用那你就點錯了\n -音量上繼續恢復自定義資料夾,音量下離開腳本" "2" + echoRgb "假設反悔了要終止腳本請儘速離開此腳本點擊終止腳本.sh,否則腳本將繼續執行直到結束" "0" get_version "恢復自定義資料夾" "離開腳本" && [[ "$branch" = false ]] && exit 0 mediaDir="$MODDIR/Media" [[ ! -d $mediaDir ]] && echoRgb "媒體資料夾不存在" "0" && exit 2 txt="$MODDIR/mediaList.txt" - [[ ! -f $txt ]] && echoRgb "請執行\"DumpName.sh\"獲取媒體列表再來恢復" "0" && exit 2 + [[ ! -f $txt ]] && echoRgb "請執行\"重新生成應用列表.sh\"獲取媒體列表再來恢復" "0" && exit 2 #效驗選填是否正確 isBoolean "$Lo" "LO" && Lo="$nsx" if [[ $Lo = false ]]; then @@ -1109,8 +1114,9 @@ Restore3) starttime1="$(date -u "+%s")" A=1 B="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n '$=')" - [[ $B = "" ]] && echoRgb "mediaList.txt壓縮包名為空或是被注釋了\n -請執行\"DumpName.sh\"獲取列表再來恢復" "0" && exit 1 + [[ $B = "" ]] && echoRgb "mediaList.txt壓縮包名為空或是被注釋了\n -請執行\"重新生成應用列表.sh\"獲取列表再來恢復" "0" && exit 1 while [[ $A -le $B ]]; do + stopscript name1="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n "${A}p" | awk '{print $1}')" starttime2="$(date -u "+%s")" echoRgb "恢復第$A/$B個壓縮包 剩下$((B - A))個" "3" @@ -1262,7 +1268,7 @@ backup_media) data="/dev/block/vold/$PU" mountinfo="$(df -T "${Backup%/*}" | sed -n 's|% /.*|%|p' | awk '{print $(NF-4)}')" case $mountinfo in - vfat | fuseblk | exfat | NTFS | ext4 | f2fs) + fuseblk | exfat | NTFS | ext4 | f2fs) outshow="於隨身碟備份" ;; *) @@ -1316,14 +1322,15 @@ backup_media) fi partition_info } + echoRgb "假設反悔了要終止腳本請儘速離開此腳本點擊終止腳本.sh,否則腳本將繼續執行直到結束" "0" A=1 B="$(echo "$Custom_path" | grep -v "#" | sed -e '/^$/d' | sed -n '$=')" if [[ $B != "" ]]; then starttime1="$(date -u "+%s")" Backup_folder="$Backup/Media" [[ ! -d $Backup_folder ]] && mkdir -p "$Backup_folder" - [[ ! -f $Backup/Restoremedia.sh ]] && cp -r "$script_path/restore3" "$Backup/Restoremedia.sh" - [[ ! -f $Backup/DumpName.sh ]] && cp -r "$script_path/Get_DirName" "$Backup/DumpName.sh" + [[ ! -f $Backup/恢復自定義資料夾.sh ]] && cp -r "$script_path/restore3" "$Backup/恢復自定義資料夾.sh" + [[ ! -f $Backup/重新生成應用列表.sh ]] && cp -r "$script_path/Get_DirName" "$Backup/重新生成應用列表.sh" [[ ! -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" app_details="$Backup_folder/app_details" @@ -1331,6 +1338,7 @@ backup_media) mediatxt="$Backup/mediaList.txt" [[ ! -f $mediatxt ]] && echo "#不需要恢復的資料夾請在開頭注釋# 比如#媒體" > "$mediatxt" echo "$Custom_path" | grep -v "#" | sed -e '/^$/d' | while read; do + stopscript echoRgb "備份第$A/$B個資料夾 剩下$((B - A))個" "3" starttime2="$(date -u "+%s")" [[ ${REPLY: -1} = / ]] && REPLY="${REPLY%?}" diff --git a/backup.sh b/備份應用.sh similarity index 100% rename from backup.sh rename to 備份應用.sh diff --git a/backup_media.sh b/備份自定義資料夾.sh similarity index 100% rename from backup_media.sh rename to 備份自定義資料夾.sh diff --git a/Getlist.sh b/生成應用列表.sh similarity index 100% rename from Getlist.sh rename to 生成應用列表.sh diff --git a/終止腳本.sh b/終止腳本.sh new file mode 100644 index 0000000..0182b15 --- /dev/null +++ b/終止腳本.sh @@ -0,0 +1,17 @@ +if [ -f "${0%/*}/tools/bin/bin.sh" ]; then + MODDIR="${0%/*}" + bin_path="$MODDIR/tools/bin" + [[ $(find "$MODDIR" -maxdepth 1 -name "*.zip" -type f 2>/dev/null) ]] && echo "警告!此腳本不能拿來更新腳本" && exit 2 + . "$MODDIR/tools/bin/bin.sh" + touch "$TMPDIR/STOP_script" + echoRgb "等待腳本停止中,請稍後....." + { + while [[ -f $TMPDIR/STOP_script ]]; do + sleep 1 + done + } & + wait && echoRgb "已經停止" "1" + exit +else + echo "$MODDIR/tools/bin/bin.sh遗失" +fi \ No newline at end of file