This commit is contained in:
Yawasau
2024-11-09 23:31:00 +08:00
parent df0074b5a7
commit 73d68e9d83
11 changed files with 126 additions and 236 deletions

View File

@@ -1,12 +1,11 @@
#0關閉音量鍵選擇 (如選項未設置,則強制使用音量鍵選擇) #0關閉音量鍵選擇 (如選項未設置,則強制使用音量鍵選擇)
#1開音量鍵選擇 (如選項已設置,則跳過該選項提示) #1開音量鍵選擇 (如選項已設置,則跳過該選項提示)
#2使用鍵盤輸入適用於無音量鍵可用設備選擇 (如選項未設置,則強制使用鍵盤輸入) #2使用鍵盤輸入適用於無音量鍵可用設備選擇 (如選項未設置,則強制使用鍵盤輸入)
Lo=0 Lo=0
#後執行腳本 #後執行腳本
0不能關閉當前終端有壓縮速率 0不能關閉當前終端有壓縮速率
1開啟通知,有進度條,無壓縮速率顯示 1終端有可能完全無顯示但是log會持續刷新可直接完全關閉終端
2開啟通知無進度條備份完成後通知無壓縮速率顯示
background_execution=0 background_execution=0
#腳本語言設置 留空則自動識別系統語言環境並翻譯 #腳本語言設置 留空則自動識別系統語言環境並翻譯
@@ -20,7 +19,7 @@ Output_path=""
list_location="" list_location=""
#自動更新腳本(留空強制選擇) #自動更新腳本(留空強制選擇)
#1開 0關閉 #1開 0關閉
update=1 update=1
#自定義屏蔽外部掛載點 例OTG 虛擬SD等 多個掛載點請使用 | 區隔 #自定義屏蔽外部掛載點 例OTG 虛擬SD等 多個掛載點請使用 | 區隔
@@ -28,7 +27,7 @@ update=1
mount_point="rannki|0000-1" mount_point="rannki|0000-1"
#使用者(如0 999等用戶如存在多個用戶留空強制選擇無多個用戶則默認用戶0不詢問) #使用者(如0 999等用戶如存在多個用戶留空強制選擇無多個用戶則默認用戶0不詢問)
user= user=0
#備份模式 #備份模式
#1包含數據+安裝包0僅包安裝包 #1包含數據+安裝包0僅包安裝包
@@ -47,13 +46,13 @@ Backup_user_data=1
Backup_obb_data=1 Backup_obb_data=1
#是否在應用數據備份完成後備份自定義目錄 #是否在應用數據備份完成後備份自定義目錄
#1開 0關閉 #1開 0關閉
backup_media=0 backup_media=0
#存在進程忽略備份(1忽略0備份) #存在進程忽略備份(1忽略0備份)
Background_apps_ignore=0 Background_apps_ignore=0
#假設你遇到列表輸出異常問題請將此設1 #假設你遇到列表輸出異常問題請將此設1
debug_list=0 debug_list=0
#添加自定義備份路徑 例Download DCIM等文件夾 請使用絕對路徑,請勿刪除"" #添加自定義備份路徑 例Download DCIM等文件夾 請使用絕對路徑,請勿刪除""
@@ -68,7 +67,7 @@ Custom_path="
#黑名單模式(1完全忽略不備份 0僅備份安裝包注意此選項Backup_Mode=1時黑名單模式才能使用) #黑名單模式(1完全忽略不備份 0僅備份安裝包注意此選項Backup_Mode=1時黑名單模式才能使用)
blacklist_mode=0 blacklist_mode=0
#備份黑名單(備份策略由「黑名單模式」控制,此處只作黑名單應用列表) #備份黑名單(備份策略由「黑名單模式」控制,此處只作黑名單應用列表)
blacklist=" blacklist="
#com.esunbank #com.esunbank
#com.chailease.tw.app.android.ccfappcust" #com.chailease.tw.app.android.ccfappcust"
@@ -107,13 +106,7 @@ sh.siava.AOSPMods
com.facebook.katana com.facebook.katana
com.android.chrome" com.android.chrome"
#需要在備份完成後啟動應用 #壓縮算法(可用zstd tartar爲僅打包 有什麼好用的壓縮算法請聯系我
am_start="
com.digibites.accubattery
com.dede.nativetools
"
#壓縮算法(可用zstd tartar為僅打包 有什麼好用的壓縮算法請聯系我
#zstd擁有良好的壓縮率與速度 #zstd擁有良好的壓縮率與速度
Compression_method=zstd Compression_method=zstd

View File

