bugfix
This commit is contained in:
@@ -3,9 +3,12 @@
|
|||||||
#0關閉音量鍵選擇 (如選項未設置,則強制使用音量鍵選擇)
|
#0關閉音量鍵選擇 (如選項未設置,則強制使用音量鍵選擇)
|
||||||
Lo=0
|
Lo=0
|
||||||
|
|
||||||
|
#後台執行腳本(將無法看到當前壓縮速率,可完全關閉MT使用)
|
||||||
|
background_execution=0
|
||||||
|
|
||||||
#腳本語言設置 留空則自動識別系統語言環境並翻譯
|
#腳本語言設置 留空則自動識別系統語言環境並翻譯
|
||||||
#1簡體中文 0繁體中文
|
#1簡體中文 0繁體中文
|
||||||
Shell_LANG=0
|
Shell_LANG=
|
||||||
|
|
||||||
#自定義備份文件輸出位置 支持相對路徑(留空則默認當前路徑)
|
#自定義備份文件輸出位置 支持相對路徑(留空則默認當前路徑)
|
||||||
Output_path=""
|
Output_path=""
|
||||||
@@ -48,12 +51,12 @@ 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/Music
|
||||||
/storage/emulated/0/DCIM/
|
/storage/emulated/0/DCIM
|
||||||
/data/adb
|
/data/adb
|
||||||
"
|
"
|
||||||
|
|
||||||
#黑名單模式(1完全忽略,不備份 0僅備份安裝包,注意!此選項Backup_Mode=1時黑名單模式才能使用)
|
#黑名單模式(1完全忽略,不備份 0僅備份安裝包,注意!此選項Backup_Mode=1時黑名單模式才能使用)
|
||||||
blacklist_mode=1
|
blacklist_mode=0
|
||||||
|
|
||||||
#備份黑名單(備份策略由「黑名單模式」控制,此處只作為黑名單應用列表)
|
#備份黑名單(備份策略由「黑名單模式」控制,此處只作為黑名單應用列表)
|
||||||
blacklist="
|
blacklist="
|
||||||
|
|||||||
@@ -108,7 +108,7 @@
|
|||||||
"2203121C" "Xiaomi 12S Ultra"
|
"2203121C" "Xiaomi 12S Ultra"
|
||||||
"22071212AG" "Xiaomi 12T 國際版"
|
"22071212AG" "Xiaomi 12T 國際版"
|
||||||
"22081212UG" "Xiaomi 12T Pro 國際版"
|
"22081212UG" "Xiaomi 12T Pro 國際版"
|
||||||
"22200414R" "Xiaomi 12T Pro 日本版 (SIM Free)"
|
"22200414R" "Xiaomi 12T Pro 日本版 (無鎖)"
|
||||||
"A201XM" "Xiaomi 12T Pro 日本版 (SoftBank)"
|
"A201XM" "Xiaomi 12T Pro 日本版 (SoftBank)"
|
||||||
"2211133C" "Xiaomi 13 國行版"
|
"2211133C" "Xiaomi 13 國行版"
|
||||||
"2211133G" "Xiaomi 13 國際版"
|
"2211133G" "Xiaomi 13 國際版"
|
||||||
@@ -118,10 +118,10 @@
|
|||||||
"2304FPN6DG" "Xiaomi 13 Ultra 國際版"
|
"2304FPN6DG" "Xiaomi 13 Ultra 國際版"
|
||||||
"2210129SG" "Xiaomi 13 Lite 國際版"
|
"2210129SG" "Xiaomi 13 Lite 國際版"
|
||||||
"2306EPN60G" "Xiaomi 13T 國際版"
|
"2306EPN60G" "Xiaomi 13T 國際版"
|
||||||
"2306EPN60R" "Xiaomi 13T 日本版 (SIM Free)"
|
"2306EPN60R" "Xiaomi 13T 日本版 (無鎖)"
|
||||||
"XIG04" "Xiaomi 13T 日本版 (KDDI)"
|
"XIG04" "Xiaomi 13T 日本版 (KDDI)"
|
||||||
"23078PND5G" "Xiaomi 13T Pro 國際版"
|
"23078PND5G" "Xiaomi 13T Pro 國際版"
|
||||||
"23088PND5R" "Xiaomi 13T Pro 日本版 (SIM Free)"
|
"23088PND5R" "Xiaomi 13T Pro 日本版 (無鎖)"
|
||||||
"A301XM" "Xiaomi 13T Pro 日本版 (SoftBank)"
|
"A301XM" "Xiaomi 13T Pro 日本版 (SoftBank)"
|
||||||
"23127PN0CC" "Xiaomi 14 國行版"
|
"23127PN0CC" "Xiaomi 14 國行版"
|
||||||
"23127PN0CG" "Xiaomi 14 國際版"
|
"23127PN0CG" "Xiaomi 14 國際版"
|
||||||
@@ -129,6 +129,11 @@
|
|||||||
"2311BPN23C" "Xiaomi 14 Pro 鈦金屬版 (衛星通訊)"
|
"2311BPN23C" "Xiaomi 14 Pro 鈦金屬版 (衛星通訊)"
|
||||||
"24031PN0DC" "Xiaomi 14 Ultra 國行版"
|
"24031PN0DC" "Xiaomi 14 Ultra 國行版"
|
||||||
"24030PN60G" "Xiaomi 14 Ultra 國際版"
|
"24030PN60G" "Xiaomi 14 Ultra 國際版"
|
||||||
|
"2406APNFAG" "Xiaomi 14T 國際版"
|
||||||
|
"XIG06" "Xiaomi 14T 日本版 (KDDI)"
|
||||||
|
"2407FPN8EG" "Xiaomi 14T Pro 國際版"
|
||||||
|
"2407FPN8ER" "Xiaomi 14T Pro 日本版 (無鎖)"
|
||||||
|
"A402XM" "Xiaomi 14T Pro 日本版 (SoftBank)"
|
||||||
"2014616" "小米 Note 雙網通版"
|
"2014616" "小米 Note 雙網通版"
|
||||||
"2014619" "小米 Note 全網通版"
|
"2014619" "小米 Note 全網通版"
|
||||||
"2014618" "小米 Note 移動合約版"
|
"2014618" "小米 Note 移動合約版"
|
||||||
@@ -160,6 +165,7 @@
|
|||||||
"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"
|
||||||
|
"24072PX77C" "Xiaomi MIX Fold 4"
|
||||||
"2016001" "小米 Max 標準版 全網通版"
|
"2016001" "小米 Max 標準版 全網通版"
|
||||||
"2016002" "小米 Max 標準版 國際版"
|
"2016002" "小米 Max 標準版 國際版"
|
||||||
"2016007" "小米 Max 高配版"
|
"2016007" "小米 Max 高配版"
|
||||||
@@ -331,7 +337,7 @@
|
|||||||
"23053RN02Y" "Redmi 12 國際版 (NFC)"
|
"23053RN02Y" "Redmi 12 國際版 (NFC)"
|
||||||
"23077RABDC" "Redmi 12 5G 國行版"
|
"23077RABDC" "Redmi 12 5G 國行版"
|
||||||
"23076RN8DY" "Redmi 12 5G 國際版 (NFC)"
|
"23076RN8DY" "Redmi 12 5G 國際版 (NFC)"
|
||||||
"23076RA4BR" "Redmi 12 5G 日本版 (SIM Free)"
|
"23076RA4BR" "Redmi 12 5G 日本版 (無鎖)"
|
||||||
"XIG03" "Redmi 12 5G 日本版 (KDDI)"
|
"XIG03" "Redmi 12 5G 日本版 (KDDI)"
|
||||||
"A401XM" "Redmi 12 5G 日本版 (SoftBank)"
|
"A401XM" "Redmi 12 5G 日本版 (SoftBank)"
|
||||||
"23076RN4BI" "Redmi 12 5G 印度版"
|
"23076RN4BI" "Redmi 12 5G 印度版"
|
||||||
@@ -341,6 +347,12 @@
|
|||||||
"22120RN86I" "Redmi 12C 印度版"
|
"22120RN86I" "Redmi 12C 印度版"
|
||||||
"2212ARNC4L" "Redmi 12C 拉美版"
|
"2212ARNC4L" "Redmi 12C 拉美版"
|
||||||
"22126RN91Y" "Redmi 12C 國際版 (NFC)"
|
"22126RN91Y" "Redmi 12C 國際版 (NFC)"
|
||||||
|
"2404ARN45A" "Redmi 13 國際版"
|
||||||
|
"2404ARN45I" "Redmi 13 印度版"
|
||||||
|
"24049RN28L" "Redmi 13 拉美版"
|
||||||
|
"24040RN64Y" "Redmi 13 國際版 (NFC)"
|
||||||
|
"2406ERN9CC" "Redmi 13 5G 國行版"
|
||||||
|
"2406ERN9CI" "Redmi 13 5G 印度版"
|
||||||
"23106RN0DA" "Redmi 13C 國際版"
|
"23106RN0DA" "Redmi 13C 國際版"
|
||||||
"2311DRN14I" "Redmi 13C 印度版"
|
"2311DRN14I" "Redmi 13C 印度版"
|
||||||
"23100RN82L" "Redmi 13C 拉美版"
|
"23100RN82L" "Redmi 13C 拉美版"
|
||||||
@@ -435,7 +447,7 @@
|
|||||||
"M2103K19G" "Redmi Note 10 5G 國際版"
|
"M2103K19G" "Redmi Note 10 5G 國際版"
|
||||||
"M2103K19Y" "Redmi Note 10T 國際版"
|
"M2103K19Y" "Redmi Note 10T 國際版"
|
||||||
"XIG02" "Redmi Note 10 JE 日本版 (KDDI)"
|
"XIG02" "Redmi Note 10 JE 日本版 (KDDI)"
|
||||||
"22021119KR" "Redmi Note 10T 日本版 (SIM Free)"
|
"22021119KR" "Redmi Note 10T 日本版 (無鎖)"
|
||||||
"A101XM" "Redmi Note 10T 日本版 (SoftBank)"
|
"A101XM" "Redmi Note 10T 日本版 (SoftBank)"
|
||||||
"M2101K6G" "Redmi Note 10 Pro 國際版"
|
"M2101K6G" "Redmi Note 10 Pro 國際版"
|
||||||
"M2101K6T" "Redmi Note 10 Pro 泰國版"
|
"M2101K6T" "Redmi Note 10 Pro 泰國版"
|
||||||
@@ -505,6 +517,7 @@
|
|||||||
"23090RA98C" "Redmi Note 13 Pro+ 國行版"
|
"23090RA98C" "Redmi Note 13 Pro+ 國行版"
|
||||||
"23090RA98G" "Redmi Note 13 Pro+ 5G 國際版"
|
"23090RA98G" "Redmi Note 13 Pro+ 5G 國際版"
|
||||||
"23090RA98I" "Redmi Note 13 Pro+ 5G 印度版"
|
"23090RA98I" "Redmi Note 13 Pro+ 5G 印度版"
|
||||||
|
"24040RA98R" "Redmi Note 13 Pro+ 5G 日本版"
|
||||||
"2311FRAFDC" "Redmi Note 13R Pro"
|
"2311FRAFDC" "Redmi Note 13R Pro"
|
||||||
"M2004J7AC" "Redmi 10X 5G"
|
"M2004J7AC" "Redmi 10X 5G"
|
||||||
"M2004J7BC" "Redmi 10X Pro 5G"
|
"M2004J7BC" "Redmi 10X Pro 5G"
|
||||||
@@ -542,6 +555,7 @@
|
|||||||
"23113RKC6C" "Redmi K70"
|
"23113RKC6C" "Redmi K70"
|
||||||
"23117RK66C" "Redmi K70 Pro"
|
"23117RK66C" "Redmi K70 Pro"
|
||||||
"2311DRK48C" "Redmi K70E"
|
"2311DRK48C" "Redmi K70E"
|
||||||
|
"2407FRK8EC" "Redmi K70 至尊版"
|
||||||
"2016020" "紅米 Pro 標準版"
|
"2016020" "紅米 Pro 標準版"
|
||||||
"2016021" "紅米 Pro 高配版 / 尊享版"
|
"2016021" "紅米 Pro 高配版 / 尊享版"
|
||||||
"M1803E6E" "紅米 S2 全網通版"
|
"M1803E6E" "紅米 S2 全網通版"
|
||||||
@@ -560,6 +574,7 @@
|
|||||||
"220743FI" "Redmi A1+ 印度版"
|
"220743FI" "Redmi A1+ 印度版"
|
||||||
"23028RN4DG" "Redmi A2 國際版"
|
"23028RN4DG" "Redmi A2 國際版"
|
||||||
"23028RN4DI" "Redmi A2 印度版"
|
"23028RN4DI" "Redmi A2 印度版"
|
||||||
|
"23026RN54G" "Redmi A2 拉美版"
|
||||||
"23028RNCAG" "Redmi A2+ 國際版"
|
"23028RNCAG" "Redmi A2+ 國際版"
|
||||||
"23028RNCAI" "Redmi A2+ 印度版"
|
"23028RNCAI" "Redmi A2+ 印度版"
|
||||||
"23129RN51X" "Redmi A3 國際版"
|
"23129RN51X" "Redmi A3 國際版"
|
||||||
@@ -570,6 +585,10 @@
|
|||||||
"23073RPBFC" "Redmi Pad SE 國行版"
|
"23073RPBFC" "Redmi Pad SE 國行版"
|
||||||
"23073RPBFG" "Redmi Pad SE 國際版"
|
"23073RPBFG" "Redmi Pad SE 國際版"
|
||||||
"23073RPBFL" "Redmi Pad SE 拉美版"
|
"23073RPBFL" "Redmi Pad SE 拉美版"
|
||||||
|
"2405CRPFDC" "Redmi Pad Pro 國行版"
|
||||||
|
"2405CRPFDG" "Redmi Pad Pro 國際版"
|
||||||
|
"24074RPD2C" "Redmi Pad Pro 5G 國行版"
|
||||||
|
"24074RPD2G" "Redmi Pad Pro 5G 國際版"
|
||||||
"M1805E10A" "POCO F1"
|
"M1805E10A" "POCO F1"
|
||||||
"M2004J11G" "POCO F2 Pro 國際版"
|
"M2004J11G" "POCO F2 Pro 國際版"
|
||||||
"M2012K11AG" "POCO F3 國際版"
|
"M2012K11AG" "POCO F3 國際版"
|
||||||
@@ -621,6 +640,8 @@
|
|||||||
"22071219CG" "POCO M5 國際版"
|
"22071219CG" "POCO M5 國際版"
|
||||||
"22071219CI" "POCO M5 印度版"
|
"22071219CI" "POCO M5 印度版"
|
||||||
"2207117BPG" "POCO M5s 國際版"
|
"2207117BPG" "POCO M5s 國際版"
|
||||||
|
"2404APC5FG" "POCO M6 國際版"
|
||||||
|
"2404APC5FI" "POCO M6 印度版"
|
||||||
"23128PC33I" "POCO M6 5G 印度版"
|
"23128PC33I" "POCO M6 5G 印度版"
|
||||||
"2312FPCA6G" "POCO M6 Pro 國際版"
|
"2312FPCA6G" "POCO M6 Pro 國際版"
|
||||||
"23076PC4BI" "POCO M6 Pro 5G 印度版"
|
"23076PC4BI" "POCO M6 Pro 5G 印度版"
|
||||||
@@ -636,6 +657,7 @@
|
|||||||
"2312BPC51H" "POCO C61 印度版"
|
"2312BPC51H" "POCO C61 印度版"
|
||||||
"2310FPCA4G" "POCO C65 國際版"
|
"2310FPCA4G" "POCO C65 國際版"
|
||||||
"2310FPCA4I" "POCO C65 印度版"
|
"2310FPCA4I" "POCO C65 印度版"
|
||||||
|
"2405CPCFBG" "POCO Pad 國際版"
|
||||||
"FYJ01QP" "小米米家翻譯機"
|
"FYJ01QP" "小米米家翻譯機"
|
||||||
"21051191C" "CyberDog 仿生四足機器人"
|
"21051191C" "CyberDog 仿生四足機器人"
|
||||||
"GT-I9000" "Galaxy S 公開版"
|
"GT-I9000" "Galaxy S 公開版"
|
||||||
@@ -794,6 +816,7 @@
|
|||||||
"SM-C7108" "Galaxy C8 4G+"
|
"SM-C7108" "Galaxy C8 4G+"
|
||||||
"SM-C9000" "Galaxy C9 Pro 全網通版"
|
"SM-C9000" "Galaxy C9 Pro 全網通版"
|
||||||
"SM-C9008" "Galaxy C9 Pro 4G+"
|
"SM-C9008" "Galaxy C9 Pro 4G+"
|
||||||
|
"SM-C5560" "Galaxy C55 5G"
|
||||||
"SM-J3109" "Galaxy J3 電信定制版"
|
"SM-J3109" "Galaxy J3 電信定制版"
|
||||||
"SM-J5008" "Galaxy J5 移動定制版"
|
"SM-J5008" "Galaxy J5 移動定制版"
|
||||||
"SM-J7008" "Galaxy J7 移動定制版"
|
"SM-J7008" "Galaxy J7 移動定制版"
|
||||||
@@ -1378,8 +1401,7 @@
|
|||||||
"A063" "Nothing Phone (1)"
|
"A063" "Nothing Phone (1)"
|
||||||
"A065" "Nothing Phone (2) Global"
|
"A065" "Nothing Phone (2) Global"
|
||||||
"AIN065" "Nothing Phone (2) India"
|
"AIN065" "Nothing Phone (2) India"
|
||||||
"A142" "Nothing Phone (2a) Global"
|
"A142" "Nothing Phone (2a)"
|
||||||
"AIN142" "Nothing Phone (2a) India"
|
|
||||||
"NX501" "nubia Z5"
|
"NX501" "nubia Z5"
|
||||||
"NX402" "nubia Z5 mini"
|
"NX402" "nubia Z5 mini"
|
||||||
"NX503J" "nubia Z5S"
|
"NX503J" "nubia Z5S"
|
||||||
|
|||||||
BIN
tools/notification.dex
Normal file
BIN
tools/notification.dex
Normal file
Binary file not shown.
246
tools/tools.sh
246
tools/tools.sh
@@ -14,6 +14,9 @@ update_backup_settings_conf() {
|
|||||||
#0關閉音量鍵選擇 (如選項未設置,則強制使用音量鍵選擇)
|
#0關閉音量鍵選擇 (如選項未設置,則強制使用音量鍵選擇)
|
||||||
Lo="${Lo:-0}"
|
Lo="${Lo:-0}"
|
||||||
|
|
||||||
|
#後台執行腳本(將無法看到當前壓縮速率,可完全關閉MT使用)
|
||||||
|
background_execution=0
|
||||||
|
|
||||||
#腳本語言設置 留空則自動識別系統語言環境並翻譯
|
#腳本語言設置 留空則自動識別系統語言環境並翻譯
|
||||||
#1簡體中文 0繁體中文
|
#1簡體中文 0繁體中文
|
||||||
Shell_LANG="$Shell_LANG"
|
Shell_LANG="$Shell_LANG"
|
||||||
@@ -135,6 +138,9 @@ update_Restore_settings_conf() {
|
|||||||
#0關閉音量鍵選擇(如選項未設置,則強制使用音量鍵選擇)
|
#0關閉音量鍵選擇(如選項未設置,則強制使用音量鍵選擇)
|
||||||
Lo="${Lo:-0}"
|
Lo="${Lo:-0}"
|
||||||
|
|
||||||
|
#後台執行腳本(將無法看到當前壓縮速率,可完全關閉MT使用)
|
||||||
|
background_execution=0
|
||||||
|
|
||||||
#腳本語言設置 為空自動針對當前系統語言環境自動翻譯
|
#腳本語言設置 為空自動針對當前系統語言環境自動翻譯
|
||||||
#1簡體中文 0繁體中文
|
#1簡體中文 0繁體中文
|
||||||
Shell_LANG="$Shell_LANG"
|
Shell_LANG="$Shell_LANG"
|
||||||
@@ -296,7 +302,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"
|
export CLASSPATH="$tools_path/classes.dex:$tools_path/classes2.dex:$tools_path/notification.dex"
|
||||||
zstd_sha256sum="55cc57a3d079dd90e74d972c705c4f9389dd00a7175de148e21000eab01f7ed9"
|
zstd_sha256sum="55cc57a3d079dd90e74d972c705c4f9389dd00a7175de148e21000eab01f7ed9"
|
||||||
tar_sha256sum="3c605b1e9eb8283555225dcad4a3bf1777ae39c5f19a2c8b8943140fd7555814"
|
tar_sha256sum="3c605b1e9eb8283555225dcad4a3bf1777ae39c5f19a2c8b8943140fd7555814"
|
||||||
classesdex_sha256sum="09d0058763157b97d6ea2bf74bd7ec53089a9ddb496f089a159ea0027007bb94"
|
classesdex_sha256sum="09d0058763157b97d6ea2bf74bd7ec53089a9ddb496f089a159ea0027007bb94"
|
||||||
@@ -319,6 +325,12 @@ fi
|
|||||||
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 $@"
|
||||||
alias PayloadDumper="app_process /system/bin --nice-name=payload-dumper han.core.order.payload.PayloadDumper $@"
|
alias PayloadDumper="app_process /system/bin --nice-name=payload-dumper han.core.order.payload.PayloadDumper $@"
|
||||||
|
echo $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 --nice-name=appinfo han.core.order.ChineseConverter -s $@" ;;
|
||||||
@@ -340,7 +352,7 @@ endtime() {
|
|||||||
esac
|
esac
|
||||||
endtime="$(date -u "+%s")"
|
endtime="$(date -u "+%s")"
|
||||||
duration="$(echo $((endtime - starttime)) | awk '{t=split("60 秒 60 分 24 時 999 天",a);for(n=1;n<t;n+=2){if($1==0)break;s=$1%a[n]a[n+1]s;$1=int($1/a[n])}print s}')"
|
duration="$(echo $((endtime - starttime)) | awk '{t=split("60 秒 60 分 24 時 999 天",a);for(n=1;n<t;n+=2){if($1==0)break;s=$1%a[n]a[n+1]s;$1=int($1/a[n])}print s}')"
|
||||||
[[ $duration != "" ]] && echoRgb "$2用時:$duration" || echoRgb "$2用時:0秒"
|
[[ $duration != "" ]] && echo " -$2用時:$duration" || echo " -$2用時:0秒"
|
||||||
}
|
}
|
||||||
nskg=1
|
nskg=1
|
||||||
get_version() {
|
get_version() {
|
||||||
@@ -382,6 +394,7 @@ 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
|
||||||
@@ -455,7 +468,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 -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 -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 -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
|
||||||
@@ -559,7 +572,7 @@ Rename_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翻譯" "SpeedBackup"
|
||||||
mv "$REPLY" "$MODDIR_NAME/$(ts "$FILE_NAME")"
|
mv "$REPLY" "$MODDIR_NAME/$(ts "$FILE_NAME")"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -569,7 +582,7 @@ Rename_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翻譯" "SpeedBackup"
|
||||||
mv "$REPLY" "$MODDIR_NAME/$(ts "$FILE_NAME")"
|
mv "$REPLY" "$MODDIR_NAME/$(ts "$FILE_NAME")"
|
||||||
let HT++
|
let HT++
|
||||||
fi ;;
|
fi ;;
|
||||||
@@ -595,9 +608,41 @@ touch_shell () {
|
|||||||
Restore|convert|dumpname|Restore3|check_file) conf_path='${0%/*}/restore_settings.conf' ;;
|
Restore|convert|dumpname|Restore3|check_file) conf_path='${0%/*}/restore_settings.conf' ;;
|
||||||
esac
|
esac
|
||||||
if [[ $4 != "" ]]; then
|
if [[ $4 != "" ]]; then
|
||||||
[[ $Output_path = "" ]] && echo "if [ -f \"$MODDIR_Path/tools/tools.sh\" ]; then\n MODDIR=\"$MODDIR_Path\"\n operate=\"$1\"\n $4\n conf_path=\"$conf_path\"\n . \"$MODDIR_Path/tools/tools.sh\" | tee \"\${0%/*}/log.txt\"\nelse\n echo \"$MODDIR_Path/tools/tools.sh遺失\"\nfi" >"$2"
|
[[ $Output_path = "" ]] && echo "if [ -f \"$MODDIR_Path/tools/tools.sh\" ]; then
|
||||||
|
MODDIR=\"$MODDIR_Path\"
|
||||||
|
operate=\"$1\"
|
||||||
|
$4
|
||||||
|
conf_path=\"$conf_path\"
|
||||||
|
if [ \"\$(grep -o 'background_execution=.*' \"\$conf_path\" | awk -F '=' '{print \$2}')\" = 1 ]; then
|
||||||
|
{
|
||||||
|
notification=true
|
||||||
|
. \"$MODDIR_Path/tools/tools.sh\" | tee \"\${0%/*}/log.txt\"
|
||||||
|
} &
|
||||||
else
|
else
|
||||||
echo "[ \"\$(echo \"\${0%/*}\" | grep -o 'bin.mt.plus/temp')\" != \"\" ] && echo \"你媽沒告訴你腳本要解壓縮嗎?傻逼玩兒\" && exit 2\nif [ -f \"$MODDIR_Path/tools/tools.sh\" ]; then\n MODDIR=\"\${0%/*}\"\n operate=\"$1\"\n conf_path=\"$conf_path\"\n . \"$MODDIR_Path/tools/tools.sh\" | tee \"\$MODDIR/log.txt\"\nelse\n echo \"$MODDIR_Path/tools/tools.sh遺失\"\nfi" >"$2"
|
notification=false
|
||||||
|
. \"$MODDIR_Path/tools/tools.sh\" | tee \"\${0%/*}/log.txt\"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo \"$MODDIR_Path/tools/tools.sh遺失\"
|
||||||
|
fi" >"$2"
|
||||||
|
else
|
||||||
|
echo "[ \"\$(echo \"\${0%/*}\" | grep -o 'bin.mt.plus/temp')\" != \"\" ] && echo \"你媽沒告訴你腳本要解壓縮嗎?傻逼玩兒\" && exit 2
|
||||||
|
if [ -f \"$MODDIR_Path/tools/tools.sh\" ]; then
|
||||||
|
MODDIR=\"\${0%/*}\"
|
||||||
|
operate=\"$1\"
|
||||||
|
conf_path=\"$conf_path\"
|
||||||
|
if [ \"\$(grep -o 'background_execution=.*' \"\$conf_path\" | awk -F '=' '{print \$2}')\" = 1 ]; then
|
||||||
|
{
|
||||||
|
notification=true
|
||||||
|
. \"$MODDIR_Path/tools/tools.sh\" | tee \"\${0%/*}/log.txt\"
|
||||||
|
} &
|
||||||
|
else
|
||||||
|
notification=false
|
||||||
|
. \"$MODDIR_Path/tools/tools.sh\" | tee \"\${0%/*}/log.txt\"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo \"$MODDIR_Path/tools/tools.sh遺失\"
|
||||||
|
fi" >"$2"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
update_script() {
|
update_script() {
|
||||||
@@ -625,25 +670,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##*/}"
|
echo_log "解壓縮${zipFile##*/}" "SpeedBackup"
|
||||||
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翻譯" "SpeedBackup"
|
||||||
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翻譯" "SpeedBackup"
|
||||||
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 -f "$path_hierarchy/backup_settings.conf" -o "$path_hierarchy/backup_settings.conf"
|
||||||
echo_log "$path_hierarchy/backup_settings.conf"
|
echo_log "$path_hierarchy/backup_settings.conf翻譯" "SpeedBackup"
|
||||||
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 -f "${find_tools_path%/*}/restore_settings.conf" -o "${find_tools_path%/*}/restore_settings.conf"
|
||||||
echo_log "${find_tools_path%/*}/restore_settings.conf翻譯"
|
echo_log "${find_tools_path%/*}/restore_settings.conf翻譯" "SpeedBackup"
|
||||||
fi
|
fi
|
||||||
Rename_script
|
Rename_script
|
||||||
if [[ $Output_path != "" ]]; then
|
if [[ $Output_path != "" ]]; then
|
||||||
@@ -726,22 +771,22 @@ if [[ $path_hierarchy != "" && $Script_target_language != "" ]]; then
|
|||||||
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翻譯" "SpeedBackup"
|
||||||
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 -f "${REPLY%/*/*}/backup_settings.conf" -o "${REPLY%/*/*}/backup_settings.conf"
|
||||||
echo_log "${REPLY%/*/*}/backup_settings.conf翻譯"
|
echo_log "${REPLY%/*/*}/backup_settings.conf翻譯" "SpeedBackup"
|
||||||
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 -f "${REPLY%/*/*}/restore_settings.conf" -o "${REPLY%/*/*}/restore_settings.conf"
|
||||||
echo_log "${REPLY%/*/*}/restore_settings.conf翻譯"
|
echo_log "${REPLY%/*/*}/restore_settings.conf翻譯" "SpeedBackup"
|
||||||
fi
|
fi
|
||||||
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翻譯" "SpeedBackup"
|
||||||
[[ $K = 1 ]] && Rename_script
|
[[ $K = 1 ]] && Rename_script
|
||||||
else
|
else
|
||||||
echoRgb "$REPLY ts進程出現錯誤" "0"
|
echoRgb "$REPLY ts進程出現錯誤" "0"
|
||||||
@@ -969,7 +1014,7 @@ Backup_apk() {
|
|||||||
zstd | Zstd | ZSTD) tar --checkpoint-action="ttyout=%T\r" -cf - *.apk | zstd --ultra -"$Compression_rate" -T0 -q --priority=rt >"$Backup_folder/apk.tar.zst" ;;
|
zstd | Zstd | ZSTD) tar --checkpoint-action="ttyout=%T\r" -cf - *.apk | zstd --ultra -"$Compression_rate" -T0 -q --priority=rt >"$Backup_folder/apk.tar.zst" ;;
|
||||||
esac
|
esac
|
||||||
)
|
)
|
||||||
echo_log "備份$apk_number個Apk"
|
echo_log "備份$apk_number個Apk" "SpeedBackup" "$name1"
|
||||||
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
|
||||||
@@ -1029,36 +1074,36 @@ Backup_data() {
|
|||||||
if [[ -d $data_path ]]; then
|
if [[ -d $data_path ]]; then
|
||||||
unset Filesize m_size k_size get_size ssaid Get_Permissions result
|
unset Filesize m_size k_size get_size ssaid Get_Permissions result
|
||||||
Filesize="$(du -s "$data_path" | awk '{print $1}')"
|
Filesize="$(du -s "$data_path" | awk '{print $1}')"
|
||||||
k_size="$(awk 'BEGIN{printf "%.2f\n", "'$Filesize'"'*1024'/'1024'}')"
|
|
||||||
m_size="$(awk 'BEGIN{printf "%.2f\n", "'$k_size'"/'1024'}')"
|
|
||||||
if [[ $(expr "$m_size" \> 1) -eq 0 ]]; then
|
|
||||||
get_size="$(awk 'BEGIN{printf "%.2f\n", "'$k_size'"/'1024'}')KB"
|
|
||||||
else
|
|
||||||
[[ $(echo "$m_size" | cut -d '.' -f1) -lt 1000 ]] && get_size="${m_size}MB" || get_size="$(awk 'BEGIN{printf "%.2f\n", "'$m_size'"/'1024'}')GB"
|
|
||||||
fi
|
|
||||||
case $1 in
|
|
||||||
user)
|
|
||||||
Ssaid="$(jq -r '.[] | select(.Ssaid != null).Ssaid' "$app_details")"
|
|
||||||
ssaid="$(get_ssaid "$name2")"
|
|
||||||
echoRgb "SSAID:$(get_ssaid "$name2")"
|
|
||||||
if [[ $ssaid != null && $ssaid != $Ssaid ]]; then
|
|
||||||
SSAID_apk="$(echo "$name1 \"$name2\"")"
|
|
||||||
SSAID_apk2="$(echo "$SSAID_apk\n$SSAID_apk2")"
|
|
||||||
jq -c --arg entry "$name1" --arg new_value "$ssaid" '.[$entry].Ssaid |= $new_value' "$app_details" > temp.json && mv temp.json "$app_details"
|
|
||||||
echo_log "備份ssaid"
|
|
||||||
fi
|
|
||||||
[[ $ssaid = null ]] && ssaid=
|
|
||||||
Get_Permissions="$(get_Permissions "$name2")"
|
|
||||||
if [[ $Get_Permissions != "" ]]; then
|
|
||||||
if [[ $Permissions = "" ]]; then
|
|
||||||
echo "Permissions=\"$Get_Permissions\"">"$app_Permissions"
|
|
||||||
echo_log "備份權限"
|
|
||||||
else
|
|
||||||
[[ $Permissions != $Get_Permissions ]] && echo "Permissions=\"$Get_Permissions\"">"$app_Permissions" && echo_log "備份權限"
|
|
||||||
fi
|
|
||||||
fi ;;
|
|
||||||
esac
|
|
||||||
if [[ $Size != $Filesize ]]; then
|
if [[ $Size != $Filesize ]]; then
|
||||||
|
k_size="$(awk 'BEGIN{printf "%.2f\n", "'$Filesize'"'*1024'/'1024'}')"
|
||||||
|
m_size="$(awk 'BEGIN{printf "%.2f\n", "'$k_size'"/'1024'}')"
|
||||||
|
if [[ $(expr "$m_size" \> 1) -eq 0 ]]; then
|
||||||
|
get_size="$(awk 'BEGIN{printf "%.2f\n", "'$k_size'"/'1024'}')KB"
|
||||||
|
else
|
||||||
|
[[ $(echo "$m_size" | cut -d '.' -f1) -lt 1000 ]] && get_size="${m_size}MB" || get_size="$(awk 'BEGIN{printf "%.2f\n", "'$m_size'"/'1024'}')GB"
|
||||||
|
fi
|
||||||
|
if [[ $1 = user ]]; then
|
||||||
|
Ssaid="$(jq -r '.[] | select(.Ssaid != null).Ssaid' "$app_details")"
|
||||||
|
ssaid="$(get_ssaid "$name2")"
|
||||||
|
echoRgb "SSAID:$(get_ssaid "$name2")"
|
||||||
|
if [[ $ssaid != null && $ssaid != $Ssaid ]]; then
|
||||||
|
echoRgb "$Ssaid>$ssaid"
|
||||||
|
SSAID_apk="$(echo "$name1 \"$name2\"")"
|
||||||
|
SSAID_apk2="$(echo "$SSAID_apk\n$SSAID_apk2")"
|
||||||
|
jq -c --arg entry "$name1" --arg new_value "$ssaid" '.[$entry].Ssaid |= $new_value' "$app_details" > temp.json && mv temp.json "$app_details"
|
||||||
|
echo_log "備份ssaid" "備份" "$name1"
|
||||||
|
fi
|
||||||
|
[[ $ssaid = null ]] && ssaid=
|
||||||
|
Get_Permissions="$(get_Permissions "$name2")"
|
||||||
|
if [[ $Get_Permissions != "" ]]; then
|
||||||
|
if [[ $Permissions = "" ]]; then
|
||||||
|
echo "Permissions=\"$Get_Permissions\"">"$app_Permissions"
|
||||||
|
echo_log "備份權限" "備份" "$name1"
|
||||||
|
else
|
||||||
|
[[ $Permissions != $Get_Permissions ]] && echo "Permissions=\"$Get_Permissions\"">"$app_Permissions" && echo_log "備份權限" "備份" "$name1"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
#停止應用
|
#停止應用
|
||||||
case $1 in
|
case $1 in
|
||||||
user|data|obb) kill_app ;;
|
user|data|obb) kill_app ;;
|
||||||
@@ -1079,7 +1124,7 @@ Backup_data() {
|
|||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
echo_log "備份$1數據"
|
echo_log "備份$1數據" "備份" "$name1"
|
||||||
if [[ $result = 0 ]]; then
|
if [[ $result = 0 ]]; then
|
||||||
Validation_file "$Backup_folder/$1.tar"*
|
Validation_file "$Backup_folder/$1.tar"*
|
||||||
if [[ $result = 0 ]]; then
|
if [[ $result = 0 ]]; then
|
||||||
@@ -1098,7 +1143,7 @@ Backup_data() {
|
|||||||
\"PackageName\": \"$name2\",
|
\"PackageName\": \"$name2\",
|
||||||
\"apk_version\": \"$apk_version2\",
|
\"apk_version\": \"$apk_version2\",
|
||||||
\"versionName\": \"$apk_version3\",
|
\"versionName\": \"$apk_version3\",
|
||||||
\"Ssaid\": \"$ssaid\"
|
\"Ssaid\": \"$(jq -r '.[] | select(.Ssaid != null).Ssaid' "$app_details")\"
|
||||||
},
|
},
|
||||||
\"$1\": {
|
\"$1\": {
|
||||||
\"Size\": \"$Filesize\"
|
\"Size\": \"$Filesize\"
|
||||||
@@ -1145,7 +1190,7 @@ Release_data() {
|
|||||||
*)
|
*)
|
||||||
if [[ $A != "" ]]; then
|
if [[ $A != "" ]]; then
|
||||||
if [[ ${MODDIR_NAME##*/} = Media ]]; then
|
if [[ ${MODDIR_NAME##*/} = Media ]]; then
|
||||||
FILE_PATH="$(jq -r --arg entry "${FILE_NAME2}" 'select(.[$entry].path != null).path | .[$entry].path' "$app_details")"
|
FILE_PATH="$(jq -r --arg entry "${FILE_NAME2}" 'select(.[$entry].path != null).[$entry].path' "$app_details")"
|
||||||
if [[ $FILE_PATH = "" ]]; then
|
if [[ $FILE_PATH = "" ]]; then
|
||||||
echoRgb "路徑獲取失敗" "0"
|
echoRgb "路徑獲取失敗" "0"
|
||||||
else
|
else
|
||||||
@@ -1168,7 +1213,7 @@ Release_data() {
|
|||||||
else
|
else
|
||||||
Set_back_1
|
Set_back_1
|
||||||
fi
|
fi
|
||||||
echo_log "解壓縮${FILE_NAME##*.}"
|
echo_log "解壓縮${FILE_NAME##*.}" "恢復" "$name1"
|
||||||
if [[ $result = 0 ]]; then
|
if [[ $result = 0 ]]; then
|
||||||
case $FILE_NAME2 in
|
case $FILE_NAME2 in
|
||||||
user|data|obb)
|
user|data|obb)
|
||||||
@@ -1196,9 +1241,9 @@ Release_data() {
|
|||||||
if [[ $FILE_NAME2 = user ]]; then
|
if [[ $FILE_NAME2 = user ]]; then
|
||||||
echoRgb "路徑:$X"
|
echoRgb "路徑:$X"
|
||||||
chown -hR "$uid" "$X/"
|
chown -hR "$uid" "$X/"
|
||||||
echo_log "設置用戶組:$(ls -ld "$X" | awk '{print $3,$4}'),shell in :$uid"
|
echo_log "設置用戶組:$(ls -ld "$X" | awk '{print $3,$4}'),shell in :$uid" "恢復" "$name1"
|
||||||
chcon -hR "$Selinux_state" "$X/" 2>/dev/null
|
chcon -hR "$Selinux_state" "$X/" 2>/dev/null
|
||||||
echo_log "selinux上下文設置"
|
echo_log "selinux上下文設置" "恢復" "$name1"
|
||||||
elif [[ $FILE_NAME2 = data || $FILE_NAME2 = obb ]]; then
|
elif [[ $FILE_NAME2 = data || $FILE_NAME2 = obb ]]; then
|
||||||
chown -hR "$uid" "$FILE_PATH/$name2/"
|
chown -hR "$uid" "$FILE_PATH/$name2/"
|
||||||
chcon -hR "$Selinux_state" "$FILE_PATH/$name2/" 2>/dev/null
|
chcon -hR "$Selinux_state" "$FILE_PATH/$name2/" 2>/dev/null
|
||||||
@@ -1212,11 +1257,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上下文設置" && echoRgb "警告 thanox配置恢復後務必重啟\n -否則不生效" "0"
|
echo_log "selinux上下文設置" "恢復" "$name1" && 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上下文設置"
|
echo_log "selinux上下文設置" "恢復" "$name1"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
@@ -1240,7 +1285,7 @@ installapk() {
|
|||||||
Set_back_1
|
Set_back_1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
echo_log "${apkfile##*/}解壓縮" && [[ -f $Backup_folder/nmsl.apk ]] && cp -r "$Backup_folder/nmsl.apk" "$TMPDIR"
|
echo_log "${apkfile##*/}解壓縮" "恢復" "$name1" && [[ -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
|
||||||
@@ -1249,7 +1294,7 @@ installapk() {
|
|||||||
1)
|
1)
|
||||||
echoRgb "恢復普通apk" "2"
|
echoRgb "恢復普通apk" "2"
|
||||||
INSTALL "$TMPDIR"/*.apk
|
INSTALL "$TMPDIR"/*.apk
|
||||||
echo_log "Apk安裝"
|
echo_log "Apk安裝" "恢復" "$name1"
|
||||||
;;
|
;;
|
||||||
0)
|
0)
|
||||||
echoRgb "$TMPDIR中沒有apk" "0"
|
echoRgb "$TMPDIR中沒有apk" "0"
|
||||||
@@ -1259,14 +1304,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安裝"
|
echo_log "nmsl.apk安裝" "恢復" "$name1"
|
||||||
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##*/}安裝"
|
echo_log "${REPLY##*/}安裝" "恢復" "$name1"
|
||||||
done
|
done
|
||||||
pm install-commit "$b" &>/dev/null
|
pm install-commit "$b" &>/dev/null
|
||||||
echo_log "split Apk安裝"
|
echo_log "split Apk安裝" "恢復" "$name1"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
@@ -1288,12 +1333,15 @@ disable_verify() {
|
|||||||
get_name(){
|
get_name(){
|
||||||
txt="$MODDIR/appList.txt"
|
txt="$MODDIR/appList.txt"
|
||||||
txt2="$MODDIR/mediaList.txt"
|
txt2="$MODDIR/mediaList.txt"
|
||||||
|
txt3="$MODDIR/temp.txt"
|
||||||
txt="${txt/'/storage/emulated/'/'/data/media/'}"
|
txt="${txt/'/storage/emulated/'/'/data/media/'}"
|
||||||
if [[ $1 = Apkname ]]; then
|
if [[ $1 = Apkname ]]; then
|
||||||
rm -rf "$txt" "$txt2"
|
rm -rf "$txt" "$txt2"
|
||||||
echoRgb "列出全部資料夾內應用名與自定義目錄壓縮包名稱" "3"
|
echoRgb "列出全部資料夾內應用名與自定義目錄壓縮包名稱" "3"
|
||||||
fi
|
fi
|
||||||
rgb_a=118
|
rgb_a=118
|
||||||
|
user="$(echo "${0%}" | sed 's/.*\/Backup_zstd_\([0-9]*\).*/\1/')"
|
||||||
|
[[ ! -f $txt3 ]] && {
|
||||||
find "$MODDIR" -maxdepth 2 -name "apk.*" -type f 2>/dev/null | sort | while read; do
|
find "$MODDIR" -maxdepth 2 -name "apk.*" -type f 2>/dev/null | sort | while read; do
|
||||||
Folder="${REPLY%/*}"
|
Folder="${REPLY%/*}"
|
||||||
[[ $rgb_a -ge 229 ]] && rgb_a=118
|
[[ $rgb_a -ge 229 ]] && rgb_a=118
|
||||||
@@ -1337,7 +1385,7 @@ get_name(){
|
|||||||
Set_back_1
|
Set_back_1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
echo_log "${REPLY##*/}解壓縮"
|
echo_log "${REPLY##*/}解壓縮" "恢復" "$name1"
|
||||||
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="$(appinfo -d " " -o anwb,pn -f "$TMPDIR/base.apk")"
|
||||||
@@ -1353,6 +1401,9 @@ get_name(){
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [[ $PackageName != "" && $ChineseName != "" ]]; then
|
if [[ $PackageName != "" && $ChineseName != "" ]]; then
|
||||||
|
if [[ $(pm list packages --user "$user" "$PackageName" 2>/dev/null | cut -f2 -d ':') = "" ]]; then
|
||||||
|
echo "$ChineseName $PackageName">>"$txt3"
|
||||||
|
fi
|
||||||
case $1 in
|
case $1 in
|
||||||
Apkname)
|
Apkname)
|
||||||
[[ -f $Folder/${PackageName}.sh ]] && rm -rf "$Folder/${PackageName}.sh"
|
[[ -f $Folder/${PackageName}.sh ]] && rm -rf "$Folder/${PackageName}.sh"
|
||||||
@@ -1377,6 +1428,31 @@ get_name(){
|
|||||||
done
|
done
|
||||||
echoRgb "$txt2重新生成" "1"
|
echoRgb "$txt2重新生成" "1"
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
if [[ -f $txt3 ]]; then
|
||||||
|
if [[ $(grep -v "#" "$txt3" 2>/dev/null | sed -e '/^$/d' | sed -n '$=') != "" ]]; then
|
||||||
|
echoRgb "列出需要刪除的應用中....\n -$(cat "$txt3")"
|
||||||
|
echoRgb "確認列表無誤後音量上刪除,音量下退出腳本編輯列表" "2"
|
||||||
|
get_version "刪除" "退出腳本" && Delete_App="$branch"
|
||||||
|
if [[ $Delete_App = true ]]; then
|
||||||
|
i=1
|
||||||
|
r="$(grep -v "#" "$txt3" 2>/dev/null | sed -e '/^$/d' | sed -n '$=')"
|
||||||
|
while [[ $i -le $r ]]; do
|
||||||
|
name1="$(grep -v "#" "$txt3" 2>/dev/null | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $1}')"
|
||||||
|
name2="$(grep -v "#" "$txt3" 2>/dev/null | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $2}')"
|
||||||
|
Backup_folder="$MODDIR/$name1"
|
||||||
|
[[ -d $Backup_folder ]] && rm -rf "$Backup_folder"
|
||||||
|
let i++
|
||||||
|
done
|
||||||
|
rm -rf "$txt3"
|
||||||
|
else
|
||||||
|
rm -rf "$txt3"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
rm -rf "$txt3"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
self_test() {
|
self_test() {
|
||||||
@@ -1393,7 +1469,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")"
|
||||||
@@ -1424,12 +1500,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分鐘"
|
echo_log "設置無操作息屏時間30分鐘" "SpeedBackup"
|
||||||
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"
|
echo_log "設置無操作息屏時間為$Get_dark_screen_seconds" "SpeedBackup"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -1596,8 +1672,6 @@ backup)
|
|||||||
restore_freeze
|
restore_freeze
|
||||||
#開始循環$txt內的資料進行備份
|
#開始循環$txt內的資料進行備份
|
||||||
#記錄開始時間
|
#記錄開始時間
|
||||||
starttime1="$(date -u "+%s")"
|
|
||||||
TIME="$starttime1"
|
|
||||||
en=118
|
en=118
|
||||||
echo "$script">"$TMPDIR/scriptTMP" && echo "$script">"$TMPDIR/scriptTMP"
|
echo "$script">"$TMPDIR/scriptTMP" && echo "$script">"$TMPDIR/scriptTMP"
|
||||||
osn=0; osj=0; osk=0
|
osn=0; osj=0; osk=0
|
||||||
@@ -1608,6 +1682,9 @@ backup)
|
|||||||
Set_screen_pause_seconds on
|
Set_screen_pause_seconds on
|
||||||
[[ $(grep -v "#" "$txt" 2>/dev/null | sed -e '/^$/d' | awk '{print $2}' | grep -w "^${keyboard%/*}$") != ${keyboard%/*} ]] && unset keyboard
|
[[ $(grep -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")"
|
||||||
|
TIME="$starttime1"
|
||||||
while [[ $i -le $r ]]; do
|
while [[ $i -le $r ]]; do
|
||||||
[[ $en -ge 229 ]] && en=118
|
[[ $en -ge 229 ]] && en=118
|
||||||
unset name1 name2 apk_path apk_path2
|
unset name1 name2 apk_path apk_path2
|
||||||
@@ -1626,6 +1703,7 @@ 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 versionName apk_version2 apk_version3 zsize zmediapath Size data_path Ssaid ssaid Permissions
|
unset Backup_folder ChineseName PackageName nobackup No_backupdata result apk_version versionName apk_version2 apk_version3 zsize zmediapath Size data_path Ssaid ssaid Permissions
|
||||||
if [[ $Backup_Mode = true ]]; then
|
if [[ $Backup_Mode = true ]]; then
|
||||||
@@ -1648,7 +1726,6 @@ backup)
|
|||||||
app_details="$Backup_folder/app_details.json"
|
app_details="$Backup_folder/app_details.json"
|
||||||
app_Permissions="$Backup_folder/Permissions"
|
app_Permissions="$Backup_folder/Permissions"
|
||||||
if [[ -f $app_details ]]; then
|
if [[ -f $app_details ]]; then
|
||||||
[[ -f $app_Permissions ]] && . "$app_Permissions"
|
|
||||||
PackageName="$(jq -r '.[] | select(.PackageName != null).PackageName' "$app_details")"
|
PackageName="$(jq -r '.[] | select(.PackageName != null).PackageName' "$app_details")"
|
||||||
if [[ $PackageName != $name2 ]]; then
|
if [[ $PackageName != $name2 ]]; then
|
||||||
unset Backup_folder ChineseName PackageName nobackup No_backupdata result apk_version versionName apk_version2 apk_version3 zsize zmediapath Size data_path Ssaid ssaid Permissions
|
unset Backup_folder ChineseName PackageName nobackup No_backupdata result apk_version versionName apk_version2 apk_version3 zsize zmediapath Size data_path Ssaid ssaid Permissions
|
||||||
@@ -1690,6 +1767,7 @@ 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 "已經")___________________"
|
||||||
@@ -1703,9 +1781,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
|
||||||
#設置鍵盤
|
#設置鍵盤
|
||||||
@@ -1713,17 +1791,19 @@ 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 "設置鍵盤$(appinfo -d "(" -ed ")" -o anwb,pn -pn "${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")"
|
||||||
if [[ $backup_media = true && $backup_mode = "" ]]; then
|
if [[ $backup_media = true && $backup_mode = "" ]]; then
|
||||||
A=1
|
A=1
|
||||||
B="$(echo "$Custom_path" | grep -v "#" | sed -e '/^$/d' | sed -n '$=')"
|
B="$(echo "$Custom_path" | grep -v "#" | sed -e '/^$/d' | sed -n '$=')"
|
||||||
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"
|
||||||
@@ -1748,6 +1828,7 @@ 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 "已經")___________________"
|
||||||
@@ -1755,6 +1836,7 @@ 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
|
||||||
@@ -1772,14 +1854,14 @@ backup)
|
|||||||
name1="$(grep -v "#" "$txt" 2>/dev/null | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $1}')"
|
name1="$(grep -v "#" "$txt" 2>/dev/null | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $1}')"
|
||||||
if [[ $(echo "$am_start" | egrep -wo "$pkg") = $pkg ]]; then
|
if [[ $(echo "$am_start" | egrep -wo "$pkg") = $pkg ]]; then
|
||||||
am start -n "$(appinfo -o sa -pn "$pkg" 2>/dev/null)" &>/dev/null
|
am start -n "$(appinfo -o sa -pn "$pkg" 2>/dev/null)" &>/dev/null
|
||||||
echo_log "啟動$name1"
|
echo_log "啟動$name1" "備份"
|
||||||
fi
|
fi
|
||||||
let i++
|
let i++
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
if [[ $(echo "$am_start" | egrep -wo "$PackageName") = $PackageName ]]; then
|
if [[ $(echo "$am_start" | egrep -wo "$PackageName") = $PackageName ]]; then
|
||||||
am start -n "$(appinfo -o sa -pn "$PackageName" 2>/dev/null)" &>/dev/null
|
am start -n "$(appinfo -o sa -pn "$PackageName" 2>/dev/null)" &>/dev/null
|
||||||
echo_log "啟動$name1"
|
echo_log "啟動$name1" "備份"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
Set_screen_pause_seconds off
|
Set_screen_pause_seconds off
|
||||||
@@ -1821,14 +1903,17 @@ Restore|Restore2)
|
|||||||
#效驗選填是否正確
|
#效驗選填是否正確
|
||||||
isBoolean "$Lo" "Lo" && Lo="$nsx"
|
isBoolean "$Lo" "Lo" && Lo="$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不同\n -音量上繼續恢復,下不恢復並離開腳本"
|
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
|
||||||
echoRgb "是否恢復多媒體數據\n -音量上恢復,音量下不恢復" "2"
|
echoRgb "是否恢復多媒體數據\n -音量上恢復,音量下不恢復" "2"
|
||||||
|
notification --tag="105" --title="App恢復" --text="是否恢復多媒體數據,音量上恢復,音量下不恢復"
|
||||||
get_version "恢復媒體數據" "跳過恢復媒體數據"
|
get_version "恢復媒體數據" "跳過恢復媒體數據"
|
||||||
media_recovery="$branch"
|
media_recovery="$branch"
|
||||||
A=1
|
A=1
|
||||||
@@ -1836,6 +1921,7 @@ Restore|Restore2)
|
|||||||
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
|
||||||
echoRgb "是否刷入Magisk模塊\n -音量上刷入,音量下不刷入" "2"
|
echoRgb "是否刷入Magisk模塊\n -音量上刷入,音量下不刷入" "2"
|
||||||
|
notification --tag="105" --title="App恢復" --text="是否刷入Magisk模塊,音量上刷入,音量下不刷入"
|
||||||
get_version "刷入模塊" "跳過刷入模塊"
|
get_version "刷入模塊" "跳過刷入模塊"
|
||||||
modules_recovery="$branch"
|
modules_recovery="$branch"
|
||||||
fi
|
fi
|
||||||
@@ -1889,6 +1975,7 @@ 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
|
||||||
@@ -1896,6 +1983,7 @@ Restore|Restore2)
|
|||||||
echoRgb "恢復第$i/$r個應用 剩下$((r - i))個" "3"
|
echoRgb "恢復第$i/$r個應用 剩下$((r - i))個" "3"
|
||||||
name1="$(grep -v "#" "$txt" 2>/dev/null | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $1}')"
|
name1="$(grep -v "#" "$txt" 2>/dev/null | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $1}')"
|
||||||
name2="$(grep -v "#" "$txt" 2>/dev/null | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $2}')"
|
name2="$(grep -v "#" "$txt" 2>/dev/null | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $2}')"
|
||||||
|
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')"
|
||||||
@@ -1951,6 +2039,7 @@ 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 "已經")___________________"
|
||||||
@@ -1961,7 +2050,9 @@ 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"
|
||||||
@@ -1974,22 +2065,27 @@ 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++
|
||||||
@@ -2032,15 +2128,18 @@ 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="$(grep -v "#" "$txt" 2>/dev/null | sed -e '/^$/d' | sed -n "${A}p" | awk '{print $1}')"
|
name1="$(grep -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 "恢復結束"
|
||||||
|
notification --tag="108" --title="Media恢復" --text="Media恢復完成 $(endtime 1 "Media恢復")"
|
||||||
rm -rf "$TMPDIR/scriptTMP"
|
rm -rf "$TMPDIR/scriptTMP"
|
||||||
} &
|
} &
|
||||||
;;
|
;;
|
||||||
@@ -2206,6 +2305,7 @@ 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" | 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"
|
||||||
@@ -2222,6 +2322,7 @@ 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
|
||||||
} &
|
} &
|
||||||
@@ -2229,6 +2330,7 @@ backup_media)
|
|||||||
Calculate_size "$Backup_folder"
|
Calculate_size "$Backup_folder"
|
||||||
Set_screen_pause_seconds off
|
Set_screen_pause_seconds off
|
||||||
endtime 1 "自定義備份"
|
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"
|
||||||
|
|||||||
10
備份應用.sh
10
備份應用.sh
@@ -3,7 +3,15 @@ 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"
|
||||||
. "${0%/*}/tools/tools.sh" | tee "$MODDIR/log.txt"
|
if [ "$(grep -o 'background_execution=.*' "$conf_path" | awk -F '=' '{print $2}')" = 1 ]; then
|
||||||
|
{
|
||||||
|
notification=true
|
||||||
|
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt"
|
||||||
|
} &
|
||||||
|
else
|
||||||
|
notification=false
|
||||||
|
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
echo "${0%/*}/tools/tools.sh遺失"
|
echo "${0%/*}/tools/tools.sh遺失"
|
||||||
fi
|
fi
|
||||||
|
|||||||
10
備份自定義資料夾.sh
10
備份自定義資料夾.sh
@@ -3,7 +3,15 @@ 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"
|
||||||
. "${0%/*}/tools/tools.sh" | tee "$MODDIR/log.txt"
|
if [ "$(grep -o 'background_execution=.*' "$conf_path" | awk -F '=' '{print $2}')" = 1 ]; then
|
||||||
|
{
|
||||||
|
notification=true
|
||||||
|
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt"
|
||||||
|
} &
|
||||||
|
else
|
||||||
|
notification=false
|
||||||
|
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
echo "${0%/*}/tools/tools.sh遺失"
|
echo "${0%/*}/tools/tools.sh遺失"
|
||||||
fi
|
fi
|
||||||
|
|||||||
10
生成應用列表.sh
10
生成應用列表.sh
@@ -3,7 +3,15 @@ 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"
|
||||||
. "${0%/*}/tools/tools.sh" | tee "$MODDIR/log.txt"
|
if [ "$(grep -o 'background_execution=.*' "$conf_path" | awk -F '=' '{print $2}')" = 1 ]; then
|
||||||
|
{
|
||||||
|
notification=true
|
||||||
|
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt"
|
||||||
|
} &
|
||||||
|
else
|
||||||
|
notification=false
|
||||||
|
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
echo "${0%/*}/tools/tools.sh遺失"
|
echo "${0%/*}/tools/tools.sh遺失"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user