This commit is contained in:
Yawasau
2024-03-17 18:01:48 +08:00
parent aff4405b7b
commit 927590b095
4 changed files with 288 additions and 200 deletions

View File

@@ -1,62 +1,66 @@
#1開啟0關閉 #音量鍵選擇總開關 是否在每次執行備份腳本時使用音量鍵詢問備份需求
#是否在每次執行備份腳本使用音量鍵詢問如下備份需求 #1開啟音量鍵選擇 (如選項已設置,則跳過該選項提示)
#如果是那下面三項設置就被忽略,改為音量鍵選擇 #0關閉音量鍵選擇 (如選項未設置,則強制使用音量鍵選擇)
Lo=0 Lo=0
#備份時檢查資料夾是否存在已經卸載應用 #腳本語言設置 留空則自動識別系統語言環境並翻譯
delete_folder=1 #1簡體中文 0繁體中文
Shell_LANG=0
#存在已卸載應用操作(1刪除0移動) #自定義備份文件輸出位置 支持相對路徑(留空則默認當前路徑)
default_behavior=0
#自定義位置支持相對位置
#自定義備份目錄輸出位置 (忽略為空將默認腳本路徑中)
Output_path="" Output_path=""
#自定義applist.txt位置 #自定義applist.txt位置 支持相對路徑(留空則默認當前路徑)
list_location="" list_location=""
#自動更新腳本 #自動更新腳本(留空強制音量鍵選擇)
#1開啟 0關閉
update=1 update=1
#假設如果存在usb隨身碟是否默認使用隨身碟(1不詢問默認使用 0每次都進行詢問) #自定義屏蔽外部掛載點 例OTG 虛擬SD等 多個掛載點請使用 | 區隔
USBdefault=0 #屏蔽後不會提示音量鍵選擇不影響Output_path指定外置存儲位置
#自定義屏蔽外部掛載點,多個分區請使用|區隔
mount_point="rannki|0000-1" mount_point="rannki|0000-1"
#使用者(為空預設0) #使用者(如0 999等用戶如存在多個用戶留空強制音量鍵選擇無多個用戶則默認用戶0不詢問)
user=0 user=0
#是否備份使用者數據 (1備份0不備份) #備份模式
#1包含數據+安裝包0僅包安裝包
#此選項設置1時Backup_obb_dataBackup_user_datablacklist_mode將可設置 0時Backup_user_dataBackup_obb_datablacklist_mode選項不生效
#此外設置0時將同時忽略appList.txt的!與任何黑名單設置(包括黑名單列表)
Backup_Mode=1
#是否備份使用者數據 (1備份 0不備份 留空強制音量鍵選擇)
Backup_user_data=1 Backup_user_data=1
#是否備份外部數據 即比如原神的數據包(1備份0不備份) #是否備份外部數據 例:原神的數據包(1備份 0不備份 留空強制音量鍵選擇)
Backup_obb_data=1 Backup_obb_data=1
#是否在應用數據備份後備份自定義目錄 #是否在應用數據備份完成後備份自定義目錄
#1開啟 0關閉
backup_media=1 backup_media=1
#假設你遇到列表輸出異常問題請將此設為1 #假設你遇到列表輸出異常問題請將此設為1
debug_list=0 debug_list=0
#添加自定義備份路徑 請勿刪除 #添加自定義備份路徑 Download DCIM等文件夾 請使用絕對路徑,請勿刪除""
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/DCIM/ /storage/emulated/0/DCIM/
/data/adb /data/adb
" "
#黑名單模式(1直接忽略備份0僅備份安裝檔) #黑名單模式(1完全忽略,不備份 0僅備份安裝包注意此選項Backup_Mode=1時黑名單模式才能使用)
blacklist_mode=0 blacklist_mode=1
#備份黑名單 備份apk不備份任何數據 #備份黑名單備份策略由「黑名單模式」控制,此處只作為黑名單應用列表)
blacklist=" blacklist="
#com.esunbank #com.esunbank
#com.chailease.tw.app.android.ccfappcust" #com.chailease.tw.app.android.ccfappcust"
#位於data的預裝應用白名單 #位於data的預裝應用白名單 例:相冊 錄音機 天氣 計算器等(默認屏蔽備份預裝應用,如需備份請添加預裝應用白名單)
whitelist=" whitelist="
com.xiaomi.xmsf com.xiaomi.xmsf
com.xiaomi.xiaoailite com.xiaomi.xiaoailite
@@ -75,7 +79,7 @@ com.xiaomi.router
com.xiaomi.mico com.xiaomi.mico
dev.miuiicons.pedroz" dev.miuiicons.pedroz"
#可被備份的系統應用白名單 #可被備份的系統應用白名單(默認屏蔽備份系統應用,如需備份請添加系統應用白名單)
system=" system="
com.google.android.calendar com.google.android.calendar
com.google.android.gm com.google.android.gm
@@ -90,13 +94,13 @@ sh.siava.AOSPMods
com.facebook.katana com.facebook.katana
com.android.chrome" com.android.chrome"
#備份完成後啟動應用 #需要在備份完成後啟動應用
am_start=" am_start="
com.digibites.accubattery com.digibites.accubattery
com.dede.nativetools com.dede.nativetools
" "
#壓縮算法(可用zstd tar tar為僅打包 有什麼好用的壓縮算法請聯 #壓縮算法(可用zstd tartar為僅打包 有什麼好用的壓縮算法請聯
#zstd擁有良好的壓縮率與速度 #zstd擁有良好的壓縮率與速度
Compression_method=zstd Compression_method=zstd
@@ -105,3 +109,4 @@ rgb_a=226
#輔色 #輔色
rgb_b=123 rgb_b=123
rgb_c=177 rgb_c=177

View File

@@ -156,7 +156,7 @@
"M1810E5E" "小米 MIX 3 全網通版" "M1810E5E" "小米 MIX 3 全網通版"
"M1810E5A" "小米 MIX 3 全網通版 (全球頻段)" "M1810E5A" "小米 MIX 3 全網通版 (全球頻段)"
"M1810E5GG" "小米 MIX 3 5G" "M1810E5GG" "小米 MIX 3 5G"
"M2011J18C" "MIX FOLD 小米折屏手機" "M2011J18C" "MIX FOLD 小米折屏手機"
"2106118C" "Xiaomi MIX 4" "2106118C" "Xiaomi MIX 4"
"22061218C" "Xiaomi MIX Fold 2" "22061218C" "Xiaomi MIX Fold 2"
"2308CPXD0C" "Xiaomi MIX Fold 3" "2308CPXD0C" "Xiaomi MIX Fold 3"

Binary file not shown.

View File

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