@@ -131,9 +131,10 @@
"24030PN60G" "Xiaomi 14 Ultra 國際版" "24030PN60G" "Xiaomi 14 Ultra 國際版"
"24053PY09I" "Xiaomi 14 Civi 印度版" "24053PY09I" "Xiaomi 14 Civi 印度版"
"2406APNFAG" "Xiaomi 14T 國際版" "2406APNFAG" "Xiaomi 14T 國際版"
"XIG06" "Xiaomi 14T 日本版 (KDDI)" "XIG07" "Xiaomi 14T 日本版 (KDDI)"
"2407FPN8EG" "Xiaomi 14T Pro 國際版" "2407FPN8EG" "Xiaomi 14T Pro 國際版"
"2407FPN8ER" "Xiaomi 14T Pro 日本版 (無鎖)" "2407FPN8ER" "Xiaomi 14T Pro 日本版 (無鎖)"
"XIG06" "Xiaomi 14T Pro 日本版 (KDDI)"
"A402XM" "Xiaomi 14T Pro 日本版 (SoftBank)" "A402XM" "Xiaomi 14T Pro 日本版 (SoftBank)"
"24129PN74C" "Xiaomi 15 國行版" "24129PN74C" "Xiaomi 15 國行版"
"24129PN74G" "Xiaomi 15 國際版" "24129PN74G" "Xiaomi 15 國際版"
@@ -356,7 +357,7 @@
"22120RN86C" "Redmi 12C 國行版" "22120RN86C" "Redmi 12C 國行版"
"22120RN86G" "Redmi 12C 國際版" "22120RN86G" "Redmi 12C 國際版"
"22120RN86I" "Redmi 12C 印度版" "22120RN86I" "Redmi 12C 印度版"
"2212ARNC4L" "Redmi 12C 拉美版" "2212ARNC4L" "Redmi 12C 拉美版 / 日本版"
"22126RN91Y" "Redmi 12C 國際版 (NFC)" "22126RN91Y" "Redmi 12C 國際版 (NFC)"
"2404ARN45A" "Redmi 13 國際版" "2404ARN45A" "Redmi 13 國際版"
"2404ARN45I" "Redmi 13 印度版" "2404ARN45I" "Redmi 13 印度版"
@@ -373,7 +374,7 @@
"2409BRN2CC" "Redmi 14C 國行版" "2409BRN2CC" "Redmi 14C 國行版"
"2409BRN2CA" "Redmi 14C 國際版" "2409BRN2CA" "Redmi 14C 國際版"
"2409BRN2CI" "Redmi 14C 印度版" "2409BRN2CI" "Redmi 14C 印度版"
"2409BRN2CL" "Redmi 14C 拉美版" "2409BRN2CL" "Redmi 14C 拉美版 / 日本版"
"2409BRN2CY" "Redmi 14C 國際版 (NFC)" "2409BRN2CY" "Redmi 14C 國際版 (NFC)"
"2411DRN47C" "Redmi 14R 5G" "2411DRN47C" "Redmi 14R 5G"
"2014018" "紅米 Note 聯通 3G 標準版" "2014018" "紅米 Note 聯通 3G 標準版"
@@ -398,7 +399,7 @@
"2015611" "紅米 Note 3 移動合約版" "2015611" "紅米 Note 3 移動合約版"
"2015115" "紅米 Note 3 國行版" "2015115" "紅米 Note 3 國行版"
"2015116" "紅米 Note 3 國際版" "2015116" "紅米 Note 3 國際版"
"2015161" "紅米 Note 3 灣特制版" "2015161" "紅米 Note 3 灣特制版"
"2016050" "紅米 Note 4 全網通版" "2016050" "紅米 Note 4 全網通版"
"2016051" "紅米 Note 4 移動版" "2016051" "紅米 Note 4 移動版"
"2016101" "紅米 Note 4X 高通 全網通版" "2016101" "紅米 Note 4X 高通 全網通版"
@@ -538,8 +539,8 @@
"2406ERN9CC" "Redmi Note 13R" "2406ERN9CC" "Redmi Note 13R"
"2311FRAFDC" "Redmi Note 13R Pro" "2311FRAFDC" "Redmi Note 13R Pro"
"24094RAD4C" "Redmi Note 14 5G 國行版" "24094RAD4C" "Redmi Note 14 5G 國行版"
"24094RAD4G" "Redmi Note 14 5G 國際版"
"24094RAD4I" "Redmi Note 14 5G 印度版" "24094RAD4I" "Redmi Note 14 5G 印度版"
"24094RAD4G" "Redmi Note 14 5G 國際版"
"24116RACCG" "Redmi Note 14 Pro 國際版" "24116RACCG" "Redmi Note 14 Pro 國際版"
"24090RA29C" "Redmi Note 14 Pro 國行版" "24090RA29C" "Redmi Note 14 Pro 國行版"
"24090RA29G" "Redmi Note 14 Pro 5G 國際版" "24090RA29G" "Redmi Note 14 Pro 5G 國際版"
@@ -684,6 +685,7 @@
"2312FPCA6G" "POCO M6 Pro 國際版" "2312FPCA6G" "POCO M6 Pro 國際版"
"23076PC4BI" "POCO M6 Pro 5G 印度版" "23076PC4BI" "POCO M6 Pro 5G 印度版"
"24108PCE2I" "POCO M7 5G 印度版" "24108PCE2I" "POCO M7 5G 印度版"
"2409FPCC4G" "POCO M7 Pro 5G 國際版"
"M2006C3MI" "POCO C3 印度版" "M2006C3MI" "POCO C3 印度版"
"211033MI" "POCO C31 印度版" "211033MI" "POCO C31 印度版"
"220333QPG" "POCO C40 國際版" "220333QPG" "POCO C40 國際版"
@@ -898,6 +900,8 @@
"SM-W7023" "三星 W23 Flip" "SM-W7023" "三星 W23 Flip"
"SM-W9024" "三星 W24" "SM-W9024" "三星 W24"
"SM-W7024" "三星 W24 Flip" "SM-W7024" "三星 W24 Flip"
"SM-W9025" "三星 W25"
"SM-W7025" "三星 W25 Flip"
"SM-G1600" "Galaxy Folder" "SM-G1600" "Galaxy Folder"
"SM-G1650" "Galaxy Folder 2" "SM-G1650" "Galaxy Folder 2"
"SM-G8508S" "Galaxy Alpha" "SM-G8508S" "Galaxy Alpha"
@@ -1179,14 +1183,14 @@
"TB375FC" "聯想小新 Pad Pro 12.7 2025" "TB375FC" "聯想小新 Pad Pro 12.7 2025"
"TB351FU" "聯想小新 Pad Studio" "TB351FU" "聯想小新 Pad Studio"
"TB372FC" "聯想小新學習平板 12.7" "TB372FC" "聯想小新學習平板 12.7"
"Lenovo YT3-850F" "聯想 YOGA Tab 3 8 Wi-Fi 版" "Lenovo YT3-850F" "聯想 YOGA Tab 3 8 Wi-Fi 版"
"Lenovo YT3-850L" "聯想 YOGA Tab 3 8 LTE 版" "Lenovo YT3-850L" "聯想 YOGA Tab 3 8 LTE 版"
"Lenovo YT3-X50F" "聯想 YOGA Tab 3 10 Wi-Fi 版" "Lenovo YT3-X50F" "聯想 YOGA Tab 3 10 Wi-Fi 版"
"Lenovo YT3-X50L" "聯想 YOGA Tab 3 10 LTE 版" "Lenovo YT3-X50L" "聯想 YOGA Tab 3 10 LTE 版"
"Lenovo YT-X703F" "聯想 YOGA Tab 3 Plus Wi-Fi 版" "Lenovo YT-X703F" "聯想 YOGA Tab 3 Plus Wi-Fi 版"
"Lenovo YT-X703L" "聯想 YOGA Tab 3 Plus LTE 版" "Lenovo YT-X703L" "聯想 YOGA Tab 3 Plus LTE 版"
"Lenovo YT3-X90F" "聯想 YOGA Tab 3 PRO 10 Wi-Fi 版" "Lenovo YT3-X90F" "聯想 YOGA Tab 3 PRO 10 Wi-Fi 版"
"Lenovo YT3-X90L" "聯想 YOGA Tab 3 PRO 10 LTE 版" "Lenovo YT3-X90L" "聯想 YOGA Tab 3 PRO 10 LTE 版"
"Lenovo YT-K606F" "聯想 YOGA Pad Pro" "Lenovo YT-K606F" "聯想 YOGA Pad Pro"
"SP101FU" "聯想 YOGA Paper 墨水平板" "SP101FU" "聯想 YOGA Paper 墨水平板"
"Lenovo TB-9707F" "聯想拯救者 Y700 (2022)" "Lenovo TB-9707F" "聯想拯救者 Y700 (2022)"
@@ -1214,20 +1218,20 @@
"Lenovo TB-X605LC" "聯想 M10 FHD-REL 10.1 英寸 LTE 版" "Lenovo TB-X605LC" "聯想 M10 FHD-REL 10.1 英寸 LTE 版"
"Lenovo TB-X606F" "聯想 M10 PLUS 10.3 英寸 Wi-Fi 版" "Lenovo TB-X606F" "聯想 M10 PLUS 10.3 英寸 Wi-Fi 版"
"Lenovo TB-X616F" "聯想平板 TB-X616F 10.3 英寸 Wi-Fi 版" "Lenovo TB-X616F" "聯想平板 TB-X616F 10.3 英寸 Wi-Fi 版"
"TB310FU" "聯想天 K9 9 英寸 Wi-Fi 版" "TB310FU" "聯想天 K9 9 英寸 Wi-Fi 版"
"TB310XC" "聯想天 K9 9 英寸 LTE 版" "TB310XC" "聯想天 K9 9 英寸 LTE 版"
"Lenovo TB-X6C6F" "聯想天 K10 10.3 英寸 Wi-Fi 版" "Lenovo TB-X6C6F" "聯想天 K10 10.3 英寸 Wi-Fi 版"
"Lenovo TB-X6C6X" "聯想天 K10 10.3 英寸 LTE 版" "Lenovo TB-X6C6X" "聯想天 K10 10.3 英寸 LTE 版"
"TB223FC" "聯想天 K10 Pro 10.61 英寸 Wi-Fi 版" "TB223FC" "聯想天 K10 Pro 10.61 英寸 Wi-Fi 版"
"TB226XC" "聯想天 K10 Pro 10.61 英寸 LTE 版" "TB226XC" "聯想天 K10 Pro 10.61 英寸 LTE 版"
"TB360ZU" "聯想天 K10 Pro 10.61 英寸 5G 版" "TB360ZU" "聯想天 K10 Pro 10.61 英寸 5G 版"
"Lenovo TB-J6C6F" "聯想天 K11 11 英寸 Wi-Fi 版" "Lenovo TB-J6C6F" "聯想天 K11 11 英寸 Wi-Fi 版"
"Lenovo TB-J6C6X" "聯想天 K11 11 英寸 LTE 版" "Lenovo TB-J6C6X" "聯想天 K11 11 英寸 LTE 版"
"Lenovo TB-J607Z" "聯想天 K11 Pro 5G" "Lenovo TB-J607Z" "聯想天 K11 Pro 5G"
"TB230FC" "聯想天 K11 Gen2 11.5 英寸 Wi-Fi 版" "TB230FC" "聯想天 K11 Gen2 11.5 英寸 Wi-Fi 版"
"TB230XC" "聯想天 K11 Gen2 11.5 英寸 LTE 版" "TB230XC" "聯想天 K11 Gen2 11.5 英寸 LTE 版"
"TB240FC" "聯想天 K12 12.7 英寸 Wi-Fi 版" "TB240FC" "聯想天 K12 12.7 英寸 Wi-Fi 版"
"SP523FC" "聯想天 SmartPaper 10.3 英寸 Wi-Fi 版" "SP523FC" "聯想天 SmartPaper 10.3 英寸 Wi-Fi 版"
"Lenovo TB-X6E6F" "Lenovo Tab K10 10.3 英寸 Wi-Fi 版" "Lenovo TB-X6E6F" "Lenovo Tab K10 10.3 英寸 Wi-Fi 版"
"Lenovo TB-X6E6X" "Lenovo Tab K10 10.3 英寸 LTE 版" "Lenovo TB-X6E6X" "Lenovo Tab K10 10.3 英寸 LTE 版"
"Lenovo TB-J606F" "Lenovo Tab K11 11 英寸 Wi-Fi 版" "Lenovo TB-J606F" "Lenovo Tab K11 11 英寸 Wi-Fi 版"
@@ -1471,6 +1475,7 @@
"XT2453-2" "moto razr 50" "XT2453-2" "moto razr 50"
"XT2451-4" "moto razr 50 Ultra" "XT2451-4" "moto razr 50 Ultra"
"XT2435-3" "moto g55" "XT2435-3" "moto g55"
"XT2437-4" "moto g75"
"TA-1000" "Nokia 6" "TA-1000" "Nokia 6"
"TA-1054" "Nokia 6 (第二代)" "TA-1054" "Nokia 6 (第二代)"
"TA-1041" "Nokia 7" "TA-1041" "Nokia 7"

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -10,7 +10,7 @@ MODDIR_NAME="${MODDIR##*/}"
tools_path="$MODDIR/tools" tools_path="$MODDIR/tools"
Compression_rate=9 Compression_rate=9
script="${0##*/}" script="${0##*/}"
backup_version="V16" backup_version="V16.1"
[[ $SHELL = *mt* ]] && echo "請勿使用MT管理器拓展包環境執行,請更換系統環境" && exit 2 [[ $SHELL = *mt* ]] && echo "請勿使用MT管理器拓展包環境執行,請更換系統環境" && exit 2
update_backup_settings_conf() { update_backup_settings_conf() {
echo "#0關閉音量鍵選擇 (如選項未設置,則強制使用音量鍵選擇) echo "#0關閉音量鍵選擇 (如選項未設置,則強制使用音量鍵選擇)
@@ -20,8 +20,7 @@ Lo="${Lo:-0}"
#後台執行腳本 #後台執行腳本
0不能關閉當前終端有壓縮速率 0不能關閉當前終端有壓縮速率
1開啟通知,有進度條,無壓縮速率顯示 1終端有可能完全無顯示但是log會持續刷新可直接完全關閉終端
2開啟通知無進度條備份完成後通知無壓縮速率顯示
background_execution="${background_execution:-0}" background_execution="${background_execution:-0}"
#腳本語言設置 留空則自動識別系統語言環境並翻譯 #腳本語言設置 留空則自動識別系統語言環境並翻譯
@@ -122,12 +121,6 @@ sh.siava.AOSPMods
com.facebook.katana com.facebook.katana
com.android.chrome}"\" com.android.chrome}"\"
#需要在備份完成後啟動應用
am_start=\""${am_start:-
com.digibites.accubattery
com.dede.nativetools
}"\"
#壓縮算法(可用zstd tartar為僅打包 有什麼好用的壓縮算法請聯系我 #壓縮算法(可用zstd tartar為僅打包 有什麼好用的壓縮算法請聯系我
#zstd擁有良好的壓縮率與速度 #zstd擁有良好的壓縮率與速度
Compression_method=${Compression_method:-zstd} Compression_method=${Compression_method:-zstd}
@@ -154,8 +147,7 @@ Lo="${Lo:-0}"
#後台執行腳本 #後台執行腳本
0不能關閉當前終端有壓縮速率 0不能關閉當前終端有壓縮速率
1開啟通知,有進度條,無壓縮速率顯示 1終端有可能完全無顯示但是log會持續刷新可直接完全關閉終端
2開啟通知無進度條備份完成後通知無壓縮速率顯示
background_execution="${background_execution:-0}" background_execution="${background_execution:-0}"
#腳本語言設置 為空自動針對當前系統語言環境自動翻譯 #腳本語言設置 為空自動針對當前系統語言環境自動翻譯
@@ -266,7 +258,7 @@ id=
if [[ $id != "" && -d /data/user/0/com.tencent.mobileqq/files/aladdin_configs/$id ]]; then if [[ $id != "" && -d /data/user/0/com.tencent.mobileqq/files/aladdin_configs/$id ]]; then
exit 2 exit 2
fi fi
PATH="/sbin/.magisk/busybox:/sbin/.magisk:/sbin:/data/adb/ksu/bin:/system_ext/bin:/system/bin:/system/xbin:/vendor/bin:/vendor/xbin:/data/data/com.omarea.vtools/files/toolkit:/data/user/0/com.termux/files/usr/bin:/data/data/Han.GJK/files/usr/busybox" PATH="/sbin/.magisk/busybox:/sbin/.magisk:/sbin:/data/adb/ksu/bin:/system_ext/bin:/system/bin:/system/xbin:/vendor/bin:/vendor/xbin:/data/data/com.omarea.vtools/files/toolkit:/data/user/0/com.termux/files/usr/bin"
if [[ -d $(magisk --path 2>/dev/null) ]]; then if [[ -d $(magisk --path 2>/dev/null) ]]; then
PATH="$(magisk --path 2>/dev/null)/.magisk/busybox:$PATH" PATH="$(magisk --path 2>/dev/null)/.magisk/busybox:$PATH"
else else
@@ -282,9 +274,7 @@ exclude="
update update
soc.json soc.json
update-binary update-binary
classes2.dex
classes.dex classes.dex
notification.dex
Device_List" Device_List"
if [[ ! -d $filepath ]]; then if [[ ! -d $filepath ]]; then
mkdir -p "$filepath" mkdir -p "$filepath"
@@ -327,7 +317,7 @@ fi
[[ ! -f $filepath/zstd ]] && echoRgb "$filepath缺少zstd" && exit 2 [[ ! -f $filepath/zstd ]] && echoRgb "$filepath缺少zstd" && exit 2
export PATH="$filepath:$PATH" export PATH="$filepath:$PATH"
export TZ=Asia/Taipei export TZ=Asia/Taipei
export CLASSPATH="$tools_path/classes.dex:$tools_path/classes2.dex:$tools_path/notification.dex" export CLASSPATH="$tools_path/classes.dex"
quit=0 quit=0
while read -r file expected_hash; do while read -r file expected_hash; do
if [[ -f $tools_path/$file ]]; then if [[ -f $tools_path/$file ]]; then
@@ -347,8 +337,7 @@ while read -r file expected_hash; do
done <<< "$(cat <<EOF done <<< "$(cat <<EOF
zstd 55cc57a3d079dd90e74d972c705c4f9389dd00a7175de148e21000eab01f7ed9 zstd 55cc57a3d079dd90e74d972c705c4f9389dd00a7175de148e21000eab01f7ed9
tar 3c605b1e9eb8283555225dcad4a3bf1777ae39c5f19a2c8b8943140fd7555814 tar 3c605b1e9eb8283555225dcad4a3bf1777ae39c5f19a2c8b8943140fd7555814
classes.dex 09d0058763157b97d6ea2bf74bd7ec53089a9ddb496f089a159ea0027007bb94 classes.dex 3ffa99026c49cb613bb75a66500fe444a56bb841f07b794dbdc5b3e38d299a27
classes2.dex cb65eefeb1e26a266eeeee92530b5173d4651e93429e048417dbee35ae7c231f
bc b15d730591f6fb52af59284b87d939c5bea204f944405a3518224d8df788dc15 bc b15d730591f6fb52af59284b87d939c5bea204f944405a3518224d8df788dc15
busybox c629fce4b0dd3ba9775f851d0941e74582115f423258d3a79800f2bd11d30f5c busybox c629fce4b0dd3ba9775f851d0941e74582115f423258d3a79800f2bd11d30f5c
find 7fa812e58aafa29679cf8b50fc617ecf9fec2cfb2e06ea491e0a2d6bf79b903b find 7fa812e58aafa29679cf8b50fc617ecf9fec2cfb2e06ea491e0a2d6bf79b903b
@@ -374,19 +363,12 @@ if [[ $(which toybox | egrep -o "system") != system ]]; then
exit 1 exit 1
fi fi
#下列為自定義函數 #下列為自定義函數
alias appinfo="app_process /system/bin --nice-name=appinfo han.core.order.AppInfo $@" alias down="app_process /system/bin com.xayah.dex.HttpUtil get $@"
alias down="app_process /system/bin --nice-name=down han.core.order.Down $@"
echoRgb "-通知:$notification"
if [[ $notification = true ]]; then
alias notification="app_process /system/bin io.github.qqlittleice233.magic.Notification -send --importance=3 $@"
else
alias notification="&>/dev/null"
fi
case $LANG in case $LANG in
*CN* | *cn*) *CN* | *cn*)
alias ts="app_process /system/bin --nice-name=appinfo han.core.order.ChineseConverter -s $@" ;; alias ts="app_process /system/bin com.xayah.dex.CCUtil t2s $@" ;;
*) *)
alias ts="app_process /system/bin --nice-name=appinfo han.core.order.ChineseConverter -t $@" ;; alias ts="app_process /system/bin com.xayah.dex.CCUtil s2t $@" ;;
esac esac
alias LS="toybox ls -Zd" alias LS="toybox ls -Zd"
Set_back_0() { Set_back_0() {
@@ -445,7 +427,6 @@ echo_log() {
Set_back_0 Set_back_0
else else
echoRgb "$1失敗,過世了" "0" echoRgb "$1失敗,過世了" "0"
[[ $3 = "" ]] && notification --tag="$RANDOM" --title="$2" --text="$1失敗,過世了" || notification --tag="$RANDOM" --title="$2" --text="$3$1失敗,過世了"
result=1 result=1
Set_back_1 Set_back_1
fi fi
@@ -516,7 +497,7 @@ else
RAMINFO="RAM:null" RAMINFO="RAM:null"
fi fi
echoRgb "---------------------SpeedBackup---------------------" echoRgb "---------------------SpeedBackup---------------------"
echoRgb "腳本路徑:$MODDIR\n -已開機:$(Show_boottime)\n -執行時間:$(date +"%Y-%m-%d %H:%M:%S")\n -busybox路徑:$(which busybox)\n -busybox版本:$(busybox | head -1 | awk '{print $2}')\n -appinfo版本:$(appinfo --version)\n -腳本版本:$backup_version\n -管理器:$Manager_version\n -品牌:$(getprop ro.product.brand 2>/dev/null)\n -型號:$Device_name($(getprop ro.product.device 2>/dev/null))\n -閃存顆粒:$UFS_MODEL($ROM_TYPE)\n -$DEVICE_NAME\n -$RAMINFO\n -Android版本:$(getprop ro.build.version.release 2>/dev/null) SDK:$(getprop ro.build.version.sdk 2>/dev/null)\n -內核:$(uname -r)\n -Selinux狀態:$([[ $(getenforce) = Permissive ]] && echo "寬容" || echo "嚴格")\n -By@YAWAsau\n -Support: https://jq.qq.com/?_wv=1027&k=f5clPNC3" echoRgb "腳本路徑:$MODDIR\n -已開機:$(Show_boottime)\n -執行時間:$(date +"%Y-%m-%d %H:%M:%S")\n -busybox路徑:$(which busybox)\n -busybox版本:$(busybox | head -1 | awk '{print $2}')\n -腳本版本:$backup_version\n -管理器:$Manager_version\n -品牌:$(getprop ro.product.brand 2>/dev/null)\n -型號:$Device_name($(getprop ro.product.device 2>/dev/null))\n -閃存顆粒:$UFS_MODEL($ROM_TYPE)\n -$DEVICE_NAME\n -$RAMINFO\n -Android版本:$(getprop ro.build.version.release 2>/dev/null) SDK:$(getprop ro.build.version.sdk 2>/dev/null)\n -內核:$(uname -r)\n -Selinux狀態:$([[ $(getenforce) = Permissive ]] && echo "寬容" || echo "嚴格")\n -By@YAWAsau\n -Support: https://jq.qq.com/?_wv=1027&k=f5clPNC3"
case $MODDIR in case $MODDIR in
*Backup_*) *Backup_*)
if [[ -f $MODDIR/app_details.json ]]; then if [[ -f $MODDIR/app_details.json ]]; then
@@ -638,13 +619,16 @@ backup|Restore|Restore2|Getlist|backup_media)
export USER_ID="$user" ;; export USER_ID="$user" ;;
esac esac
#因接收USER_ID環境變量問題故將函數放在此處 #因接收USER_ID環境變量問題故將函數放在此處
alias appinfo="app_process /system/bin com.xayah.dex.HiddenApiUtil getInstalledPackagesAsUser $USER_ID $@"
alias appinfo2="app_process /system/bin com.xayah.dex.HiddenApiUtil getPackageLabel $USER_ID $@"
alias appinfo3="app_process /system/bin com.xayah.dex.HiddenApiUtil getPackageArchiveInfo $@"
alias get_ssaid="app_process /system/bin com.xayah.dex.SsaidUtil get $USER_ID $@" alias get_ssaid="app_process /system/bin com.xayah.dex.SsaidUtil get $USER_ID $@"
alias set_ssaid="app_process /system/bin com.xayah.dex.SsaidUtil set $USER_ID $@" alias set_ssaid="app_process /system/bin com.xayah.dex.SsaidUtil set $USER_ID $@"
alias get_uid="app_process /system/bin com.xayah.dex.HiddenApiUtil getPackageUid $USER_ID $@" alias get_uid="app_process /system/bin com.xayah.dex.HiddenApiUtil getPackageUid $USER_ID $@"
alias get_Permissions="app_process /system/bin com.xayah.dex.HiddenApiUtil getRuntimePermissions $USER_ID $@" alias get_Permissions="app_process /system/bin com.xayah.dex.HiddenApiUtil getRuntimePermissions $USER_ID $@"
alias Set_true_Permissions="app_process /system/bin com.xayah.dex.HiddenApiUtil grantRuntimePermission $USER_ID $@" alias Set_true_Permissions="app_process /system/bin com.xayah.dex.HiddenApiUtil grantRuntimePermission $USER_ID $@"
alias Set_false_Permissions="app_process /system/bin com.xayah.dex.HiddenApiUtil revokeRuntimePermission $USER_ID $@" alias Set_false_Permissions="app_process /system/bin com.xayah.dex.HiddenApiUtil revokeRuntimePermission $USER_ID $@"
alias Set_Ops="app_process /system/bin com.xayah.dex.HiddenApiUtil setOpsMode $user $@" alias Set_Ops="app_process /system/bin com.xayah.dex.HiddenApiUtil setOpsMode $USER_IDr $@"
find_tools_path="$(find "$path_hierarchy"/* -maxdepth 1 -name "tools" -type d ! -path "$path_hierarchy/tools")" find_tools_path="$(find "$path_hierarchy"/* -maxdepth 1 -name "tools" -type d ! -path "$path_hierarchy/tools")"
Rename_script () { Rename_script () {
[[ $HT = "" ]] && HT=0 [[ $HT = "" ]] && HT=0
@@ -665,8 +649,8 @@ Rename_script () {
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 <"$REPLY">temp && cp temp "$REPLY" && rm temp
echo_log "$(echo "$REPLY" | sed "s|^$path_hierarchy/||")翻譯" "SpeedBackup" echo_log "$(echo "$REPLY" | sed "s|^$path_hierarchy/||")翻譯"
mv "$REPLY" "$MODDIR_NAME/$(ts "$FILE_NAME")" mv "$REPLY" "$MODDIR_NAME/$(ts "$FILE_NAME")"
fi fi
fi fi
@@ -675,8 +659,8 @@ Rename_script () {
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 <"$REPLY">temp && cp temp "$REPLY" && rm temp
echo_log "$(echo "$REPLY" | sed "s|^$path_hierarchy/||")翻譯" "SpeedBackup" echo_log "$(echo "$REPLY" | sed "s|^$path_hierarchy/||")翻譯"
mv "$REPLY" "$MODDIR_NAME/$(ts "$FILE_NAME")" mv "$REPLY" "$MODDIR_NAME/$(ts "$FILE_NAME")"
let HT++ let HT++
fi ;; fi ;;
@@ -711,16 +695,9 @@ touch_shell () {
conf_path=\"$conf_path\" conf_path=\"$conf_path\"
case \$(grep -o 'background_execution=.*' \"\$conf_path\" | awk -F '=' '{print \$2}') in case \$(grep -o 'background_execution=.*' \"\$conf_path\" | awk -F '=' '{print \$2}') in
0) 0)
notification=false
. \"$MODDIR_Path/tools/tools.sh\" | tee \"\${0%/*}/log.txt\" ;; . \"$MODDIR_Path/tools/tools.sh\" | tee \"\${0%/*}/log.txt\" ;;
1) 1)
{ {
notification=true
. \"$MODDIR_Path/tools/tools.sh\" | tee \"\${0%/*}/log.txt\"
} & ;;
2)
{
notification=false
. \"$MODDIR_Path/tools/tools.sh\" | tee \"\${0%/*}/log.txt\" . \"$MODDIR_Path/tools/tools.sh\" | tee \"\${0%/*}/log.txt\"
} & ;; } & ;;
esac esac
@@ -737,16 +714,9 @@ if [ -f \"$MODDIR_Path/tools/tools.sh\" ]; then
[ ! -f \"$conf_path\" ] && . \"\${0%/*}/tools/tools.sh\" [ ! -f \"$conf_path\" ] && . \"\${0%/*}/tools/tools.sh\"
case \$(grep -o 'background_execution=.*' \"\$conf_path\" | awk -F '=' '{print \$2}') in case \$(grep -o 'background_execution=.*' \"\$conf_path\" | awk -F '=' '{print \$2}') in
0) 0)
notification=false
. \"$MODDIR_Path/tools/tools.sh\" | tee \"\${0%/*}/log.txt\" ;; . \"$MODDIR_Path/tools/tools.sh\" | tee \"\${0%/*}/log.txt\" ;;
1) 1)
{ {
notification=true
. \"$MODDIR_Path/tools/tools.sh\" | tee \"\${0%/*}/log.txt\"
} & ;;
2)
{
notification=false
. \"$MODDIR_Path/tools/tools.sh\" | tee \"\${0%/*}/log.txt\" . \"$MODDIR_Path/tools/tools.sh\" | tee \"\${0%/*}/log.txt\"
} & ;; } & ;;
esac esac
@@ -780,25 +750,25 @@ update_script() {
zipFile="$path_hierarchy/${zipFile##*/}" zipFile="$path_hierarchy/${zipFile##*/}"
rm -rf "$path_hierarchy/tools" rm -rf "$path_hierarchy/tools"
unzip -o "$zipFile" tools/* -d "$path_hierarchy" | sed 's/inflating/釋放/g ; s/creating/創建/g ; s/Archive/解壓縮/g' unzip -o "$zipFile" tools/* -d "$path_hierarchy" | sed 's/inflating/釋放/g ; s/creating/創建/g ; s/Archive/解壓縮/g'
echo_log "解壓縮${zipFile##*/}" "SpeedBackup" 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 <"$path_hierarchy/tools/Device_List">temp && cp temp "$path_hierarchy/tools/Device_List" && rm temp
echo_log "$path_hierarchy/tools/Device_List翻譯" "SpeedBackup" echo_log "$path_hierarchy/tools/Device_List翻譯"
ts -f "$path_hierarchy/tools/tools.sh" -o "$path_hierarchy/tools/tools.sh" && sed "s/shell_language=\"$shell_language\"/shell_language=\"$Script_target_language\"/g" "$path_hierarchy/tools/tools.sh" > temp && cp temp "$path_hierarchy/tools/tools.sh" && rm temp ts <"$path_hierarchy/tools/tools.sh">temp && cp temp "$path_hierarchy/tools/tools.sh" && rm temp && sed "s/shell_language=\"$shell_language\"/shell_language=\"$Script_target_language\"/g" "$path_hierarchy/tools/tools.sh" > temp && cp temp "$path_hierarchy/tools/tools.sh" && rm temp
echo_log "$path_hierarchy/tools/tools.sh翻譯" "SpeedBackup" echo_log "$path_hierarchy/tools/tools.sh翻譯"
HT=1 HT=1
fi fi
update_backup_settings_conf>"$path_hierarchy/backup_settings.conf" update_backup_settings_conf>"$path_hierarchy/backup_settings.conf"
ts -f "$path_hierarchy/backup_settings.conf" -o "$path_hierarchy/backup_settings.conf" ts <"$path_hierarchy/backup_settings.conf">temp && cp temp "$path_hierarchy/backup_settings.conf" && rm temp
echo_log "$path_hierarchy/backup_settings.conf翻譯" "SpeedBackup" 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" 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" ts <"${find_tools_path%/*}/restore_settings.conf">temp && cp temp "${find_tools_path%/*}/restore_settings.conf" && rm temp
echo_log "${find_tools_path%/*}/restore_settings.conf翻譯" "SpeedBackup" echo_log "${find_tools_path%/*}/restore_settings.conf翻譯"
fi fi
Rename_script Rename_script
if [[ $Output_path != "" ]]; then if [[ $Output_path != "" ]]; then
@@ -868,26 +838,26 @@ if [[ $path_hierarchy != "" && $Script_target_language != "" ]]; then
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 <"$REPLY">temp && cp temp "$REPLY" && rm temp
if [[ $? = 0 ]]; then if [[ $? = 0 ]]; then
touch "$TMPDIR/0" touch "$TMPDIR/0"
echo_log "$(echo "$REPLY" | sed "s|^$path_hierarchy/||")翻譯" "SpeedBackup" echo_log "$(echo "$REPLY" | sed "s|^$path_hierarchy/||")翻譯"
MODDIR="${0%/*}" MODDIR="${0%/*}"
if [[ $REPLY != *Backup_* ]]; then if [[ $REPLY != *Backup_* ]]; then
update_backup_settings_conf>"${REPLY%/*/*}/backup_settings.conf" update_backup_settings_conf>"${REPLY%/*/*}/backup_settings.conf"
ts -f "${REPLY%/*/*}/backup_settings.conf" -o "${REPLY%/*/*}/backup_settings.conf" ts <"${REPLY%/*/*}/backup_settings.conf">temp && cp temp "${REPLY%/*/*}/backup_settings.conf" && rm temp
echo_log "${REPLY%/*/*}/backup_settings.conf翻譯" "SpeedBackup" echo_log "${REPLY%/*/*}/backup_settings.conf翻譯"
else else
if [[ $REPLY = *Backup_* ]]; then if [[ $REPLY = *Backup_* ]]; then
update_Restore_settings_conf>"${REPLY%/*/*}/restore_settings.conf" update_Restore_settings_conf>"${REPLY%/*/*}/restore_settings.conf"
ts -f "${REPLY%/*/*}/restore_settings.conf" -o "${REPLY%/*/*}/restore_settings.conf" ts <"${REPLY%/*/*}/restore_settings.conf">temp && cp temp "${REPLY%/*/*}/restore_settings.conf" && rm temp
echo_log "${REPLY%/*/*}/restore_settings.conf翻譯" "SpeedBackup" echo_log "${REPLY%/*/*}/restore_settings.conf翻譯"
fi fi
fi fi
sed "s/shell_language=\"$shell_language\"/shell_language=\"$Script_target_language\"/g" "$REPLY" > temp && cp temp "$REPLY" && rm temp sed "s/shell_language=\"$shell_language\"/shell_language=\"$Script_target_language\"/g" "$REPLY" > temp && cp temp "$REPLY" && rm temp
[[ $shell_language != $(awk -F= '/^shell_language=/ {gsub(/"/, "", $2); print $2}' "$REPLY") ]] && echoRgb "$(echo "$REPLY" | sed "s|^$path_hierarchy/||")變量修改成功" || echoRgb "$(echo "$REPLY" | sed "s|^$path_hierarchy/||")變量修改失敗" "0" [[ $shell_language != $(awk -F= '/^shell_language=/ {gsub(/"/, "", $2); print $2}' "$REPLY") ]] && echoRgb "$(echo "$REPLY" | sed "s|^$path_hierarchy/||")變量修改成功" || echoRgb "$(echo "$REPLY" | sed "s|^$path_hierarchy/||")變量修改失敗" "0"
ts -f "${REPLY%/*}/Device_List" -o "${REPLY%/*}/Device_List" ts <"${REPLY%/*}/Device_List">temp && cp temp "${REPLY%/*}/Device_List" && rm temp
echo_log "${REPLY%/*}/Device_List翻譯" "SpeedBackup" echo_log "${REPLY%/*}/Device_List翻譯"
[[ $K = 1 ]] && Rename_script [[ $K = 1 ]] && Rename_script
else else
echoRgb "$REPLY ts進程出現錯誤" "0" echoRgb "$REPLY ts進程出現錯誤" "0"
@@ -918,12 +888,12 @@ case $Lo in
} ;; } ;;
*) echoRgb "$conf_path Lo=$Lo填寫錯誤正確值0 1 2" "0" && exit 2 ;; *) echoRgb "$conf_path Lo=$Lo填寫錯誤正確值0 1 2" "0" && exit 2 ;;
esac esac
[[ $update = true ]] && json="$(down -s -L "$Language" 2>/dev/null)" || echoRgb "自動更新被關閉" "0" [[ $update = true ]] && json="$(down "$Language" 2>/dev/null)" || echoRgb "自動更新被關閉" "0"
if [[ $json != "" ]]; then if [[ $json != "" ]]; then
tag="$(echo "$json" | sed -r -n 's/.*"tag_name": *"(.*)".*/\1/p')" tag="$(jq -r '.tag_name'<<< "$json")"
if [[ $tag != "" && $backup_version != $tag ]]; then if [[ $tag != "" && $backup_version != $tag ]]; then
if [[ $(expr "$(echo "$backup_version" | tr -d "a-zA-Z")" \> "$(echo "$tag" | tr -d "a-zA-Z")") -eq 0 ]]; then if [[ $(expr "$(echo "$backup_version" | tr -d "a-zA-Z")" \> "$(echo "$tag" | tr -d "a-zA-Z")") -eq 0 ]]; then
download="$(echo "$json" | sed -r -n 's/.*"browser_download_url": *"(.*.zip)".*/\1/p')" download="$(jq -r '.assets[].browser_download_url'<<< "$json")"
case $cdn in case $cdn in
1) zip_url="http://huge.cf/download/?huge-url=$download" ;; 1) zip_url="http://huge.cf/download/?huge-url=$download" ;;
2) zip_url="https://github.moeyy.xyz/$download" ;; 2) zip_url="https://github.moeyy.xyz/$download" ;;
@@ -934,7 +904,7 @@ if [[ $json != "" ]]; then
if [[ $(expr "$(echo "$backup_version" | tr -d "a-zA-Z")" \> "$(echo "$download" | tr -d "a-zA-Z")") -eq 0 ]]; then if [[ $(expr "$(echo "$backup_version" | tr -d "a-zA-Z")" \> "$(echo "$download" | tr -d "a-zA-Z")") -eq 0 ]]; then
echoRgb "發現新版本:$tag" echoRgb "發現新版本:$tag"
if [[ $update = true ]]; then if [[ $update = true ]]; then
echoRgb "更新日誌:\n$(down -s -L "$Language" | jq -r '.body' 2>/dev/null)" echoRgb "更新日誌:\n$(down "$Language" | jq -r '.body' 2>/dev/null)"
case $Lo in case $Lo in
0|1) 0|1)
echoRgb "是否更新腳本?\n -音量上更新,音量下不更新" "2" echoRgb "是否更新腳本?\n -音量上更新,音量下不更新" "2"
@@ -945,7 +915,7 @@ if [[ $json != "" ]]; then
if [[ $choose = true ]]; then if [[ $choose = true ]]; then
echoRgb "下載中.....耐心等待 如果下載失敗請掛飛機" echoRgb "下載中.....耐心等待 如果下載失敗請掛飛機"
starttime1="$(date -u "+%s")" starttime1="$(date -u "+%s")"
down -s -L -o "$MODDIR/update.zip" "$zip_url" & down "$zip_url" >"$MODDIR/update.zip" &
wait wait
endtime 1 endtime 1
[[ ! -f $MODDIR/update.zip ]] && echoRgb "下載失敗" && exit 2 [[ ! -f $MODDIR/update.zip ]] && echoRgb "下載失敗" && exit 2
@@ -1116,7 +1086,7 @@ Backup_apk() {
zstd | Zstd | ZSTD) tar --checkpoint-action="ttyout=%T\r" -cf - *.apk | zstd --ultra -3 -T0 -q --priority=rt >"$Backup_folder/apk.tar.zst" ;; zstd | Zstd | ZSTD) tar --checkpoint-action="ttyout=%T\r" -cf - *.apk | zstd --ultra -3 -T0 -q --priority=rt >"$Backup_folder/apk.tar.zst" ;;
esac esac
) )
echo_log "備份$apk_number個Apk" "SpeedBackup" "$name1" echo_log "備份$apk_number個Apk"
if [[ $result = 0 ]]; then if [[ $result = 0 ]]; then
Validation_file "$Backup_folder/apk.tar"* Validation_file "$Backup_folder/apk.tar"*
if [[ $result = 0 ]]; then if [[ $result = 0 ]]; then
@@ -1167,7 +1137,7 @@ Backup_ssaid() {
SSAID_apk="$(echo "$name1 \"$name2\"")" SSAID_apk="$(echo "$name1 \"$name2\"")"
SSAID_apk2="$(echo "$SSAID_apk\n$SSAID_apk2")" SSAID_apk2="$(echo "$SSAID_apk\n$SSAID_apk2")"
jq --arg entry "$name1" --arg new_value "$ssaid" '.[$entry].Ssaid |= $new_value' "$app_details" > temp.json && cp temp.json "$app_details" && rm -rf temp.json jq --arg entry "$name1" --arg new_value "$ssaid" '.[$entry].Ssaid |= $new_value' "$app_details" > temp.json && cp temp.json "$app_details" && rm -rf temp.json
echo_log "備份ssaid" "備份" "$name1" echo_log "備份ssaid"
fi fi
[[ $ssaid = null ]] && ssaid= [[ $ssaid = null ]] && ssaid=
} }
@@ -1177,9 +1147,9 @@ Backup_Permissions() {
if [[ $Get_Permissions != "" ]]; then if [[ $Get_Permissions != "" ]]; then
if [[ $get_Permissions = "" ]]; then if [[ $get_Permissions = "" ]]; then
jq --arg packageName "$name1" --argjson permissions "$Get_Permissions" '.[$packageName].permissions |= $permissions' "$app_details" > temp.json && cp temp.json "$app_details" && rm -rf temp.json jq --arg packageName "$name1" --argjson permissions "$Get_Permissions" '.[$packageName].permissions |= $permissions' "$app_details" > temp.json && cp temp.json "$app_details" && rm -rf temp.json
echo_log "備份權限" "備份" "$name1" echo_log "備份權限"
else else
[[ $get_Permissions != $Get_Permissions ]] && jq --arg packageName "$name1" --argjson permissions "$Get_Permissions" '.[$packageName] |= . + {permissions: $permissions}' "$app_details" > temp.json && cp temp.json "$app_details" && rm -rf temp.json && echo_log "備份權限" "備份" "$name1" [[ $get_Permissions != $Get_Permissions ]] && jq --arg packageName "$name1" --argjson permissions "$Get_Permissions" '.[$packageName] |= . + {permissions: $permissions}' "$app_details" > temp.json && cp temp.json "$app_details" && rm -rf temp.json && echo_log "備份權限" "備份"
fi fi
fi fi
} }
@@ -1249,7 +1219,7 @@ Backup_data() {
esac esac
;; ;;
esac esac
echo_log "備份$1數據" "備份" "$name1" echo_log "備份$1數據"
} || { } || {
echoRgb "$1數據 $Filesize2太小" "0" && result=1 echoRgb "$1數據 $Filesize2太小" "0" && result=1
} }
@@ -1287,9 +1257,9 @@ Backup_data() {
else else
[[ $Size != "" ]] && echoRgb "$1數據無發生變化 跳過備份" "2" [[ $Size != "" ]] && echoRgb "$1數據無發生變化 跳過備份" "2"
fi fi
} || echoRgb "$1資料夾是空的" "0" }
else else
[[ -f $data_path ]] && echoRgb "$1是一個文件 不支持備份" "0" || echoRgb "$1數據不存在跳過備份" "0" [[ -f $data_path ]] && echoRgb "$1是一個文件 不支持備份" "0"
fi fi
} }
Release_data() { Release_data() {
@@ -1349,7 +1319,7 @@ Release_data() {
else else
Set_back_1 Set_back_1
fi fi
echo_log "解壓縮${FILE_NAME##*.}" "恢復" "$name1" echo_log "解壓縮${FILE_NAME##*.}"
if [[ $result = 0 ]]; then if [[ $result = 0 ]]; then
case $FILE_NAME2 in case $FILE_NAME2 in
user|data|obb|user_de) user|data|obb|user_de)
@@ -1382,9 +1352,9 @@ Release_data() {
esac esac
if [[ $Validation_settings = true ]]; then if [[ $Validation_settings = true ]]; then
chown -hR "$uid" "$X/" chown -hR "$uid" "$X/"
echo_log "設置用戶組" "恢復" "$name1" echo_log "設置用戶組"
chcon -hR "$Selinux_state" "$X/" 2>/dev/null chcon -hR "$Selinux_state" "$X/" 2>/dev/null
echo_log "selinux上下文設置" "恢復" "$name1" echo_log "selinux上下文設置"
else else
echoRgb "路徑:$X出現錯誤" echoRgb "路徑:$X出現錯誤"
fi ;; fi ;;
@@ -1401,11 +1371,11 @@ Release_data() {
;; ;;
thanox) thanox)
restorecon -RF "$(find "/data/system" -name "thanos*" -maxdepth 1 -type d 2>/dev/null)/" 2>/dev/null restorecon -RF "$(find "/data/system" -name "thanos*" -maxdepth 1 -type d 2>/dev/null)/" 2>/dev/null
echo_log "selinux上下文設置" "恢復" "$name1" && echoRgb "警告 thanox配置恢復後務必重啟\n -否則不生效" "0" echo_log "selinux上下文設置" && echoRgb "警告 thanox配置恢復後務必重啟\n -否則不生效" "0"
;; ;;
storage-isolation) storage-isolation)
restorecon -RF "/data/adb/storage-isolation/" 2>/dev/null restorecon -RF "/data/adb/storage-isolation/" 2>/dev/null
echo_log "selinux上下文設置" "恢復" "$name1" echo_log "selinux上下文設置"
;; ;;
esac esac
fi fi
@@ -1429,7 +1399,7 @@ installapk() {
Set_back_1 Set_back_1
;; ;;
esac esac
echo_log "${apkfile##*/}解壓縮" "恢復" "$name1" && [[ -f $Backup_folder/nmsl.apk ]] && cp -r "$Backup_folder/nmsl.apk" "$TMPDIR" echo_log "${apkfile##*/}解壓縮" && [[ -f $Backup_folder/nmsl.apk ]] && cp -r "$Backup_folder/nmsl.apk" "$TMPDIR"
else else
echoRgb "你的Apk壓縮包離家出走了可能備份後移動過程遺失了\n -解決辦法手動安裝Apk後再執行恢復腳本" "0" echoRgb "你的Apk壓縮包離家出走了可能備份後移動過程遺失了\n -解決辦法手動安裝Apk後再執行恢復腳本" "0"
fi fi
@@ -1438,7 +1408,7 @@ installapk() {
1) 1)
echoRgb "恢復普通apk" "2" echoRgb "恢復普通apk" "2"
INSTALL "$TMPDIR"/*.apk INSTALL "$TMPDIR"/*.apk
echo_log "Apk安裝" "恢復" "$name1" echo_log "Apk安裝"
;; ;;
0) 0)
echoRgb "$TMPDIR中沒有apk" "0" echoRgb "$TMPDIR中沒有apk" "0"
@@ -1448,14 +1418,14 @@ installapk() {
b="$(create 2>/dev/null | egrep -o '[0-9]+')" b="$(create 2>/dev/null | egrep -o '[0-9]+')"
if [[ -f $TMPDIR/nmsl.apk ]]; then if [[ -f $TMPDIR/nmsl.apk ]]; then
INSTALL "$TMPDIR/nmsl.apk" INSTALL "$TMPDIR/nmsl.apk"
echo_log "nmsl.apk安裝" "恢復" "$name1" echo_log "nmsl.apk安裝"
fi fi
find "$TMPDIR" -maxdepth 1 -name "*.apk" -type f 2>/dev/null | grep -v 'nmsl.apk' | while read; do find "$TMPDIR" -maxdepth 1 -name "*.apk" -type f 2>/dev/null | grep -v 'nmsl.apk' | while read; do
pm install-write "$b" "${REPLY##*/}" "$REPLY" &>/dev/null pm install-write "$b" "${REPLY##*/}" "$REPLY" &>/dev/null
echo_log "${REPLY##*/}安裝" "恢復" "$name1" echo_log "${REPLY##*/}安裝"
done done
pm install-commit "$b" &>/dev/null pm install-commit "$b" &>/dev/null
echo_log "split Apk安裝" "恢復" "$name1" echo_log "split Apk安裝"
;; ;;
esac esac
fi fi
@@ -1488,9 +1458,9 @@ get_name(){
[[ ! -f $txt3 ]] && { [[ ! -f $txt3 ]] && {
Apk_info="$(pm list packages -e --user "$user" | cut -f2 -d ':' | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)" Apk_info="$(pm list packages -e --user "$user" | cut -f2 -d ':' | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)"
if [[ $Apk_info != "" ]]; then if [[ $Apk_info != "" ]]; then
[[ $Apk_info = *"Failure calling service package"* ]] && Apk_info="$(appinfo -sort-i -o pn -a 2>/dev/null | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)" [[ $Apk_info = *"Failure calling service package"* ]] && Apk_info="$(appinfo "user|system" "pkgName" 2>/dev/null | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)"
else else
Apk_info="$(appinfo -sort-i -o pn -a 2>/dev/null | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)" Apk_info="$(appinfo "user|system" "pkgName" 2>/dev/null | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)"
fi fi
[[ $Apk_info = "" ]] && echoRgb "Apk_info變量為空" "0" && exit [[ $Apk_info = "" ]] && echoRgb "Apk_info變量為空" "0" && exit
starttime1="$(date -u "+%s")" starttime1="$(date -u "+%s")"
@@ -1541,10 +1511,10 @@ get_name(){
Set_back_1 Set_back_1
;; ;;
esac esac
echo_log "${REPLY##*/}解壓縮" "恢復" "$name1" echo_log "${REPLY##*/}解壓縮"
if [[ $result = 0 ]]; then if [[ $result = 0 ]]; then
if [[ -f $TMPDIR/base.apk ]]; then if [[ -f $TMPDIR/base.apk ]]; then
DUMPAPK="$(appinfo -d " " -o anwb,pn -f "$TMPDIR/base.apk")" DUMPAPK="$(appinfo3 "$TMPDIR/base.apk")"
if [[ $DUMPAPK != "" ]]; then if [[ $DUMPAPK != "" ]]; then
app=($DUMPAPK $DUMPAPK) app=($DUMPAPK $DUMPAPK)
PackageName="${app[1]}" PackageName="${app[1]}"
@@ -1645,7 +1615,7 @@ Validation_file() {
zst) zstd -t "$1" 2>/dev/null ;; zst) zstd -t "$1" 2>/dev/null ;;
tar) tar -tf "$1" &>/dev/null ;; tar) tar -tf "$1" &>/dev/null ;;
esac esac
echo_log "效驗" "效驗壓縮檔" echo_log "效驗"
} }
Check_archive() { Check_archive() {
starttime1="$(date -u "+%s")" starttime1="$(date -u "+%s")"
@@ -1676,12 +1646,12 @@ Set_screen_pause_seconds () {
Get_dark_screen_seconds="$(settings get system screen_off_timeout)" Get_dark_screen_seconds="$(settings get system screen_off_timeout)"
#設置30分鐘後息屏 #設置30分鐘後息屏
settings put system screen_off_timeout 1800000 settings put system screen_off_timeout 1800000
echo_log "設置無操作息屏時間30分鐘" "SpeedBackup" echo_log "設置無操作息屏時間30分鐘"
fi fi
elif [[ $1 = off ]]; then elif [[ $1 = off ]]; then
if [[ $Get_dark_screen_seconds != "" ]]; then if [[ $Get_dark_screen_seconds != "" ]]; then
settings put system screen_off_timeout "$Get_dark_screen_seconds" settings put system screen_off_timeout "$Get_dark_screen_seconds"
echo_log "設置無操作息屏時間為$Get_dark_screen_seconds" "SpeedBackup" echo_log "設置無操作息屏時間為$Get_dark_screen_seconds"
fi fi
fi fi
} }
@@ -1693,15 +1663,15 @@ restore_permissions () {
Set_Ops_permissions="$(jq -r '.[] | select(.permissions != null).permissions | to_entries | map(.value | split(" ")) | map(select(.[1] != "-1")) | map(.[1:]) | flatten | join(" ")' "$app_details")" Set_Ops_permissions="$(jq -r '.[] | select(.permissions != null).permissions | to_entries | map(.value | split(" ")) | map(select(.[1] != "-1")) | map(.[1:]) | flatten | join(" ")' "$app_details")"
[[ $true_permissions != "" ]] && { [[ $true_permissions != "" ]] && {
Set_true_Permissions "$name2" "$true_permissions" &>/dev/null Set_true_Permissions "$name2" "$true_permissions" &>/dev/null
[[ $? != 0 ]] && echo_log "設置允許權限" "恢復" [[ $? != 0 ]] && echo_log "設置允許權限"
} }
[[ $false_permissions != "" ]] && { [[ $false_permissions != "" ]] && {
Set_false_Permissions "$name2" "$false_permissions" &>/dev/null Set_false_Permissions "$name2" "$false_permissions" &>/dev/null
[[ $? != 0 ]] && echo_log "設置拒絕權限" "恢復" [[ $? != 0 ]] && echo_log "設置拒絕權限"
} }
[[ $Set_Ops_permissions != "" ]] && { [[ $Set_Ops_permissions != "" ]] && {
Set_Ops "$name2" "$Set_Ops_permissions" Set_Ops "$name2" "$Set_Ops_permissions"
[[ $? != 0 ]] && echo_log "設置ops權限" "恢復" [[ $? != 0 ]] && echo_log "設置ops權限"
} }
} }
Background_application_list() { Background_application_list() {
@@ -1870,11 +1840,11 @@ backup)
backup_path backup_path
echoRgb "配置詳細:\n -壓縮方式:$Compression_method\n -音量鍵確認:$Lo\n -更新:$update\n -備份模式:$Backup_Mode\n -備份外部數據:$Backup_obb_data\n -備份user數據:$Backup_user_data\n -自定義目錄備份:$backup_media\n -存在進程忽略備份:$Background_apps_ignore" echoRgb "配置詳細:\n -壓縮方式:$Compression_method\n -音量鍵確認:$Lo\n -更新:$update\n -備份模式:$Backup_Mode\n -備份外部數據:$Backup_obb_data\n -備份user數據:$Backup_user_data\n -自定義目錄備份:$backup_media\n -存在進程忽略備份:$Background_apps_ignore"
D="1" D="1"
Apk_info="$(echo "$system\n$(pm list packages -3 --user "$user" | cut -f2 -d ':')" | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)" Apk_info="$(pm list packages -e --user "$user" | cut -f2 -d ':' | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)"
if [[ $Apk_info != "" ]]; then if [[ $Apk_info != "" ]]; then
[[ $Apk_info = *"Failure calling service package"* ]] && Apk_info="$(echo "$system\n$(appinfo -sort-i -o pn -3 2>/dev/null)" | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)" [[ $Apk_info = *"Failure calling service package"* ]] && Apk_info="$(appinfo "user|system" "pkgName" 2>/dev/null | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)"
else else
Apk_info="$(echo "$system\n$(appinfo -sort-i -o pn -3 2>/dev/null)" | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)" Apk_info="$(appinfo "user|system" "pkgName" 2>/dev/null | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)"
fi fi
[[ $Apk_info = "" ]] && echoRgb "Apk_info變量為空" "0" && exit [[ $Apk_info = "" ]] && echoRgb "Apk_info變量為空" "0" && exit
[[ $backup_mode = "" ]] && { [[ $backup_mode = "" ]] && {
@@ -1960,7 +1930,6 @@ backup)
Set_screen_pause_seconds on Set_screen_pause_seconds on
[[ $(egrep -v '#|' "$txt" 2>/dev/null | sed -e '/^$/d' | awk '{print $2}' | grep -w "^${keyboard%/*}$") != ${keyboard%/*} ]] && unset keyboard [[ $(egrep -v '#|' "$txt" 2>/dev/null | sed -e '/^$/d' | awk '{print $2}' | grep -w "^${keyboard%/*}$") != ${keyboard%/*} ]] && unset keyboard
{ {
notification --tag="101" --title="App備份" --text="開始備份app"
starttime1="$(date -u "+%s")" starttime1="$(date -u "+%s")"
TIME="$starttime1" TIME="$starttime1"
while [[ $i -le $r ]]; do while [[ $i -le $r ]]; do
@@ -1981,7 +1950,6 @@ backup)
apk_path2="${apk_path2%/*}" apk_path2="${apk_path2%/*}"
if [[ -d $apk_path2 ]]; then if [[ -d $apk_path2 ]]; then
echoRgb "備份第$i/$r個應用 剩下$((r - i))" "3" echoRgb "備份第$i/$r個應用 剩下$((r - i))" "3"
notification --tag="101" --title="App備份" --text="備份 $name1 \"$name2\""
echoRgb "備份 $name1 \"$name2\"" "2" echoRgb "備份 $name1 \"$name2\"" "2"
unset Backup_folder ChineseName PackageName nobackup No_backupdata result apk_version apk_version2 zsize zmediapath Size data_path Ssaid ssaid Permissions unset Backup_folder ChineseName PackageName nobackup No_backupdata result apk_version apk_version2 zsize zmediapath Size data_path Ssaid ssaid Permissions
nobackup="false" nobackup="false"
@@ -2054,7 +2022,6 @@ backup)
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"
notification --tag="102" --progress="$((i * 100 / r))" --title="App備份" --text="備份第$i/$r個應用 剩下$((r - i))"
rgb_d="$rgb_a" rgb_d="$rgb_a"
rgb_a=188 rgb_a=188
echoRgb "_________________$(endtime 1 "已經")___________________" echoRgb "_________________$(endtime 1 "已經")___________________"
@@ -2068,9 +2035,9 @@ backup)
if [[ $var != "" ]]; then if [[ $var != "" ]]; then
if [[ $var != null ]]; then if [[ $var != null ]]; then
settings put secure enabled_accessibility_services "$var" &>/dev/null settings put secure enabled_accessibility_services "$var" &>/dev/null
echo_log "設置無障礙" "備份" echo_log "設置無障礙"
settings put secure accessibility_enabled 1 &>/dev/null settings put secure accessibility_enabled 1 &>/dev/null
echo_log "打開無障礙開關" "備份" echo_log "打開無障礙開關"
fi fi
fi fi
#設置鍵盤 #設置鍵盤
@@ -2078,20 +2045,18 @@ backup)
ime enable "$keyboard" &>/dev/null ime enable "$keyboard" &>/dev/null
ime set "$keyboard" &>/dev/null ime set "$keyboard" &>/dev/null
settings put secure default_input_method "$keyboard" &>/dev/null settings put secure default_input_method "$keyboard" &>/dev/null
echo_log "設置鍵盤$(appinfo -d "(" -ed ")" -o anwb,pn -pn "${keyboard%/*}" 2>/dev/null)" "備份" echo_log "設置鍵盤$(appinfo2 "${keyboard%/*}" 2>/dev/null)"
fi fi
[[ $update_apk2 = "" ]] && update_apk2="暫無更新" [[ $update_apk2 = "" ]] && update_apk2="暫無更新"
[[ $add_app2 = "" ]] && add_app2="暫無更新" [[ $add_app2 = "" ]] && add_app2="暫無更新"
echoRgb "\n -已更新的apk=\"$osn\"\n -已新增的備份=\"$osk\"\n -apk版本號無變化=\"$osj\"\n -下列為版本號已變更的應用\n$update_apk2\n -新增的備份....\n$add_app2\n -包含SSAID的應用\n$SSAID_apk2" "3" echoRgb "\n -已更新的apk=\"$osn\"\n -已新增的備份=\"$osk\"\n -apk版本號無變化=\"$osj\"\n -下列為版本號已變更的應用\n$update_apk2\n -新增的備份....\n$add_app2\n -包含SSAID的應用\n$SSAID_apk2" "3"
echo "$(sort "$txt2" | sed -e '/^$/d')" >"$txt2" echo "$(sort "$txt2" | sed -e '/^$/d')" >"$txt2"
notification --tag="101" --title="App備份" --text="app備份完成 $(endtime 1 "應用備份" "3")"
[[ -e ${txt%/*}/txt2 ]] && cat "${txt%/*}/txt2">"$txt" && rm -rf "${txt%/*}/txt2" [[ -e ${txt%/*}/txt2 ]] && cat "${txt%/*}/txt2">"$txt" && rm -rf "${txt%/*}/txt2"
if [[ $backup_media = true && $backup_mode = "" ]]; then if [[ $backup_media = true && $backup_mode = "" ]]; then
A=1 A=1
B="$(echo "$Custom_path" | egrep -v '#|' | awk 'NF != 0 { count++ } END { print count }')" B="$(echo "$Custom_path" | egrep -v '#|' | awk 'NF != 0 { count++ } END { print count }')"
if [[ $B != "" ]]; then if [[ $B != "" ]]; then
echoRgb "備份結束,備份多媒體" "1" echoRgb "備份結束,備份多媒體" "1"
notification --tag="102" --title="Media備份" --text="Media備份開始"
starttime1="$(date -u "+%s")" starttime1="$(date -u "+%s")"
Backup_folder="$Backup/Media" Backup_folder="$Backup/Media"
[[ ! -f $Backup/恢復自定義資料夾.sh ]] && touch_shell "Restore3" "$Backup/恢復自定義資料夾.sh" [[ ! -f $Backup/恢復自定義資料夾.sh ]] && touch_shell "Restore3" "$Backup/恢復自定義資料夾.sh"
@@ -2116,7 +2081,6 @@ backup)
fi 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"
notification --tag="102" --progress="$((A * 100 / B))" --title="Media備份" --text="備份第$A/$B個資料夾 剩下$((B - A))"
rgb_d="$rgb_a" rgb_d="$rgb_a"
rgb_a=188 rgb_a=188
echoRgb "_________________$(endtime 1 "已經")___________________" echoRgb "_________________$(endtime 1 "已經")___________________"
@@ -2124,7 +2088,6 @@ backup)
done done
echoRgb "目錄↓↓↓\n -$Backup_folder" echoRgb "目錄↓↓↓\n -$Backup_folder"
endtime 1 "自定義備份" endtime 1 "自定義備份"
notification --tag="102" --title="Media備份" --text="Media備份完成 $(endtime 1 "自定義備份")"
else else
echoRgb "自定義路徑為空 無法備份" "0" echoRgb "自定義路徑為空 無法備份" "0"
fi fi
@@ -2132,31 +2095,10 @@ backup)
fi fi
let i++ en++ nskg++ let i++ en++ nskg++
done done
#打開應用
i=1
am_start="$(echo "$am_start" | xargs | sed 's/ /\n/g')"
if [[ $backup_mode = "" ]]; then
while [[ $i -le $r ]]; do
unset pkg name1
pkg="$(egrep -v '#|' "$txt" 2>/dev/null | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $2}')"
name1="$(egrep -v '#|' "$txt" 2>/dev/null | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $1}')"
if [[ $(echo "$am_start" | egrep -wo "$pkg") = $pkg ]]; then
am start -n "$(appinfo -o sa -pn "$pkg" 2>/dev/null)" &>/dev/null
echo_log "啟動$name1" "備份"
fi
let i++
done
else
if [[ $(echo "$am_start" | egrep -wo "$PackageName") = $PackageName ]]; then
am start -n "$(appinfo -o sa -pn "$PackageName" 2>/dev/null)" &>/dev/null
echo_log "啟動$name1" "備份"
fi
fi
Set_screen_pause_seconds off Set_screen_pause_seconds off
rm -rf "$TMPDIR/scriptTMP" rm -rf "$TMPDIR/scriptTMP"
Calculate_size "$Backup" Calculate_size "$Backup"
echoRgb "批量備份完成" echoRgb "批量備份完成"
[[ $background_execution = 2 ]] && app_process /system/bin io.github.qqlittleice233.magic.Notification -send --importance=3 --tag="105" --title="備份" --text="備份完成 $(endtime 1 "批量備份開始到結束")"
echoRgb "備份結束時間$(date +"%Y-%m-%d %H:%M:%S")" echoRgb "備份結束時間$(date +"%Y-%m-%d %H:%M:%S")"
starttime1="$TIME" starttime1="$TIME"
endtime 1 "批量備份開始到結束" endtime 1 "批量備份開始到結束"
@@ -2193,26 +2135,22 @@ Restore|Restore2)
0) 0)
[[ $recovery_mode != "" ]] && isBoolean "$recovery_mode" "recovery_mode" && recovery_mode="$nsx" || { [[ $recovery_mode != "" ]] && isBoolean "$recovery_mode" "recovery_mode" && recovery_mode="$nsx" || {
echoRgb "選擇應用恢復模式\n -音量上僅恢復未安裝,下全恢復" echoRgb "選擇應用恢復模式\n -音量上僅恢復未安裝,下全恢復"
notification --tag="105" --title="App恢復" --text="選擇應用恢復模式,音量上僅恢復未安裝,下全恢復"
get_version "恢復未安裝" "全恢復" && recovery_mode="$branch" get_version "恢復未安裝" "全恢復" && recovery_mode="$branch"
} }
Get_user="$(echo "$MODDIR" | rev | cut -d '/' -f1 | cut -d '_' -f1 | rev | egrep -o '[0-9]+')" Get_user="$(echo "$MODDIR" | rev | cut -d '/' -f1 | cut -d '_' -f1 | rev | egrep -o '[0-9]+')"
if [[ $Get_user != $user ]]; then if [[ $Get_user != $user ]]; then
echoRgb "檢測當前用戶$user與恢復資料夾用戶:$Get_user不同,音量上繼續恢復,下不恢復並離開腳本" echoRgb "檢測當前用戶$user與恢復資料夾用戶:$Get_user不同,音量上繼續恢復,下不恢復並離開腳本"
notification --tag="105" --title="App恢復" --text="檢測當前用戶$user與恢復資料夾用戶:$Get_user不同\n -音量上繼續恢復,下不恢復並離開腳本"
get_version "恢復安裝" "不恢復安裝" && recovery_mode2="$branch" get_version "恢復安裝" "不恢復安裝" && recovery_mode2="$branch"
fi fi
if [[ -d $Backup_folder2 ]]; then if [[ -d $Backup_folder2 ]]; then
[[ $media_recovery != "" ]] && isBoolean "$media_recovery" "media_recovery" && media_recovery="$nsx" || { [[ $media_recovery != "" ]] && isBoolean "$media_recovery" "media_recovery" && media_recovery="$nsx" || {
echoRgb "是否恢復多媒體數據\n -音量上恢復,音量下不恢復" "2" echoRgb "是否恢復多媒體數據\n -音量上恢復,音量下不恢復" "2"
notification --tag="105" --title="App恢復" --text="是否恢復多媒體數據,音量上恢復,音量下不恢復"
get_version "恢復媒體數據" "跳過恢復媒體數據" && media_recovery="$branch" get_version "恢復媒體數據" "跳過恢復媒體數據" && media_recovery="$branch"
} }
fi fi
if [[ -d $Backup_folder3 && $(find "$Backup_folder3" -maxdepth 1 -name "*.zip*" -type f 2>/dev/null | wc -l) != 0 ]]; then if [[ -d $Backup_folder3 && $(find "$Backup_folder3" -maxdepth 1 -name "*.zip*" -type f 2>/dev/null | wc -l) != 0 ]]; then
[[ $modules_recovery != "" ]] && isBoolean "$modules_recovery" "modules_recovery" && modules_recovery="$nsx" || { [[ $modules_recovery != "" ]] && isBoolean "$modules_recovery" "modules_recovery" && modules_recovery="$nsx" || {
echoRgb "是否刷入Magisk模塊\n -音量上刷入,音量下不刷入" "2" echoRgb "是否刷入Magisk模塊\n -音量上刷入,音量下不刷入" "2"
notification --tag="105" --title="App恢復" --text="是否刷入Magisk模塊音量上刷入音量下不刷入"
get_version "刷入模塊" "跳過刷入模塊" && modules_recovery="$branch" get_version "刷入模塊" "跳過刷入模塊" && modules_recovery="$branch"
} }
fi fi
@@ -2222,19 +2160,15 @@ Restore|Restore2)
} ;; } ;;
1) 1)
echoRgb "選擇應用恢復模式\n -音量上僅恢復未安裝,下全恢復" echoRgb "選擇應用恢復模式\n -音量上僅恢復未安裝,下全恢復"
notification --tag="105" --title="App恢復" --text="選擇應用恢復模式,音量上僅恢復未安裝,下全恢復"
get_version "恢復未安裝" "全恢復" && recovery_mode="$branch" get_version "恢復未安裝" "全恢復" && recovery_mode="$branch"
Get_user="$(echo "$MODDIR" | rev | cut -d '/' -f1 | cut -d '_' -f1 | rev | egrep -o '[0-9]+')" Get_user="$(echo "$MODDIR" | rev | cut -d '/' -f1 | cut -d '_' -f1 | rev | egrep -o '[0-9]+')"
if [[ $Get_user != $user ]]; then if [[ $Get_user != $user ]]; then
echoRgb "檢測當前用戶$user與恢復資料夾用戶:$Get_user不同,音量上繼續恢復,下不恢復並離開腳本" echoRgb "檢測當前用戶$user與恢復資料夾用戶:$Get_user不同,音量上繼續恢復,下不恢復並離開腳本"
notification --tag="105" --title="App恢復" --text="檢測當前用戶$user與恢復資料夾用戶:$Get_user不同\n -音量上繼續恢復,下不恢復並離開腳本"
get_version "恢復安裝" "不恢復安裝" && recovery_mode2="$branch" get_version "恢復安裝" "不恢復安裝" && recovery_mode2="$branch"
fi fi
echoRgb "是否恢復多媒體數據\n -音量上恢復,音量下不恢復" "2" echoRgb "是否恢復多媒體數據\n -音量上恢復,音量下不恢復" "2"
notification --tag="105" --title="App恢復" --text="是否恢復多媒體數據,音量上恢復,音量下不恢復"
get_version "恢復媒體數據" "跳過恢復媒體數據" && media_recovery="$branch" get_version "恢復媒體數據" "跳過恢復媒體數據" && media_recovery="$branch"
echoRgb "是否刷入Magisk模塊\n -音量上刷入,音量下不刷入" "2" echoRgb "是否刷入Magisk模塊\n -音量上刷入,音量下不刷入" "2"
notification --tag="105" --title="App恢復" --text="是否刷入Magisk模塊音量上刷入音量下不刷入"
get_version "刷入模塊" "跳過刷入模塊" && modules_recovery="$branch" get_version "刷入模塊" "跳過刷入模塊" && modules_recovery="$branch"
echoRgb "存在進程忽略恢復\n -音量上忽略,音量下恢復" "2" echoRgb "存在進程忽略恢復\n -音量上忽略,音量下恢復" "2"
get_version "忽略" "恢復" && Background_apps_ignore="$branch" ;; get_version "忽略" "恢復" && Background_apps_ignore="$branch" ;;
@@ -2274,9 +2208,9 @@ Restore|Restore2)
echoRgb "獲取未安裝應用中" echoRgb "獲取未安裝應用中"
Apk_info="$(pm list packages -e --user "$user" | cut -f2 -d ':' | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)" Apk_info="$(pm list packages -e --user "$user" | cut -f2 -d ':' | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)"
if [[ $Apk_info != "" ]]; then if [[ $Apk_info != "" ]]; then
[[ $Apk_info = *"Failure calling service package"* ]] && Apk_info="$(appinfo -sort-i -o pn -a 2>/dev/null | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)" [[ $Apk_info = *"Failure calling service package"* ]] && Apk_info="$(appinfo "user|system" "pkgName" 2>/dev/null | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)"
else else
Apk_info="$(appinfo -sort-i -o pn -a 2>/dev/null | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)" Apk_info="$(appinfo "user|system" "pkgName" 2>/dev/null | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)"
fi fi
[[ $Apk_info = "" ]] && echoRgb "Apk_info變量為空" "0" && exit [[ $Apk_info = "" ]] && echoRgb "Apk_info變量為空" "0" && exit
while read -r ; do while read -r ; do
@@ -2334,7 +2268,6 @@ Restore|Restore2)
Set_screen_pause_seconds on Set_screen_pause_seconds on
en=118 en=118
echo "$script">"$TMPDIR/scriptTMP" echo "$script">"$TMPDIR/scriptTMP"
notification --tag="105" --title="App恢復" --text="開始恢復app"
{ {
while [[ $i -le $r ]]; do while [[ $i -le $r ]]; do
[[ $en -ge 229 ]] && en=118 [[ $en -ge 229 ]] && en=118
@@ -2349,7 +2282,6 @@ Restore|Restore2)
name1="$(egrep -v '#|' "$txt" 2>/dev/null | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $1}')" name1="$(egrep -v '#|' "$txt" 2>/dev/null | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $1}')"
name2="$(egrep -v '#|' "$txt" 2>/dev/null | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $2}')" name2="$(egrep -v '#|' "$txt" 2>/dev/null | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $2}')"
fi fi
notification --tag="105" --title="App恢復" --text="恢復 $name1 \"$name2\""
unset No_backupdata apk_version Permissions unset No_backupdata apk_version Permissions
if [[ $name1 = *! || $name1 = * ]]; then if [[ $name1 = *! || $name1 = * ]]; then
name1="$(echo "$name1" | sed 's/!//g ; s///g')" name1="$(echo "$name1" | sed 's/!//g ; s///g')"
@@ -2408,7 +2340,6 @@ Restore|Restore2)
[[ $No_backupdata = "" ]]&& echoRgb "$name1沒有安裝無法恢復數據" "0" [[ $No_backupdata = "" ]]&& echoRgb "$name1沒有安裝無法恢復數據" "0"
fi fi
endtime 2 "$name1恢復" "2" && echoRgb "完成$((i * 100 / r))%" "3" endtime 2 "$name1恢復" "2" && echoRgb "完成$((i * 100 / r))%" "3"
notification --tag="106" --progress="$((i * 100 / r))" --title="App恢復" --text="恢復第$i/$r個應用 剩下$((r - i))"
rgb_d="$rgb_a" rgb_d="$rgb_a"
rgb_a=188 rgb_a=188
echoRgb "_________________$(endtime 1 "已經")___________________" echoRgb "_________________$(endtime 1 "已經")___________________"
@@ -2420,9 +2351,7 @@ Restore|Restore2)
if [[ $i = $r && $operate != Restore2 ]]; then if [[ $i = $r && $operate != Restore2 ]]; then
endtime 1 "應用恢復" "2" endtime 1 "應用恢復" "2"
echoRgb "\n -下列為已設置SSAID應用\n$SSAID_Package2\n -下列為設置SSAID失敗應用....\n$SSAID_Package3" "3" echoRgb "\n -下列為已設置SSAID應用\n$SSAID_Package2\n -下列為設置SSAID失敗應用....\n$SSAID_Package3" "3"
notification --tag="105" --title="App恢復" --text="app恢復完成 $(endtime 1 "應用恢復" "2")"
if [[ $media_recovery = true ]]; then if [[ $media_recovery = true ]]; then
notification --tag="106" --title="Media恢復" --text="Media恢復開始"
starttime1="$(date -u "+%s")" starttime1="$(date -u "+%s")"
app_details="$Backup_folder2/app_details.json" app_details="$Backup_folder2/app_details.json"
txt="$MODDIR/mediaList.txt" txt="$MODDIR/mediaList.txt"
@@ -2435,34 +2364,28 @@ Restore|Restore2)
starttime2="$(date -u "+%s")" starttime2="$(date -u "+%s")"
echoRgb "恢復第$A/$B個壓縮包 剩下$((B - A))" "3" echoRgb "恢復第$A/$B個壓縮包 剩下$((B - A))" "3"
Release_data "$Backup_folder2/$name1" Release_data "$Backup_folder2/$name1"
notification --tag="106" --progress="$((A * 100 / B))" --title="Media恢復" --text="恢復第$A/$B個壓縮包 剩下$((B - A))"
endtime 2 "$FILE_NAME2恢復" "2" && echoRgb "完成$((A * 100 / B))%" "3" && echoRgb "____________________________________" && let A++ endtime 2 "$FILE_NAME2恢復" "2" && echoRgb "完成$((A * 100 / B))%" "3" && echoRgb "____________________________________" && let A++
done done
endtime 1 "自定義恢復" "2" endtime 1 "自定義恢復" "2"
notification --tag="106" --title="Media恢復" --text="Media恢復完成 $(endtime 1 "Media恢復" "2")"
fi fi
if [[ $modules_recovery = true ]]; then if [[ $modules_recovery = true ]]; then
A=1 A=1
B="$(find "$Backup_folder3" -maxdepth 1 -name "*.zip*" -type f 2>/dev/null | wc -l)" B="$(find "$Backup_folder3" -maxdepth 1 -name "*.zip*" -type f 2>/dev/null | wc -l)"
starttime1="$(date -u "+%s")" starttime1="$(date -u "+%s")"
notification --tag="107" --title="Module恢復" --text="Module恢復開始"
find "$Backup_folder3" -maxdepth 1 -name "*.zip*" -type f 2>/dev/null | while read; do find "$Backup_folder3" -maxdepth 1 -name "*.zip*" -type f 2>/dev/null | while read; do
starttime2="$(date -u "+%s")" starttime2="$(date -u "+%s")"
echoRgb "刷入第$A/$B個模塊 剩下$((B - A))" "3" echoRgb "刷入第$A/$B個模塊 剩下$((B - A))" "3"
echoRgb "刷入${REPLY##*/}" "2" echoRgb "刷入${REPLY##*/}" "2"
magisk --install-module "$REPLY" magisk --install-module "$REPLY"
notification --tag="107" --progress="$((A * 100 / B))" --title="Module恢復" --text="刷入第$A/$B個模塊 剩下$((B - A))"
endtime 2 "${REPLY##*/}刷入" "2" && echoRgb "完成$((A * 100 / B))%" "3" && echoRgb "____________________________________" && let A++ endtime 2 "${REPLY##*/}刷入" "2" && echoRgb "完成$((A * 100 / B))%" "3" && echoRgb "____________________________________" && let A++
done done
endtime 1 "刷入模塊" "2" endtime 1 "刷入模塊" "2"
notification --tag="107" --title="Module恢復" --text="Module恢復完成 $(endtime 1 "Module恢復" "2")"
fi fi
fi fi
let i++ en++ nskg++ let i++ en++ nskg++
done done
Set_screen_pause_seconds off Set_screen_pause_seconds off
starttime1="$TIME" starttime1="$TIME"
[[ $background_execution = 2 ]] && app_process /system/bin io.github.qqlittleice233.magic.Notification -send --importance=3 --tag="105" --title="恢復" --text="恢復完成 $(endtime 1 "$DX開始到結束")"
echoRgb "$DX完成" && endtime 1 "$DX開始到結束" && [[ $SSAID_Package2 != "" ]] && echoRgb "SSAID恢復後必須重啟套用,如發現應用閃退請重新開機" "0" echoRgb "$DX完成" && endtime 1 "$DX開始到結束" && [[ $SSAID_Package2 != "" ]] && echoRgb "SSAID恢復後必須重啟套用,如發現應用閃退請重新開機" "0"
rm -rf "$TMPDIR"/* rm -rf "$TMPDIR"/*
} & } &
@@ -2502,19 +2425,15 @@ Restore3)
[[ $B = "" ]] && echoRgb "mediaList.txt壓縮包名為空或是被注釋了\n -請執行\"重新生成應用列表.sh\"獲取列表再來恢復" "0" && exit 1 [[ $B = "" ]] && echoRgb "mediaList.txt壓縮包名為空或是被注釋了\n -請執行\"重新生成應用列表.sh\"獲取列表再來恢復" "0" && exit 1
echo "$script">"$TMPDIR/scriptTMP" echo "$script">"$TMPDIR/scriptTMP"
{ {
notification --tag="108" --title="Media恢復" --text="Media恢復開始"
while [[ $A -le $B ]]; do while [[ $A -le $B ]]; do
name1="$(egrep -v '#|' "$txt" 2>/dev/null | sed -e '/^$/d' | sed -n "${A}p" | awk '{print $1}')" name1="$(egrep -v '#|' "$txt" 2>/dev/null | sed -e '/^$/d' | sed -n "${A}p" | awk '{print $1}')"
starttime2="$(date -u "+%s")" starttime2="$(date -u "+%s")"
echoRgb "恢復第$A/$B個壓縮包 剩下$((B - A))" "3" echoRgb "恢復第$A/$B個壓縮包 剩下$((B - A))" "3"
Release_data "$mediaDir/$name1" Release_data "$mediaDir/$name1"
notification --tag="108" --progress="$((A * 100 / B))" --title="Media恢復" --text="恢復第$A/$B個壓縮包 剩下$((B - A))"
endtime 2 "$FILE_NAME2恢復" "2" && echoRgb "完成$((A * 100 / B))%" "3" && echoRgb "____________________________________" && let A++ endtime 2 "$FILE_NAME2恢復" "2" && echoRgb "完成$((A * 100 / B))%" "3" && echoRgb "____________________________________" && let A++
done done
Set_screen_pause_seconds off Set_screen_pause_seconds off
endtime 1 "恢復結束" endtime 1 "恢復結束"
[[ $background_execution = 2 ]] && app_process /system/bin io.github.qqlittleice233.magic.Notification -send --importance=3 --tag="105" --title="Media恢復" --text="Media恢復完成 $(endtime 1 "恢復結束")"
notification --tag="108" --title="Media恢復" --text="Media恢復完成 $(endtime 1 "Media恢復")"
rm -rf "$TMPDIR/scriptTMP" rm -rf "$TMPDIR/scriptTMP"
} & } &
;; ;;
@@ -2566,11 +2485,13 @@ Getlist)
rgb_a=118 rgb_a=118
starttime1="$(date -u "+%s")" starttime1="$(date -u "+%s")"
echoRgb "提示! 腳本默認會屏蔽預裝應用 如需備份請添加預裝應用白名單" "0" echoRgb "提示! 腳本默認會屏蔽預裝應用 如需備份請添加預裝應用白名單" "0"
xposed_name="$(appinfo -o pn -xm)" Apk_info="$(appinfo "system|user|xposed" "label|pkgName|flag" | 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)" xposed_name="$(echo "$Apk_info" | awk '$3 == "xposed" {print $2}')"
TARGET_PACKAGES="$(echo "$system" | paste -sd'|' - | sed 's/^|//')"
Pre_installed_apps="$(echo "$Apk_info" | awk -v target="$TARGET_PACKAGES" '$3 == "system" && $0 ~ target {print $1, $2}')"
Apk_info="$(echo "$(echo "$Apk_info" | awk '$3 != "system" {print $1, $2}')\n$Pre_installed_apps")"
[[ $Apk_info = "" ]] && { [[ $Apk_info = "" ]] && {
echoRgb "appinfo輸出失敗,請截圖畫面回報作者" "0" echoRgb "appinfo輸出失敗,請截圖畫面回報作者" "0"
appinfo -sort-i -d " " -o addXpTag:'Xposed: ',anwb,pn -pn $system -3 | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u
exit 2 ; } || Apk_info="$(echo "$Apk_info" | sed 's/Xposed: //g')" && Apk_info2="$(echo "$Apk_info" | awk '{print $2}')" exit 2 ; } || Apk_info="$(echo "$Apk_info" | sed 's/Xposed: //g')" && Apk_info2="$(echo "$Apk_info" | awk '{print $2}')"
Apk_Quantity="$(echo "$Apk_info" | wc -l)" Apk_Quantity="$(echo "$Apk_info" | wc -l)"
LR="1" LR="1"
@@ -2736,7 +2657,6 @@ backup_media)
[[ ! -f $mediatxt ]] && echo "#不需要恢復的資料夾請在開頭使用#注釋 比如:#Download" > "$mediatxt" [[ ! -f $mediatxt ]] && echo "#不需要恢復的資料夾請在開頭使用#注釋 比如:#Download" > "$mediatxt"
echo "$script">"$TMPDIR/scriptTMP" echo "$script">"$TMPDIR/scriptTMP"
Set_screen_pause_seconds on Set_screen_pause_seconds on
notification --tag="109" --title="Media備份" --text="Media備份開始"
{ {
echo "$Custom_path" | sed -e '/^#/d; /^$/d; s/\/$//' | while read; do echo "$Custom_path" | sed -e '/^#/d; /^$/d; s/\/$//' | while read; do
echoRgb "備份第$A/$B個資料夾 剩下$((B - A))" "3" echoRgb "備份第$A/$B個資料夾 剩下$((B - A))" "3"
@@ -2753,7 +2673,6 @@ backup_media)
Backup_data "${REPLY##*/}" "$REPLY" Backup_data "${REPLY##*/}" "$REPLY"
fi fi
endtime 2 "${REPLY##*/}備份" "1" endtime 2 "${REPLY##*/}備份" "1"
notification --tag="109" --progress="$((A * 100 / B))" --title="Media備份" --text="備份第$A/$B個資料夾 剩下$((B - A))"
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
} & } &
@@ -2761,8 +2680,6 @@ backup_media)
Calculate_size "$Backup_folder" Calculate_size "$Backup_folder"
Set_screen_pause_seconds off Set_screen_pause_seconds off
endtime 1 "自定義備份" endtime 1 "自定義備份"
[[ $background_execution = 2 ]] && app_process /system/bin io.github.qqlittleice233.magic.Notification -send --importance=3 --tag="105" --title="Media備份" --text="Media備份完成 $(endtime 1 "自定義備份")"
notification --tag="109" --title="Media備份" --text="Media備份完成 $(endtime 1 "自定義備份")"
rm -rf "$TMPDIR/scriptTMP" rm -rf "$TMPDIR/scriptTMP"
else else
echoRgb "自定義路徑為空 無法備份" "0" echoRgb "自定義路徑為空 無法備份" "0"
@@ -2788,11 +2705,11 @@ Device_List)
OnePlus) Brand_URL="$URL/oneplus.html" ;; OnePlus) Brand_URL="$URL/oneplus.html" ;;
Sony) Brand_URL="$URL/sony_cn.html" ;; Sony) Brand_URL="$URL/sony_cn.html" ;;
esac esac
down -s -L "$Brand_URL" | sed -n 's/.*<code class="language-plaintext highlighter-rouge">\([^<]*\)<\/code>: \(.*\)<\/p>.*/\1\n\2/p' | sed 's/\(.*\)/"\1"/' | sed 'N;s/\n/ /'>>"$tools_path/Device_List" down "$Brand_URL" | sed -n 's/.*<code class="language-plaintext highlighter-rouge">\([^<]*\)<\/code>: \(.*\)<\/p>.*/\1\n\2/p' | sed 's/\(.*\)/"\1"/' | sed 'N;s/\n/ /'>>"$tools_path/Device_List"
done done
if [[ -e $tools_path/Device_List ]]; then if [[ -e $tools_path/Device_List ]]; then
if [[ $(ls -l "$tools_path/Device_List" | awk '{print $5}') -gt 1 ]]; then if [[ $(ls -l "$tools_path/Device_List" | awk '{print $5}') -gt 1 ]]; then
[[ $shell_language = zh-TW ]] && ts -f "$tools_path/Device_List" -o "$tools_path/Device_List" [[ $shell_language = zh-TW ]] && ts <"$tools_path/Device_List">temp && cp temp "$tools_path/Device_List" && rm temp
echoRgb "已下載機型列表在$tools_path/Device_List" echoRgb "已下載機型列表在$tools_path/Device_List"
else else
echoRgb "下載機型失敗" echoRgb "下載機型失敗"

