diff --git a/backup_settings.conf b/backup_settings.conf index b24a66e..e50e820 100644 --- a/backup_settings.conf +++ b/backup_settings.conf @@ -1,62 +1,66 @@ -#1開啟0關閉 -#是否在每次執行備份腳本使用音量鍵詢問如下備份需求 -#如果是那下面三項設置就被忽略,改為音量鍵選擇 +#音量鍵選擇總開關 是否在每次執行備份腳本時使用音量鍵詢問備份需求 +#1開啟音量鍵選擇 (如選項已設置,則跳過該選項提示) +#0關閉音量鍵選擇 (如選項未設置,則強制使用音量鍵選擇) Lo=0 -#備份時檢查資料夾是否存在已經卸載應用 -delete_folder=1 +#腳本語言設置 留空則自動識別系統語言環境並翻譯 +#1簡體中文 0繁體中文 +Shell_LANG=0 -#存在已卸載應用操作(1刪除0移動) -default_behavior=0 - -#自定義位置支持相對位置 -#自定義備份目錄輸出位置 (忽略為空將默認腳本路徑中) +#自定義備份文件輸出位置 支持相對路徑(留空則默認當前路徑) Output_path="" -#自定義applist.txt位置 +#自定義applist.txt位置 支持相對路徑(留空則默認當前路徑) list_location="" -#自動更新腳本 +#自動更新腳本(留空強制音量鍵選擇) +#1開啟 0關閉 update=1 -#假設如果存在usb隨身碟是否默認使用隨身碟?(1不詢問默認使用 0每次都進行詢問) -USBdefault=0 - -#自定義屏蔽外部掛載點,多個分區請使用|區隔 +#自定義屏蔽外部掛載點 例:OTG 虛擬SD等 多個掛載點請使用 | 區隔 +#屏蔽後不會提示音量鍵選擇,不影響Output_path指定外置存儲位置 mount_point="rannki|0000-1" -#使用者(為空預設0) +#使用者(如0 999等用戶,如存在多個用戶留空強制音量鍵選擇,無多個用戶則默認用戶0不詢問) user=0 -#是否備份使用者數據 (1備份0不備份) +#備份模式 +#1包含數據+安裝包,0僅包安裝包 +#此選項設置1時Backup_obb_data,Backup_user_data,blacklist_mode將可設置 0時Backup_user_data,Backup_obb_data,blacklist_mode選項不生效 +#此外設置0時將同時忽略appList.txt的!與任何黑名單設置(包括黑名單列表) +Backup_Mode=1 + +#是否備份使用者數據 (1備份 0不備份 留空強制音量鍵選擇) Backup_user_data=1 -#是否備份外部數據 即比如原神的數據包(1備份0不備份) +#是否備份外部數據 例:原神的數據包(1備份 0不備份 留空強制音量鍵選擇) Backup_obb_data=1 -#是否在應用數據備份好後備份自定義目錄 +#是否在應用數據備份完成後備份自定義目錄 +#1開啟 0關閉 backup_media=1 #假設你遇到列表輸出異常問題請將此設為1 debug_list=0 -#添加自定義備份路徑 請勿刪除 +#添加自定義備份路徑 例:Download DCIM等文件夾 請使用絕對路徑,請勿刪除"" Custom_path=" /storage/emulated/0/Pictures/ /storage/emulated/0/Download/ +/storage/emulated/0/Music /storage/emulated/0/DCIM/ /data/adb " -#黑名單模式(1直接忽略備份0僅備份安裝檔) -blacklist_mode=0 +#黑名單模式(1完全忽略,不備份 0僅備份安裝包,注意!此選項Backup_Mode=1時黑名單模式才能使用) +blacklist_mode=1 -#備份黑名單 備份apk不備份任何數據 +#備份黑名單(備份策略由「黑名單模式」控制,此處只作為黑名單應用列表) blacklist=" #com.esunbank #com.chailease.tw.app.android.ccfappcust" -#位於data的預裝應用白名單 +#位於data的預裝應用白名單 例:相冊 錄音機 天氣 計算器等(默認屏蔽備份預裝應用,如需備份請添加預裝應用白名單) whitelist=" com.xiaomi.xmsf com.xiaomi.xiaoailite @@ -75,7 +79,7 @@ com.xiaomi.router com.xiaomi.mico dev.miuiicons.pedroz" -#可被備份的系統應用白名單 +#可被備份的系統應用白名單(默認屏蔽備份系統應用,如需備份請添加系統應用白名單) system=" com.google.android.calendar com.google.android.gm @@ -90,13 +94,13 @@ sh.siava.AOSPMods com.facebook.katana com.android.chrome" -#備份完成後啟動應用 +#需要在備份完成後啟動應用 am_start=" com.digibites.accubattery com.dede.nativetools " -#壓縮算法(可用zstd tar tar為僅打包 有什麼好用的壓縮算法請聯繫我 +#壓縮算法(可用zstd tar,tar為僅打包 有什麼好用的壓縮算法請聯系我 #zstd擁有良好的壓縮率與速度 Compression_method=zstd @@ -105,3 +109,4 @@ rgb_a=226 #輔色 rgb_b=123 rgb_c=177 + diff --git a/tools/Device_List b/tools/Device_List index 956e681..44ce80e 100644 --- a/tools/Device_List +++ b/tools/Device_List @@ -156,7 +156,7 @@ "M1810E5E" "小米 MIX 3 全網通版" "M1810E5A" "小米 MIX 3 全網通版 (全球頻段)" "M1810E5GG" "小米 MIX 3 5G" -"M2011J18C" "MIX FOLD 小米折疊屏手機" +"M2011J18C" "MIX FOLD 小米折叠屏手機" "2106118C" "Xiaomi MIX 4" "22061218C" "Xiaomi MIX Fold 2" "2308CPXD0C" "Xiaomi MIX Fold 3" diff --git a/tools/classes2.dex b/tools/classes2.dex index 8b09104..8d88587 100644 Binary files a/tools/classes2.dex and b/tools/classes2.dex differ diff --git a/tools/tools.sh b/tools/tools.sh index 35e49d2..7669470 100644 --- a/tools/tools.sh +++ b/tools/tools.sh @@ -1,57 +1,60 @@ #!/system/bin/sh -set -x 2> debug_output.log +set -x 2> /cache/debug_output.log shell_language="zh-TW" MODDIR="$MODDIR" MODDIR_NAME="${MODDIR##*/}" tools_path="$MODDIR/tools" Compression_rate=3 script="${0##*/}" -backup_version="V15.8.7" -[[ $SHELL = *mt* ]] && echo "請勿使用mt拓展包環境執行,請更換系統環境" && exit 2 +backup_version="V15.9.0" +[[ $SHELL = *mt* ]] && echo "請勿使用MT管理器拓展包環境執行,請更換系統環境" && exit 2 update_backup_settings_conf() { - echo "#1開啟0關閉 -#是否在每次執行備份腳本使用音量鍵詢問如下備份需求 -#如果是那下面三項設置就被忽略,改為音量鍵選擇 + echo "#音量鍵選擇總開關 是否在每次執行備份腳本時使用音量鍵詢問備份需求 +#1開啟音量鍵選擇 (如選項已設置,則跳過該選項提示) +#0關閉音量鍵選擇 (如選項未設置,則強制使用音量鍵選擇) Lo="${Lo:-0}" -#備份時檢查資料夾是否存在已經卸載應用 -delete_folder="${delete_folder:-1}" +#腳本語言設置 留空則自動識別系統語言環境並翻譯 +#1簡體中文 0繁體中文 +Shell_LANG="$Shell_LANG" -#存在已卸載應用操作(1刪除0移動) -default_behavior="${default_behavior:-0}" - -#自定義位置支持相對位置 -#自定義備份目錄輸出位置 (忽略為空將默認腳本路徑中) +#自定義備份文件輸出位置 支持相對路徑(留空則默認當前路徑) Output_path=\""$Output_path"\" -#自定義applist.txt位置 +#自定義applist.txt位置 支持相對路徑(留空則默認當前路徑) list_location=\""$list_location"\" -#自動更新腳本 +#自動更新腳本(留空強制音量鍵選擇) +#1開啟 0關閉 update="${update:-1}" -#假設如果存在usb隨身碟是否默認使用隨身碟?(1不詢問默認使用 0每次都進行詢問) -USBdefault="${USBdefault:-0}" - -#自定義屏蔽外部掛載點,多個分區請使用|區隔 +#自定義屏蔽外部掛載點 例:OTG 虛擬SD等 多個掛載點請使用 | 區隔 +#屏蔽後不會提示音量鍵選擇,不影響Output_path指定外置存儲位置 mount_point=\""${mount_point:-rannki|0000-1}"\" -#使用者(為空預設0) +#使用者(如0 999等用戶,如存在多個用戶留空強制音量鍵選擇,無多個用戶則默認用戶0不詢問) user="$user" -#是否備份使用者數據 (1備份0不備份) +#備份模式 +#1包含數據+安裝包,0僅包安裝包 +#此選項設置1時Backup_obb_data,Backup_user_data,blacklist_mode將可設置 0時Backup_user_data,Backup_obb_data,blacklist_mode選項不生效 +#此外設置0時將同時忽略appList.txt的!與任何黑名單設置(包括黑名單列表) +Backup_Mode=1 + +#是否備份使用者數據 (1備份 0不備份 留空強制音量鍵選擇) Backup_user_data="${Backup_user_data:-1}" -#是否備份外部數據 即比如原神的數據包(1備份0不備份) +#是否備份外部數據 例:原神的數據包(1備份 0不備份 留空強制音量鍵選擇) Backup_obb_data="${Backup_obb_data:-1}" -#是否在應用數據備份好後備份自定義目錄 +#是否在應用數據備份完成後備份自定義目錄 +#1開啟 0關閉 backup_media="${backup_media:-0}" #假設你遇到列表輸出異常問題請將此設為1 debug_list="${debug_list:-0}" -#添加自定義備份路徑 請勿刪除" " +#添加自定義備份路徑 例:Download DCIM等文件夾 請使用絕對路徑,請勿刪除\"\" Custom_path=\""${Custom_path:- /storage/emulated/0/Pictures/ /storage/emulated/0/Download/ @@ -60,15 +63,15 @@ Custom_path=\""${Custom_path:- /data/adb }"\" -#黑名單模式(1直接忽略備份0僅備份安裝檔) +#黑名單模式(1完全忽略,不備份 0僅備份安裝包,注意!此選項Backup_Mode=1時黑名單模式才能使用) blacklist_mode="${blacklist_mode:-0}" -#備份黑名單 備份apk不備份任何數據 +#備份黑名單(備份策略由「黑名單模式」控制,此處只作為黑名單應用列表) blacklist=\""${blacklist:- #com.esunbank #com.chailease.tw.app.android.ccfappcust}"\" -#位於data的預裝應用白名單 +#位於data的預裝應用白名單 例:相冊 錄音機 天氣 計算器等(默認屏蔽備份預裝應用,如需備份請添加預裝應用白名單) whitelist=\""${whitelist:- com.xiaomi.xmsf com.xiaomi.xiaoailite @@ -87,7 +90,7 @@ com.xiaomi.router com.xiaomi.mico dev.miuiicons.pedroz}"\" -#可被備份的系統應用白名單 +#可被備份的系統應用白名單(默認屏蔽備份系統應用,如需備份請添加系統應用白名單) system=\""${system:- com.google.android.calendar com.google.android.gm @@ -102,13 +105,13 @@ sh.siava.AOSPMods com.facebook.katana com.android.chrome}"\" -#備份完成後啟動應用 +#需要在備份完成後啟動應用 am_start=\""${am_start:- com.digibites.accubattery com.dede.nativetools }"\" -#壓縮算法(可用zstd tar tar為僅打包 有什麼好用的壓縮算法請聯繫我 +#壓縮算法(可用zstd tar,tar為僅打包 有什麼好用的壓縮算法請聯系我 #zstd擁有良好的壓縮率與速度 Compression_method=${Compression_method:-zstd} @@ -127,15 +130,19 @@ rgb_c="${rgb_c:-177}" s/false/0/g' } update_Restore_settings_conf() { - echo "#1開啟0關閉 -#是否在每次執行備份腳本使用音量鍵詢問如下備份需求 -#如果是那下面兩項設置就被忽略,改為音量鍵選擇 + echo "#音量鍵選擇總開關 是否在每次執行恢復腳本時使用音量鍵詢問恢復需求 +#1開啟音量鍵選擇(如選項已設置,則跳過該選項提示) +#0關閉音量鍵選擇(如選項未設置,則強制使用音量鍵選擇) Lo="${Lo:-0}" -#自動更新腳本 +#腳本語言設置 為空自動針對當前系統語言環境自動翻譯 +#1簡體中文 0繁體中文 +Shell_LANG="$Shell_LANG" + +#自動更新腳本(留空強制音量鍵選擇) update="${update:-1}" -#使用者(為空預設0) +#使用者(如0 999等用戶,留空如存在多個用戶強制音量鍵選擇,無多用戶則默認0不詢問) user= #主色 @@ -166,11 +173,24 @@ if [[ ! -f $conf_path ]]; then echo "$conf_path配置遺失" && exit 1 fi fi ;; - *) conf_path="$MODDIR/backup_settings.conf" ;; + *) + if [[ -f $MODDIR/backup_settings.conf ]]; then + conf_path="$MODDIR/backup_settings.conf" + else + [[ -f $MODDIR/restore_settings.conf ]] && conf_path="$MODDIR/restore_settings.conf" + fi esac fi [[ ! -f $conf_path ]] && echo "$conf_path遺失" && exit 2 . "$conf_path" &>/dev/null +if [[ $Shell_LANG != "" ]]; then + case $Shell_LANG in + 1) LANG="CN" ;; + 0) LANG="TW" ;; + *) echo "$conf_path Shell_LANG=$Shell_LANG 設置錯誤 正確1or0" && exit 2 ;; + esac +fi +[[ $LANG = "" ]] && LANG="$(getprop "persist.sys.locale")" echoRgb() { #轉換echo顏色提高可讀性 if [[ $2 = 0 ]]; then @@ -280,7 +300,7 @@ export CLASSPATH="$tools_path/classes.dex:$tools_path/classes2.dex" zstd_sha256sum="55cc57a3d079dd90e74d972c705c4f9389dd00a7175de148e21000eab01f7ed9" tar_sha256sum="3c605b1e9eb8283555225dcad4a3bf1777ae39c5f19a2c8b8943140fd7555814" classesdex_sha256sum="09d0058763157b97d6ea2bf74bd7ec53089a9ddb496f089a159ea0027007bb94" -classesdex2_sha256sum="010c1e247a104ebe39cc218af9b4c9581a9ee0946851dea249d3f40050c15d79" +classesdex2_sha256sum="e78b33af047464c225b171da0da3e46fb2932b798ff4cd26de75a1649b5e30d5" [[ $(sha256sum "$tools_path/zstd" | cut -d" " -f1) != $zstd_sha256sum ]] && echoRgb "zstd效驗失敗" "0" && exit 2 [[ $(sha256sum "$tools_path/tar" | cut -d" " -f1) != $tar_sha256sum ]] && echoRgb "tar效驗失敗" "0" && exit 2 [[ $(sha256sum "$tools_path/classes.dex" | cut -d" " -f1) != $classesdex_sha256sum ]] && echoRgb "classes.dex效驗失敗" "0" && exit 2 @@ -295,7 +315,6 @@ if [[ $(which toybox | egrep -o "system") != system ]]; then echoRgb "系統變量中沒有找到toybox" "0" exit 1 fi -LANG="$(getprop "persist.sys.locale")" #下列為自定義函數 alias appinfo="app_process /system/bin --nice-name=appinfo han.core.order.AppInfo $@" alias down="app_process /system/bin --nice-name=down han.core.order.Down $@" @@ -411,6 +430,7 @@ if [[ $(su -v 2>/dev/null) != "" ]]; then Manager_version="$(su -v 2>/dev/null)" else if [[ -d /data/adb/ksu ]]; then + ksu="ksu" echo "KernelSU" else echo "null" @@ -461,10 +481,10 @@ case $MODDIR in esac case $LANG in *TW* | *tw* | *HK*) - echoRgb "系統語系:繁體中文" + echoRgb "系統語言環境:繁體中文" Script_target_language="zh-TW" ;; *CN* | *cn*) - echoRgb "系統語系:簡體中文" + echoRgb "系統語言環境:簡體中文" Script_target_language="zh-CN" ;; esac case $operate in @@ -498,6 +518,15 @@ backup|Restore|Restore2|Getlist|backup_media) else user="0" fi + else + user_id="$(appinfo -listUsers)" + if [[ $user_id != "" && $(appinfo -listUsers | wc -l) -gt 1 ]]; then + echo "$user_id" | while read ; do + [[ $REPLY = 0 ]] && echoRgb "主用戶:$REPLY" "2" || echoRgb "分身用戶:$REPLY" "2" + done + else + echoRgb "主用戶:$user_id" "2" + fi fi else user="$(echo "${0%}" | sed 's/.*\/Backup_zstd_\([0-9]*\).*/\1/')" @@ -534,7 +563,7 @@ Rename_script () { if [[ -d ${REPLY%/*}/tools ]]; then touch_shell "$Script_type" "$REPLY" if [[ $Script_target_language != $shell_language ]]; then - [[ $HT = 0 && $K = "" ]] && echoRgb "腳本語系為$shell_language....轉換為$Script_target_language中,請稍後等待轉換...." + [[ $HT = 0 && $K = "" ]] && echoRgb "腳本語言為$shell_language....轉換為$Script_target_language中,請稍後等待轉換...." ts -f "$REPLY" -o "$REPLY" echo_log "$REPLY翻譯" mv "$REPLY" "$MODDIR_NAME/$(ts "$FILE_NAME")" @@ -544,7 +573,7 @@ Rename_script () { fi ;; kill_script) if [[ $Script_target_language != $shell_language ]]; then - [[ $HT = 0 && $K = "" ]] && echoRgb "腳本語系為$shell_language....轉換為$Script_target_language中,請稍後等待轉換...." + [[ $HT = 0 && $K = "" ]] && echoRgb "腳本語言為$shell_language....轉換為$Script_target_language中,請稍後等待轉換...." ts -f "$REPLY" -o "$REPLY" echo_log "$REPLY翻譯" mv "$REPLY" "$MODDIR_NAME/$(ts "$FILE_NAME")" @@ -605,16 +634,22 @@ update_script() { echo_log "解壓縮${zipFile##*/}" if [[ $result = 0 ]]; then if [[ $shell_language != $Script_target_language ]]; then - echoRgb "腳本語系為$shell_language....轉換為$Script_target_language中,請稍後等待轉換...." + echoRgb "腳本語言為$shell_language....轉換為$Script_target_language中,請稍後等待轉換...." ts -f "$path_hierarchy/tools/Device_List" -o "$path_hierarchy/tools/Device_List" echo_log "$path_hierarchy/tools/Device_List翻譯" ts -f "$path_hierarchy/tools/tools.sh" -o "$path_hierarchy/tools/tools.sh" && sed -i "s/shell_language=\"$shell_language\"/shell_language=\"$Script_target_language\"/g" "$path_hierarchy/tools/tools.sh" echo_log "$path_hierarchy/tools/tools.sh翻譯" HT=1 fi + update_backup_settings_conf>"$path_hierarchy/backup_settings.conf" + ts -f "$path_hierarchy/backup_settings.conf" -o "$path_hierarchy/backup_settings.conf" + echo_log "$path_hierarchy/backup_settings.conf" if [[ -d $find_tools_path && $find_tools_path != $path_hierarchy/tools ]]; then rm -rf "$find_tools_path" cp -r "$path_hierarchy/tools" "${find_tools_path%/*}" + update_Restore_settings_conf>"${find_tools_path%/*}/restore_settings.conf" + ts -f "${find_tools_path%/*}/restore_settings.conf" -o "${find_tools_path%/*}/restore_settings.conf" + echo_log "${find_tools_path%/*}/restore_settings.conf翻譯" fi Rename_script if [[ $Output_path != "" ]]; then @@ -693,11 +728,23 @@ if [[ $path_hierarchy != "" && $Script_target_language != "" ]]; then case $shell_language in zh-CN|zh-TW) if [[ $Script_target_language != $shell_language ]]; then - [[ $K = 1 ]] && echoRgb "腳本語系為$shell_language....轉換為$Script_target_language中,請稍後等待轉換...." + [[ $K = 1 ]] && echoRgb "腳本語言為$shell_language....轉換為$Script_target_language中,請稍後等待轉換...." ts -f "$REPLY" -o "$REPLY" if [[ $? = 0 ]]; then touch "$TMPDIR/0" echo_log "$REPLY翻譯" + MODDIR="${0%/*}" + if [[ $REPLY != *Backup_* ]]; then + update_backup_settings_conf>"${REPLY%/*/*}/backup_settings.conf" + ts -f "${REPLY%/*/*}/backup_settings.conf" -o "${REPLY%/*/*}/backup_settings.conf" + echo_log "${REPLY%/*/*}/backup_settings.conf翻譯" + else + if [[ $REPLY = *Backup_* ]]; then + update_Restore_settings_conf>"${REPLY%/*/*}/restore_settings.conf" + ts -f "${REPLY%/*/*}/restore_settings.conf" -o "${REPLY%/*/*}/restore_settings.conf" + echo_log "${REPLY%/*/*}/restore_settings.conf翻譯" + fi + fi sed -i "s/shell_language=\"$shell_language\"/shell_language=\"$Script_target_language\"/g" "$REPLY" ts -f "${REPLY%/*}/Device_List" -o "${REPLY%/*}/Device_List" echo_log "${REPLY%/*}/Device_List翻譯" @@ -715,10 +762,15 @@ fi Lo="$(echo "$Lo" | sed 's/true/1/g ; s/false/0/g')" isBoolean "$Lo" "Lo" && Lo="$nsx" if [[ $Lo = false ]]; then - isBoolean "$update" "update" && update="$nsx" -else + [[ $update != "" ]] && isBoolean "$update" "update" && update="$nsx" || { echoRgb "自動更新腳本?\n -音量上更新,下不更新" + get_version "更新" "不更新" && update="$branch" + } +else + [[ $update = "" ]] && { + echoRgb "自動更新腳本?\n -音量上更新,下不更新" get_version "更新" "不更新" && update="$branch" + } || isBoolean "$update" "update" && update="$nsx" fi [[ $update = true ]] && json="$(down -s -L "$Language" 2>/dev/null)" || echoRgb "自動更新被關閉" "0" if [[ $json != "" ]]; then @@ -783,7 +835,7 @@ backup_path() { OTGPATH="$(echo "$PU" | awk '{print $1}')" OTGFormat="$(echo "$PU" | awk '{print $2}')" if [[ -d $OTGPATH ]]; then - if [[ $(echo "$MODDIR" | egrep -o "^${OTGPATH}") != "" || $USBdefault = true ]]; then + if [[ $(echo "$MODDIR" | egrep -o "^${OTGPATH}") != "" ]]; then hx="true" Backup="$MODDIR/Backup_${Compression_method}_$user" else @@ -897,14 +949,6 @@ Backup_apk() { result=0 echoRgb "Apk版本無更新 跳過備份" "2" else - case $name2 in - com.google.android.youtube) - [[ -d /data/adb/Vanced ]] && nobackup="true" - ;; - com.google.android.apps.youtube.music) - [[ -d /data/adb/Music ]] && nobackup="true" - ;; - esac if [[ $nobackup != true ]]; then if [[ $apk_version != "" ]]; then let osn++ @@ -919,7 +963,7 @@ Backup_apk() { fi unset Filesize Filesize="$(du -s "$apk_path2" | awk '{print $1}')" - partition_info "$Backup" "$name2 apk" + partition_info "$Backup" "$name1 apk" #備份apk echoRgb "$1" echo "$apk_path" | sed -e '/^$/d' | while read; do @@ -968,7 +1012,7 @@ Backup_apk() { fi else let osj++ - echoRgb "$name1不支持備份 需要使用vanced安裝" "0" && rm -rf "$Backup_folder" + rm -rf "$Backup_folder" fi fi [[ $name2 = bin.mt.plus && ! -f $Backup/$name1.apk ]] && cp -r "$apk_path" "$Backup/$name1.apk" @@ -1020,12 +1064,14 @@ Backup_data() { echo_log "備份ssaid" fi Get_Permissions="$(get_Permissions "$name2")" - if [[ $Permissions = "" ]]; then - echo "Permissions=\"$Get_Permissions\"">"$app_Permissions" - echo_log "備份權限" - else - [[ $Permissions != $Get_Permissions ]] && echo "Permissions=\"$Get_Permissions\"">"$app_Permissions" && echo_log "備份權限" - fi ;; + if [[ $Get_Permissions != "" ]]; then + if [[ $Permissions = "" ]]; then + echo "Permissions=\"$Get_Permissions\"">"$app_Permissions" + echo_log "備份權限" + else + [[ $Permissions != $Get_Permissions ]] && echo "Permissions=\"$Get_Permissions\"">"$app_Permissions" && echo_log "備份權限" + fi + fi ;; esac if [[ $Size != $Filesize ]]; then #停止應用 @@ -1265,7 +1311,7 @@ get_name(){ [[ $rgb_a -ge 229 ]] && rgb_a=118 unset PackageName NAME DUMPAPK ChineseName [[ -f $Folder/app_details ]] && . "$Folder/app_details" &>/dev/null - [[ ! -f $txt ]] && echo "#不需要恢復還原的應用請在開頭注釋# 比如#xxxxxxxx 酷安" >"$txt" + [[ ! -f $txt ]] && echo "#不需要恢復還原的應用請在開頭使用#注釋 比如:#酷安 com.coolapk.market" >"$txt" if [[ $PackageName = "" || $ChineseName = "" ]]; then echoRgb "${Folder##*/}包名獲取失敗,解壓縮獲取包名中..." "0" rm -rf "$TMPDIR"/* @@ -1311,7 +1357,7 @@ get_name(){ done if [[ -d $MODDIR/Media ]]; then echoRgb "存在媒體資料夾" "2" - [[ ! -f $txt2 ]] && echo "#不需要恢復的資料夾請在開頭注釋# 比如#媒體" > "$txt2" + [[ ! -f $txt2 ]] && echo "#不需要恢復的資料夾請在開頭使用#注釋 比如:#Download" > "$txt2" find "$MODDIR/Media" -maxdepth 1 -name "*.tar*" -type f 2>/dev/null | while read; do echoRgb "${REPLY##*/}" && echo "${REPLY##*/}" >> "$txt2" done @@ -1391,30 +1437,62 @@ backup) #效驗選填是否正確 isBoolean "$Lo" "Lo" && Lo="$nsx" if [[ $Lo = false ]]; then - isBoolean "$default_behavior" "default_behavior" && default_behavior="$nsx" - isBoolean "$delete_folder" "delete_folder" && delete_folder="$nsx" - isBoolean "$USBdefault" "USBdefault" && USBdefault="$nsx" - isBoolean "$Backup_obb_data" "Backup_obb_data" && Backup_obb_data="$nsx" - isBoolean "$Backup_user_data" "Backup_user_data" && Backup_user_data="$nsx" - isBoolean "$blacklist_mode" "blacklist_mode" && blacklist_mode="$nsx" - isBoolean "$backup_media" "backup_media" && backup_media="$nsx" - else - echoRgb "檢查目錄是否存在已卸載應用?\n -音量上檢查,下不檢查" - get_version "檢查" "不檢查" && delete_folder="$branch" - echoRgb "檢查到已卸載應用\n -音量上刪除資料夾,下移動到其他處" - get_version "刪除" "移動到其他處" && default_behavior="$branch" - echoRgb "存在usb隨身碟是否默認使用隨身碟?\n -音量上默認,下進行詢問" - get_version "默認" "詢問" && USBdefault="$branch" - if [[ $(echo "$blacklist" | grep -v "#" | wc -l) -gt 0 ]]; then - echoRgb "選擇黑名單模式\n -音量上不備份,音量下僅備份安裝檔" "2" - get_version "不備份" "備份安裝檔" && blacklist_mode="$branch" - fi - echoRgb "是否備份外部數據 即比如原神的數據包\n -音量上備份,音量下不備份" "2" - get_version "備份" "不備份" && Backup_obb_data="$branch" - echoRgb "是否備份使用者數據\n -音量上備份,音量下不備份" "2" - get_version "備份" "不備份" && Backup_user_data="$branch" + [[ $Backup_Mode != "" ]] && isBoolean "$Backup_Mode" "Backup_Mode" && Backup_Mode="$nsx" || { + echoRgb "選擇備份模式\n -音量上備份應用+數據,音量下僅應用不包含數據" "2" + get_version "應用+數據" "僅應用" && Backup_Mode="$branch" + } + if [[ $Backup_Mode = true ]]; then + if [[ $(echo "$blacklist" | grep -v "#" | wc -l) -gt 0 ]]; then + if [[ $blacklist_mode != "" ]]; then + isBoolean "$blacklist_mode" "blacklist_mode" && blacklist_mode="$nsx" + else + echoRgb "選擇黑名單模式\n -音量上不備份,音量下僅備份安裝檔\n -警告! " "2" + get_version "不備份" "備份安裝檔" && blacklist_mode="$branch" + fi + fi + fi + if [[ $Backup_Mode = true ]]; then + [[ $Backup_obb_data != "" ]] && isBoolean "$Backup_obb_data" "Backup_obb_data" && Backup_obb_data="$nsx" || { + echoRgb "是否備份外部數據 即比如原神的數據包\n -音量上備份,音量下不備份" "2" + get_version "備份" "不備份" && Backup_obb_data="$branch" + } + [[ $Backup_user_data != "" ]] && isBoolean "$Backup_user_data" "Backup_user_data" && Backup_user_data="$nsx" || { + echoRgb "是否備份使用者數據\n -音量上備份,音量下不備份" "2" + get_version "備份" "不備份" && Backup_user_data="$branch" + } + else + Backup_user_data="false" + Backup_obb_data="false" + fi + [[ $backup_media != "" ]] && isBoolean "$backup_media" "backup_media" && backup_media="$nsx" || { echoRgb "全部應用備份結束後是否備份自定義目錄\n -音量上備份,音量下不備份" "2" get_version "備份" "不備份" && backup_media="$branch" + } + else + [[ $Backup_Mode = "" ]] && { + echoRgb "選擇備份模式\n -音量上備份應用+數據,音量下僅應用不包含數據" "2" + get_version "應用+數據" "僅應用" && Backup_Mode="$branch" + } || isBoolean "$Backup_Mode" "Backup_Mode" && Backup_Mode="$nsx" + if [[ $Backup_Mode = true ]]; then + if [[ $(echo "$blacklist" | grep -v "#" | wc -l) -gt 0 ]]; then + [[ $blacklist_mode = "" ]] && { + echoRgb "選擇黑名單模式\n -音量上不備份,音量下僅備份安裝檔" "2" + get_version "不備份" "備份安裝檔" && blacklist_mode="$branch" + } || isBoolean "$blacklist_mode" "blacklist_mode" && blacklist_mode="$nsx" + fi + [[ $Backup_obb_data = "" ]] && { + echoRgb "是否備份外部數據 即比如原神的數據包\n -音量上備份,音量下不備份" "2" + get_version "備份" "不備份" && Backup_obb_data="$branch" + } || isBoolean "$Backup_obb_data" "Backup_obb_data" && Backup_obb_data="$nsx" + [[ $Backup_user_data = "" ]] && { + echoRgb "是否備份使用者數據\n -音量上備份,音量下不備份" "2" + get_version "備份" "不備份" && Backup_user_data="$branch" + } || isBoolean "$Backup_user_data" "Backup_user_data" && Backup_user_data="$nsx" + fi + [[ $backup_media = "" ]] && { + echoRgb "全部應用備份結束後是否備份自定義目錄\n -音量上備份,音量下不備份" "2" + get_version "備份" "不備份" && backup_media="$branch" + } || isBoolean "$backup_media" "backup_media" && backup_media="$nsx" fi i=1 #數據目錄 @@ -1438,47 +1516,13 @@ backup) sort -u "$txt" -o "$txt" &>/dev/null data="$MODDIR" hx="本地" - echoRgb "腳本受到內核機制影響 息屏後io性能嚴重影響\n -請勿關閉終端或是息屏備份 如需終止腳本\n -請執行終止腳本.sh即可停止" "3" + echoRgb "腳本受到內核機制影響 息屏後IO性能嚴重影響\n -請勿關閉終端或是息屏備份 如需終止腳本\n -請執行終止腳本.sh即可停止" "3" backup_path - echoRgb "配置詳細:\n -壓縮方式:$Compression_method\n -音量鍵確認:$Lo\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\n -黑名單模式:$blacklist_mode" + echoRgb "配置詳細:\n -壓縮方式:$Compression_method\n -音量鍵確認:$Lo\n -更新:$update\n -備份模式:$Backup_Mode\n -備份外部數據:$Backup_obb_data\n -備份user數據:$Backup_user_data\n -自定義目錄備份:$backup_media\n" D="1" C="$(sed -e '/^$/d' "$txt" 2>/dev/null | sed -n '$=')" [[ $user = 0 ]] && Apk_info="$(appinfo -sort-i -o pn -pn $system -3 2>/dev/null | 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 ':') 2>/dev/null | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)" [[ $Apk_info = "" ]] && echoRgb "appinfo輸出失敗" "0" && exit 2 - if [[ -d $Backup && $backup_mode = "" ]]; then - if [[ $delete_folder = true ]]; then - find "$Backup" -maxdepth 1 -type d 2>/dev/null | sort | while read; do - if [[ -f $REPLY/app_details ]]; then - unset PackageName - . "$REPLY/app_details" &>/dev/null - if [[ $PackageName != "" && $(echo "$Apk_info" | egrep -w "^$PackageName$") = "" ]]; then - if [[ $default_behavior = true ]]; then - rm -rf "$REPLY" - echoRgb "${REPLY##*/}不存在系統 刪除資料夾" "0" - else - if [[ ! -d $Backup/被卸載的應用 ]]; then - mkdir -p "$Backup/被卸載的應用" && mv "$REPLY" "$Backup/被卸載的應用/" - else - mv "$REPLY" "$Backup/被卸載的應用/" - fi - [[ ! -d $Backup/被卸載的應用/tools ]] && cp -r "$tools_path" "$Backup/被卸載的應用" - [[ ! -f $Backup/被卸載的應用/恢復備份.sh ]] && touch_shell "Restore" "$Backup/被卸載的應用/恢復備份.sh" - [[ ! -f $Backup/被卸載的應用/重新生成應用列表.sh ]] && touch_shell "dumpname" "$Backup/被卸載的應用/重新生成應用列表.sh" - [[ ! -f $Backup/被卸載的應用/轉換資料夾名稱.sh ]] && touch_shell "convert" "$Backup/被卸載的應用/轉換資料夾名稱.sh" - [[ ! -f $Backup/被卸載的應用/壓縮檔完整性檢查.sh ]] && touch_shell "check_file" "$Backup/被卸載的應用/壓縮檔完整性檢查.sh" - [[ ! -f $Backup/被卸載的應用/終止腳本.sh ]] && cp -r "$MODDIR/終止腳本.sh" "$Backup/被卸載的應用/終止腳本.sh" - [[ ! -f $Backup/被卸載的應用/restore_settings.conf ]] && update_Restore_settings_conf>"$Backup/被卸載的應用/restore_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 - done - fi - fi [[ $backup_mode = "" ]] && { echoRgb "檢查備份列表中是否存在已經卸載應用" "3" while [[ $D -le $C ]]; do @@ -1486,7 +1530,7 @@ backup) name2="$(sed -e '/^$/d' "$txt" 2>/dev/null | sed -n "${D}p" | awk '{print $2}')" if [[ $name1 != "" && $name2 != "" ]]; then if [[ $(echo "$Apk_info" | egrep -w "^$name2$") != "" ]]; then - [[ $Tmplist = "" ]] && Tmplist='#不需要備份的應用請在開頭注釋# 比如#酷安 xxxxxxxx\n#不需要備份數據比如!酷安 xxxxxxxx應用名前方方加一個驚嘆號即可 注意是應用名不是包名' + [[ $Tmplist = "" ]] && Tmplist='#不需要備份的應用請在開頭使用#注釋 比如:#酷安 com.coolapk.market(忽略安裝包和數據)\n#不需要備份數據的應用請在開頭使用!注釋 比如:!酷安 com.coolapk.market(僅忽略數據)' Tmplist="$Tmplist\n$name1 $name2" else case $name1 in @@ -1504,11 +1548,13 @@ backup) r="$(grep -v "#" "$txt" 2>/dev/null | sed -e '/^$/d' | sed -n '$=')" [[ $backup_mode != "" ]] && r=1 [[ $r = "" && $backup_mode = "" ]] && echoRgb "$MODDIR_NAME/appList.txt是空的或是包名被注釋備份個鬼\n -檢查是否注釋亦或者執行$MODDIR_NAME/生成應用列表.sh" "0" && exit 1 - [[ $Backup_user_data = false ]] && echoRgb "當前$MODDIR_NAME/backup_settings.conf的\n -Backup_user_data=0將不備份user數據" "0" - [[ $Backup_obb_data = false ]] && echoRgb "當前$MODDIR_NAME/backup_settings.conf的\n -Backup_obb_data=0將不備份外部數據" "0" + if [[ $Backup_Mode = true ]]; then + [[ $Backup_user_data = false ]] && echoRgb "當前$MODDIR_NAME/backup_settings.conf的\n -Backup_user_data=0將不備份user數據" "0" + [[ $Backup_obb_data = false ]] && echoRgb "當前$MODDIR_NAME/backup_settings.conf的\n -Backup_obb_data=0將不備份外部數據" "0" + fi [[ $backup_media = false ]] && echoRgb "當前$MODDIR_NAME/backup_settings.conf的\n -backup_media=0將不備份自定義資料夾" "0" txt2="$Backup/appList.txt" - [[ ! -f $txt2 ]] && echo "#不需要恢復還原的應用請在開頭注釋# 比如#xxxxxxxx 酷安">"$txt2" + [[ ! -f $txt2 ]] && echo "#不需要恢復還原的應用請在開頭使用#注釋 比如:#酷安 com.coolapk.market">"$txt2" [[ ! -d $Backup/tools ]] && cp -r "$tools_path" "$Backup" [[ ! -f $Backup/恢復備份.sh ]] && touch_shell "Restore" "$Backup/恢復備份.sh" [[ ! -f $Backup/終止腳本.sh ]] && cp -r "$MODDIR/終止腳本.sh" "$Backup/終止腳本.sh" @@ -1564,15 +1610,22 @@ backup) echoRgb "備份第$i/$r個應用 剩下$((r - i))個" "3" echoRgb "備份 $name1 \"$name2\"" "2" unset Backup_folder ChineseName PackageName nobackup No_backupdata result apk_version versionName apk_version2 apk_version3 zsize zmediapath Size data_path userSize dataSize obbSize Ssaid Permissions - if [[ $name1 = !* || $name1 = !* ]]; then - name1="$(echo "$name1" | sed 's/!//g ; s/!//g')" - echoRgb "跳過備份所有數據" "0" - No_backupdata=1 - fi - if [[ $(echo "$blacklist" | grep -w "$name2") = $name2 ]]; then - echoRgb "黑名單應用跳過備份所有數據" "0" - No_backupdata=1 - fi + if [[ $Backup_Mode = true ]]; then + if [[ $name1 = !* || $name1 = !* ]]; then + name1="$(echo "$name1" | sed 's/!//g ; s/!//g')" + echoRgb "跳過備份所有數據" "0" + No_backupdata=1 + fi + if [[ $(echo "$blacklist" | grep -w "$name2") = $name2 ]]; then + if [[ $blacklist_mode = true ]]; then + echoRgb "黑名單應用跳過備份" "0" + nobackup="true" + else + echoRgb "黑名單應用跳過備份所有數據" "0" + fi + No_backupdata=1 + fi + fi Backup_folder="$Backup/$name1" app_details="$Backup_folder/app_details" app_Permissions="$Backup_folder/Permissions" @@ -1593,27 +1646,31 @@ backup) [[ $name2 = com.tencent.mobileqq ]] && echoRgb "QQ可能恢復備份失敗或是丟失聊天記錄,請自行用你信賴的應用備份" "0" [[ $name2 = com.tencent.mm ]] && echoRgb "WX可能恢復備份失敗或是丟失聊天記錄,請自行用你信賴的應用備份" "0" apk_number="$(echo "$apk_path" | wc -l)" - if [[ $apk_number = 1 ]]; then - Backup_apk "非Split Apk" "3" - else - Backup_apk "Split Apk支持備份" "3" - fi - if [[ $result = 0 && $No_backupdata = "" && $nobackup != true ]]; then - if [[ $Backup_obb_data = true ]]; then - #備份data數據 - Backup_data "data" - #備份obb數據 - Backup_data "obb" - fi - #備份user數據 - [[ $Backup_user_data = true ]] && Backup_data "user" - [[ $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" - Set_service - fi - [[ -f $Backup_folder/${name2}.sh ]] && rm -rf "$Backup_folder/${name2}.sh" - [[ ! -f $Backup_folder/recover.sh ]] && touch_shell "Restore2" "$Backup_folder/recover.sh" - [[ ! -f $Backup_folder/backup.sh ]] && touch_shell "backup" "$Backup_folder/backup.sh" "backup_mode" "backup_mode=\"1\"" + if [[ $nobackup != true ]]; then + if [[ $apk_number = 1 ]]; then + Backup_apk "非Split Apk" "3" + else + Backup_apk "Split Apk支持備份" "3" + fi + if [[ $result = 0 && $No_backupdata = "" ]]; then + if [[ $Backup_Mode = true ]]; then + if [[ $Backup_obb_data = true ]]; then + #備份data數據 + Backup_data "data" + #備份obb數據 + Backup_data "obb" + fi + #備份user數據 + [[ $Backup_user_data = true ]] && Backup_data "user" + [[ $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" + Set_service + fi + fi + [[ -f $Backup_folder/${name2}.sh ]] && rm -rf "$Backup_folder/${name2}.sh" + [[ ! -f $Backup_folder/recover.sh ]] && touch_shell "Restore2" "$Backup_folder/recover.sh" + [[ ! -f $Backup_folder/backup.sh ]] && touch_shell "backup" "$Backup_folder/backup.sh" "backup_mode" "backup_mode=\"1\"" + fi endtime 2 "$name1 備份" "3" lxj="$(echo "$Occupation_status" | awk '{print $3}' | sed 's/%//g')" echoRgb "完成$((i * 100 / r))% $hx$(echo "$Occupation_status" | awk 'END{print "剩餘:"$1"使用率:"$2}')" "3" @@ -1658,11 +1715,20 @@ backup) app_details="$Backup_folder/app_details" [[ -f $app_details ]] && . "$app_details" &>/dev/null || touch "$app_details" mediatxt="$Backup/mediaList.txt" - [[ ! -f $mediatxt ]] && echo "#不需要恢復的資料夾請在開頭注釋# 比如#媒體" > "$mediatxt" + [[ ! -f $mediatxt ]] && echo "#不需要恢復的資料夾請在開頭使用#注釋 比如:#Download" > "$mediatxt" echo "$Custom_path" | grep -v "#" | sed -e '/^$/d' | sed 's/\/$//' | while read; do echoRgb "備份第$A/$B個資料夾 剩下$((B - A))個" "3" starttime2="$(date -u "+%s")" - Backup_data "${REPLY##*/}" "$REPLY" + if [[ ${REPLY##*/} = adb ]]; then + if [[ $ksu != ksu ]]; then + Backup_data "${REPLY##*/}" "$REPLY" + else + echoRgb "KSU不支持備份adb模塊資料夾" "0" + Set_back_1 + fi + else + Backup_data "${REPLY##*/}" "$REPLY" + fi endtime 2 "${REPLY##*/}備份" "1" echoRgb "完成$((A * 100 / B))% $hx$(echo "$Occupation_status" | awk 'END{print "剩餘:"$1"使用率:"$2}')" "2" rgb_d="$rgb_a" @@ -1962,21 +2028,26 @@ Getlist) isBoolean "$debug_list" "debug_list" && debug_list="$nsx" isBoolean "$Lo" "Lo" && Lo="$nsx" if [[ $Lo = false ]]; then - isBoolean "$blacklist_mode" "blacklist_mode" && blacklist_mode="$nsx" + [[ $blacklist_mode != "" ]] && isBoolean "$blacklist_mode" "blacklist_mode" && blacklist_mode="$nsx" || { + echoRgb "選擇黑名單模式\n -音量上不備份,音量下僅備份安裝檔" "2" + get_version "不備份" "備份安裝檔" && blacklist_mode="$branch" + } else if [[ $(echo "$blacklist" | grep -v "#" | wc -l) -gt 0 ]]; then + [[ $blacklist_mode = "" ]] && { echoRgb "選擇黑名單模式\n -音量上不備份,音量下僅備份安裝檔" "2" get_version "不備份" "備份安裝檔" && blacklist_mode="$branch" + } || isBoolean "$blacklist_mode" "blacklist_mode" && blacklist_mode="$nsx" fi fi txtpath="$MODDIR" [[ $debug_list = true ]] && txtpath="${txtpath/'/storage/emulated/'/'/data/media/'}" nametxt="$txtpath/appList.txt" - [[ ! -f $nametxt ]] && echo '#不需要備份的應用請在開頭注釋# 比如#酷安 xxxxxxxx\n#不需要備份數據比如!酷安 xxxxxxxx應用名前方方加一個驚嘆號即可 注意是應用名不是包名' >"$nametxt" + [[ ! -f $nametxt ]] && echo '#不需要備份的應用請在開頭使用#注釋 比如:#酷安 com.coolapk.market(忽略安裝包和數據)\n#不需要備份數據的應用請在開頭使用!注釋 比如:!酷安 com.coolapk.market(僅忽略數據)' >"$nametxt" echoRgb "請勿關閉腳本,等待提示結束" rgb_a=118 starttime1="$(date -u "+%s")" - echoRgb "提示! 腳本會屏蔽預裝應用" "0" + echoRgb "提示! 腳本默認會屏蔽預裝應用 如需備份請添加預裝應用白名單" "0" xposed_name="$(appinfo -o pn -xm)" Apk_info="$(appinfo -sort-i -d " " -o addXpTag:'Xposed: ',anwb,pn -pn $system -3 2>/dev/null | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)" [[ $Apk_info = "" ]] && { @@ -1990,6 +2061,7 @@ Getlist) rc="0" rd="0" Q="0" + rb="0" Output_list() { if [[ $(cat "$nametxt" | cut -f2 -d ' ' | egrep -w "^${app_1[1]}$") != ${app_1[1]} ]]; then case ${app_1[1]} in @@ -2012,7 +2084,7 @@ Getlist) echoRgb "$REPLY($rgb_a)" let i++ else - echoRgb "${app_1[2]}非Xposed模塊 忽略輸出" "0" + echoRgb "${app_1[2]} 預裝應用 忽略輸出" "0" let rc++ fi fi @@ -2039,14 +2111,16 @@ Getlist) echo "$Apk_info" | sed 's/\///g ; s/\://g ; s/(//g ; s/)//g ; s/\[//g ; s/\]//g ; s/\-//g ; s/!//g' | while read; do [[ $rgb_a -ge 229 ]] && rgb_a=118 app_1=($REPLY $REPLY) - if [[ $blacklist_mode = true ]]; then - if [[ $(echo "$blacklist" | egrep -w "^${app_1[1]}$") != ${app_1[1]} ]]; then + if [[ $(echo "$blacklist" | egrep -w "^${app_1[1]}$") != ${app_1[1]} ]]; then + Output_list + else + if [[ $blacklist_mode = false ]]; then Output_list + let rb++ else echoRgb "${app_1[2]}黑名單應用 不輸出" "0" + let rb++ fi - else - Output_list fi if [[ $LR = $Apk_Quantity ]]; then echo "$REPLY2">>"$nametxt" @@ -2055,7 +2129,7 @@ Getlist) echoRgb "\n -輸出異常 請將$conf_path中的debug_list=\"0\"改為1或是重新執行本腳本" "0" exit fi - [[ $tmp != "" ]] && echoRgb "\n -第三方apk數量=\"$Apk_Quantity\"\n -已過濾=\"$rc\"\n -xposed=\"$rd\"\n -存在列表中=\"$Q\"\n -輸出=\"$i\"" + [[ $tmp != "" ]] && echoRgb "\n -第三方apk數量=\"$Apk_Quantity\"\n -已過濾=\"$rc\"\n -xposed=\"$rd\"\n -黑名單應用=\"$rb\"\n -存在列表中=\"$Q\"\n -輸出=\"$i\"" fi let rgb_a++ LR++ done @@ -2067,7 +2141,7 @@ Getlist) name2="$(sed -e '/^$/d' "$nametxt" | sed -n "${D}p" | awk '{print $2}')" if [[ $name1 != "" && $name2 != "" ]]; then if [[ $(echo "$Apk_info2" | egrep -w "^$name2$") != "" ]]; then - [[ $Tmplist = "" ]] && Tmplist='#不需要備份的應用請在開頭注釋# 比如#酷安 xxxxxxxx\n#不需要備份數據比如!酷安 xxxxxxxx應用名前方方加一個驚嘆號即可 注意是應用名不是包名' + [[ $Tmplist = "" ]] && Tmplist='#不需要備份的應用請在開頭使用#注釋 比如:#酷安 com.coolapk.market(忽略安裝包和數據)\n#不需要備份數據的應用請在開頭使用!注釋 比如:!酷安 com.coolapk.market(僅忽略數據)' Tmplist="$Tmplist\n$name1 $name2" else case $name1 in @@ -2105,14 +2179,23 @@ backup_media) filesize="$(du -s "$Backup_folder" | awk '{print $1}')" [[ -f $app_details ]] && . "$app_details" &>/dev/null || touch "$app_details" mediatxt="$Backup/mediaList.txt" - [[ ! -f $mediatxt ]] && echo "#不需要恢復的資料夾請在開頭注釋# 比如#媒體" > "$mediatxt" + [[ ! -f $mediatxt ]] && echo "#不需要恢復的資料夾請在開頭使用#注釋 比如:#Download" > "$mediatxt" echo "$script">"$TMPDIR/scriptTMP" Set_screen_pause_seconds on { echo "$Custom_path" | grep -v "#" | sed -e '/^$/d' | sed 's/\/$//' | while read; do echoRgb "備份第$A/$B個資料夾 剩下$((B - A))個" "3" starttime2="$(date -u "+%s")" - Backup_data "${REPLY##*/}" "$REPLY" + if [[ ${REPLY##*/} = adb ]]; then + if [[ $ksu != ksu ]]; then + Backup_data "${REPLY##*/}" "$REPLY" + else + echoRgb "KSU不支持備份adb模塊資料夾" "0" + Set_back_1 + fi + else + Backup_data "${REPLY##*/}" "$REPLY" + fi endtime 2 "${REPLY##*/}備份" "1" echoRgb "完成$((A * 100 / B))% $hx$(echo "$Occupation_status" | awk 'END{print "剩餘:"$1"使用率:"$2}')" "2" && echoRgb "____________________________________" && let A++ done