View File

@@ -3,20 +3,13 @@ if [ -f "${0%/*}/tools/tools.sh" ]; then
MODDIR="${0%/*}" MODDIR="${0%/*}"
operate="backup" operate="backup"
conf_path="${0%/*}/backup_settings.conf" conf_path="${0%/*}/backup_settings.conf"
Update_backup=1 Update_backup="1"
[ ! -f "${0%/*}/backup_settings.conf" ] && . "${0%/*}/tools/tools.sh" [ ! -f "${0%/*}/backup_settings.conf" ] && . "${0%/*}/tools/tools.sh"
case $(grep -o 'background_execution=.*' "$conf_path" | awk -F '=' '{print $2}') in case $(grep -o 'background_execution=.*' "$conf_path" | awk -F '=' '{print $2}') in
0) 0)
notification=false
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt" ;; . "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt" ;;
1) 1)
{ {
notification=true
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt"
} & ;;
2)
{
notification=false
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt" . "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt"
} & ;; } & ;;
esac esac

View File

@@ -3,19 +3,13 @@ if [ -f "${0%/*}/tools/tools.sh" ]; then
MODDIR="${0%/*}" MODDIR="${0%/*}"
operate="backup" operate="backup"
conf_path="${0%/*}/backup_settings.conf" conf_path="${0%/*}/backup_settings.conf"
Update_backup=""
[ ! -f "${0%/*}/backup_settings.conf" ] && . "${0%/*}/tools/tools.sh" [ ! -f "${0%/*}/backup_settings.conf" ] && . "${0%/*}/tools/tools.sh"
case $(grep -o 'background_execution=.*' "$conf_path" | awk -F '=' '{print $2}') in case $(grep -o 'background_execution=.*' "$conf_path" | awk -F '=' '{print $2}') in
0) 0)
notification=false
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt" ;; . "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt" ;;
1) 1)
{ {
notification=true
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt"
} & ;;
2)
{
notification=false
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt" . "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt"
} & ;; } & ;;
esac esac

View File

@@ -3,19 +3,13 @@ if [ -f "${0%/*}/tools/tools.sh" ]; then
MODDIR="${0%/*}" MODDIR="${0%/*}"
operate="backup_media" operate="backup_media"
conf_path="${0%/*}/backup_settings.conf" conf_path="${0%/*}/backup_settings.conf"
Update_backup=""
[ ! -f "${0%/*}/backup_settings.conf" ] && . "${0%/*}/tools/tools.sh" [ ! -f "${0%/*}/backup_settings.conf" ] && . "${0%/*}/tools/tools.sh"
case $(grep -o 'background_execution=.*' "$conf_path" | awk -F '=' '{print $2}') in case $(grep -o 'background_execution=.*' "$conf_path" | awk -F '=' '{print $2}') in
0) 0)
notification=false
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt" ;; . "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt" ;;
1) 1)
{ {
notification=true
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt"
} & ;;
2)
{
notification=false
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt" . "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt"
} & ;; } & ;;
esac esac

View File

@@ -3,19 +3,13 @@ if [ -f "${0%/*}/tools/tools.sh" ]; then
MODDIR="${0%/*}" MODDIR="${0%/*}"
operate="Getlist" operate="Getlist"
conf_path="${0%/*}/backup_settings.conf" conf_path="${0%/*}/backup_settings.conf"
Update_backup=""
[ ! -f "${0%/*}/backup_settings.conf" ] && . "${0%/*}/tools/tools.sh" [ ! -f "${0%/*}/backup_settings.conf" ] && . "${0%/*}/tools/tools.sh"
case $(grep -o 'background_execution=.*' "$conf_path" | awk -F '=' '{print $2}') in case $(grep -o 'background_execution=.*' "$conf_path" | awk -F '=' '{print $2}') in
0) 0)
notification=false
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt" ;; . "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt" ;;
1) 1)
{ {
notification=true
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt"
} & ;;
2)
{
notification=false
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt" . "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt"
} & ;; } & ;;
esac esac

View File

@@ -10,4 +10,4 @@ if [ -f "${0%/*}/tools/tools.sh" ]; then
else else
[[ $(echo "${0%/*}" | grep -o 'bin.mt.plus/temp') != "" ]] && echo "你媽沒告訴你腳本要解壓縮嗎?傻逼玩兒" && exit 2 [[ $(echo "${0%/*}" | grep -o 'bin.mt.plus/temp') != "" ]] && echo "你媽沒告訴你腳本要解壓縮嗎?傻逼玩兒" && exit 2
echo "${0%/*}/tools/tools.sh遺失" echo "${0%/*}/tools/tools.sh遺失"
fi fi