bugfix
This commit is contained in:
@@ -2387,6 +2387,8 @@
|
|||||||
"PJF110" "OnePlus Ace 3V 國行版"
|
"PJF110" "OnePlus Ace 3V 國行版"
|
||||||
"PJX110" "OnePlus Ace 3 Pro 國行版"
|
"PJX110" "OnePlus Ace 3 Pro 國行版"
|
||||||
"PJZ110" "OnePlus 13 國行版"
|
"PJZ110" "OnePlus 13 國行版"
|
||||||
|
"PKG110" "OnePlus Ace 5 國行版"
|
||||||
|
"PKR110" "OnePlus Ace 5 Pro 國行版"
|
||||||
"AC2001" "OnePlus Nord 印度版"
|
"AC2001" "OnePlus Nord 印度版"
|
||||||
"AC2003" "OnePlus Nord 歐洲版 / 國際版"
|
"AC2003" "OnePlus Nord 歐洲版 / 國際版"
|
||||||
"DN2101" "OnePlus Nord 2 印度版"
|
"DN2101" "OnePlus Nord 2 印度版"
|
||||||
@@ -2424,9 +2426,10 @@
|
|||||||
"DE2118" "OnePlus Nord N200 T-Mobile 版"
|
"DE2118" "OnePlus Nord N200 T-Mobile 版"
|
||||||
"CPH2389" "OnePlus Nord N300"
|
"CPH2389" "OnePlus Nord N300"
|
||||||
"CPH2551" "OnePlus Open"
|
"CPH2551" "OnePlus Open"
|
||||||
"OPD2203" "OnePlus Pad"
|
"OPD2203" "OnePlus Pad (國際)"
|
||||||
"OPD2304" "OnePlus Pad Go LTE"
|
"OPD2304" "OnePlus Pad Go LTE"
|
||||||
"OPD2305" "OnePlus Pad Go Wi-Fi"
|
"OPD2305" "OnePlus Pad Go Wi-Fi"
|
||||||
|
"OPD2407" "OnePlus Pad (國行)"
|
||||||
"OPD2404" "OnePlus Pad Pro"
|
"OPD2404" "OnePlus Pad Pro"
|
||||||
"OPD2403" "OnePlus Pad 2"
|
"OPD2403" "OnePlus Pad 2"
|
||||||
"W101IN" "OnePlus Band 印度版"
|
"W101IN" "OnePlus Band 印度版"
|
||||||
@@ -2603,6 +2606,7 @@
|
|||||||
"RMX5000" "realme 13+ 5G"
|
"RMX5000" "realme 13+ 5G"
|
||||||
"RMX3990" "realme 13 Pro 5G"
|
"RMX3990" "realme 13 Pro 5G"
|
||||||
"RMX3921" "realme 13 Pro+ 5G"
|
"RMX3921" "realme 13 Pro+ 5G"
|
||||||
|
"RMX3940" "realme 14x 5G"
|
||||||
"RMX1921" "realme XT Global"
|
"RMX1921" "realme XT Global"
|
||||||
"RMX1922" "realme XT India"
|
"RMX1922" "realme XT India"
|
||||||
"RMX1992" "realme X2 India"
|
"RMX1992" "realme X2 India"
|
||||||
@@ -2853,7 +2857,7 @@
|
|||||||
"V2343A" "vivo Y200 5G"
|
"V2343A" "vivo Y200 5G"
|
||||||
"V2361GA" "vivo Y200 GT 5G"
|
"V2361GA" "vivo Y200 GT 5G"
|
||||||
"V2353DA" "vivo Y200t 5G"
|
"V2353DA" "vivo Y200t 5G"
|
||||||
"V2435A" "vivo Y300"
|
"V2435A" "vivo Y300 5G"
|
||||||
"V2410A" "vivo Y300 Pro 5G"
|
"V2410A" "vivo Y300 Pro 5G"
|
||||||
"V2115A" "vivo T1"
|
"V2115A" "vivo T1"
|
||||||
"V2188A" "vivo T2x"
|
"V2188A" "vivo T2x"
|
||||||
@@ -2934,6 +2938,7 @@
|
|||||||
"V2312A" "iQOO Z8x"
|
"V2312A" "iQOO Z8x"
|
||||||
"V2361A" "iQOO Z9"
|
"V2361A" "iQOO Z9"
|
||||||
"V2352A" "iQOO Z9 Turbo"
|
"V2352A" "iQOO Z9 Turbo"
|
||||||
|
"V2352GA" "iQOO Z9 Turbo 長續航版"
|
||||||
"V2417A" "iQOO Z9 Turbo+"
|
"V2417A" "iQOO Z9 Turbo+"
|
||||||
"V2353A" "iQOO Z9x"
|
"V2353A" "iQOO Z9x"
|
||||||
"V2023A" "iQOO U1"
|
"V2023A" "iQOO U1"
|
||||||
@@ -3284,6 +3289,7 @@
|
|||||||
"PKD130" "OPPO A3x"
|
"PKD130" "OPPO A3x"
|
||||||
"PKL110" "OPPO A3i"
|
"PKL110" "OPPO A3i"
|
||||||
"PJY110" "OPPO A3 Pro"
|
"PJY110" "OPPO A3 Pro"
|
||||||
|
"PKP110" "OPPO A5 Pro"
|
||||||
"PBCM30" "OPPO K1"
|
"PBCM30" "OPPO K1"
|
||||||
"PCGM00" "OPPO K3 全網通版"
|
"PCGM00" "OPPO K3 全網通版"
|
||||||
"PCGT00" "OPPO K3 移動版"
|
"PCGT00" "OPPO K3 移動版"
|
||||||
|
|||||||
276
tools/tools.sh
276
tools/tools.sh
@@ -9,7 +9,7 @@ MODDIR="$MODDIR"
|
|||||||
MODDIR_NAME="${MODDIR##*/}"
|
MODDIR_NAME="${MODDIR##*/}"
|
||||||
tools_path="$MODDIR/tools"
|
tools_path="$MODDIR/tools"
|
||||||
script="${0##*/}"
|
script="${0##*/}"
|
||||||
backup_version="202412011445"
|
backup_version="202412282251"
|
||||||
[[ $SHELL = *mt* ]] && echo "請勿使用MT管理器拓展包環境執行,請更換系統環境" && exit 2
|
[[ $SHELL = *mt* ]] && echo "請勿使用MT管理器拓展包環境執行,請更換系統環境" && exit 2
|
||||||
update_backup_settings_conf() {
|
update_backup_settings_conf() {
|
||||||
echo "#0關閉音量鍵選擇 (如選項未設置,則強制使用音量鍵選擇)
|
echo "#0關閉音量鍵選擇 (如選項未設置,則強制使用音量鍵選擇)
|
||||||
@@ -756,10 +756,7 @@ update_script() {
|
|||||||
esac
|
esac
|
||||||
echoRgb "從$zipFile更新"
|
echoRgb "從$zipFile更新"
|
||||||
if [[ -d $path_hierarchy/tools ]]; then
|
if [[ -d $path_hierarchy/tools ]]; then
|
||||||
cp -r "$path_hierarchy/tools" "$TMPDIR"
|
mv "$path_hierarchy/tools" "$TMPDIR"
|
||||||
mv "$zipFile" "$path_hierarchy"
|
|
||||||
zipFile="$path_hierarchy/${zipFile##*/}"
|
|
||||||
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##*/}"
|
||||||
if [[ $result = 0 ]]; then
|
if [[ $result = 0 ]]; then
|
||||||
@@ -794,7 +791,7 @@ update_script() {
|
|||||||
echoRgb "$update_path/tools已經更新完成"
|
echoRgb "$update_path/tools已經更新完成"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
cp -r "$TMPDIR/tools" "$MODDIR"
|
mv "$TMPDIR/tools" "$MODDIR"
|
||||||
fi
|
fi
|
||||||
rm -rf "$TMPDIR"/* "$zipFile" "$MODDIR/tools.sh"
|
rm -rf "$TMPDIR"/* "$zipFile" "$MODDIR/tools.sh"
|
||||||
echoRgb "更新完成 請重新執行腳本" "2"
|
echoRgb "更新完成 請重新執行腳本" "2"
|
||||||
@@ -1033,10 +1030,11 @@ size() {
|
|||||||
}
|
}
|
||||||
#分區佔用信息
|
#分區佔用信息
|
||||||
partition_info() {
|
partition_info() {
|
||||||
|
unset Skip
|
||||||
Occupation_status="$(df -B1 "${1%/*}" | sed -n 's|% /.*|%|p' | awk '{print $(NF-1)}')"
|
Occupation_status="$(df -B1 "${1%/*}" | sed -n 's|% /.*|%|p' | awk '{print $(NF-1)}')"
|
||||||
Filesize2="$(size "$Filesize")"
|
Filesize2="$(size "$Filesize")"
|
||||||
echo " -$2大小:$Filesize2 剩餘大小:$(size "$Occupation_status")"
|
echo " -$2大小:$Filesize2 剩餘大小:$(size "$Occupation_status")"
|
||||||
[[ $Filesize != "" ]] && [[ $(echo "$Filesize > $Occupation_status" | bc) -eq 1 ]] && echoRgb "$2備份大小將超出rom可用大小" "0" && exit 2
|
[[ $Filesize != "" ]] && [[ $(echo "$Filesize > $Occupation_status" | bc) -eq 1 ]] && echoRgb "$2備份大小將超出rom可用大小" "0" && Skip=1
|
||||||
Occupation_status="$(df -h "${Backup%/*}" | sed -n 's|% /.*|%|p' | awk '{print $(NF-1),$(NF)}')"
|
Occupation_status="$(df -h "${Backup%/*}" | sed -n 's|% /.*|%|p' | awk '{print $(NF-1),$(NF)}')"
|
||||||
}
|
}
|
||||||
kill_app() {
|
kill_app() {
|
||||||
@@ -1080,53 +1078,55 @@ Backup_apk() {
|
|||||||
Filesize="$(find "$apk_path2" -type f -printf "%s\n" | awk '{s+=$1} END {print s}')"
|
Filesize="$(find "$apk_path2" -type f -printf "%s\n" | awk '{s+=$1} END {print s}')"
|
||||||
rm -rf "$Backup_folder/apk.tar"*
|
rm -rf "$Backup_folder/apk.tar"*
|
||||||
partition_info "$Backup" "$name1 apk"
|
partition_info "$Backup" "$name1 apk"
|
||||||
#備份apk
|
if [[ $Skip != 1 ]]; then
|
||||||
echoRgb "$1"
|
#備份apk
|
||||||
echo "$apk_path" | sed -e '/^$/d' | while read; do
|
echoRgb "$1"
|
||||||
echoRgb "${REPLY##*/} $(size "$REPLY")"
|
echo "$apk_path" | sed -e '/^$/d' | while read; do
|
||||||
done
|
echoRgb "${REPLY##*/} $(size "$REPLY")"
|
||||||
(
|
done
|
||||||
cd "$apk_path2"
|
(
|
||||||
case $Compression_method in
|
cd "$apk_path2"
|
||||||
tar | TAR | Tar) tar --checkpoint-action="ttyout=%T\r" -cf "$Backup_folder/apk.tar" *.apk ;;
|
case $Compression_method in
|
||||||
zstd | Zstd | ZSTD) tar --checkpoint-action="ttyout=%T\r" -cf - *.apk | zstd --ultra -3 -T0 -q --priority=rt >"$Backup_folder/apk.tar.zst" ;;
|
tar | TAR | Tar) tar --checkpoint-action="ttyout=%T\r" -cf "$Backup_folder/apk.tar" *.apk ;;
|
||||||
esac
|
zstd | Zstd | ZSTD) tar --checkpoint-action="ttyout=%T\r" -cf - *.apk | zstd --ultra -3 -T0 -q --priority=rt >"$Backup_folder/apk.tar.zst" ;;
|
||||||
)
|
esac
|
||||||
echo_log "備份$apk_number個Apk"
|
)
|
||||||
if [[ $result = 0 ]]; then
|
echo_log "備份$apk_number個Apk"
|
||||||
Validation_file "$Backup_folder/apk.tar"*
|
if [[ $result = 0 ]]; then
|
||||||
if [[ $result = 0 ]]; then
|
Validation_file "$Backup_folder/apk.tar"*
|
||||||
[[ $(sed -e '/^$/d' "$txt2" 2>/dev/null | awk '{print $2}' | grep -w "^${name2}$" | head -1) = "" ]] && echo "${Backup_folder##*/} $name2" >>"$txt2"
|
if [[ $result = 0 ]]; then
|
||||||
[[ $apk_version != "" ]] && {
|
[[ $(sed -e '/^$/d' "$txt2" 2>/dev/null | awk '{print $2}' | grep -w "^${name2}$" | head -1) = "" ]] && echo "${Backup_folder##*/} $name2" >>"$txt2"
|
||||||
echoRgb "覆蓋app_details"
|
[[ $apk_version != "" ]] && {
|
||||||
jq --arg apk_version "$apk_version2" --arg software "$name1" '.[$software].apk_version = $apk_version' "$app_details" > temp.json && cp temp.json "$app_details" && rm -rf temp.json
|
echoRgb "覆蓋app_details"
|
||||||
} || {
|
jq --arg apk_version "$apk_version2" --arg software "$name1" '.[$software].apk_version = $apk_version' "$app_details" > temp.json && cp temp.json "$app_details" && rm -rf temp.json
|
||||||
echoRgb "新增app_details"
|
} || {
|
||||||
extra_content="{
|
echoRgb "新增app_details"
|
||||||
\"$name1\": {
|
extra_content="{
|
||||||
\"PackageName\": \"$name2\",
|
\"$name1\": {
|
||||||
\"apk_version\": \"$apk_version2\"
|
\"PackageName\": \"$name2\",
|
||||||
}
|
\"apk_version\": \"$apk_version2\"
|
||||||
}"
|
}
|
||||||
jq --argjson new_content "$extra_content" '. += $new_content' "$app_details" > temp.json && cp temp.json "$app_details" && rm -rf temp.json
|
}"
|
||||||
}
|
jq --argjson new_content "$extra_content" '. += $new_content' "$app_details" > temp.json && cp temp.json "$app_details" && rm -rf temp.json
|
||||||
else
|
}
|
||||||
rm -rf "$Backup_folder"
|
else
|
||||||
fi
|
rm -rf "$Backup_folder"
|
||||||
if [[ $name2 = com.android.chrome ]]; then
|
fi
|
||||||
#刪除所有舊apk ,保留一個最新apk進行備份
|
if [[ $name2 = com.android.chrome ]]; then
|
||||||
ReservedNum=1
|
#刪除所有舊apk ,保留一個最新apk進行備份
|
||||||
FileNum="$(ls /data/app/*/com.google.android.trichromelibrary_*/base.apk 2>/dev/null | wc -l)"
|
ReservedNum=1
|
||||||
while [[ $FileNum -gt $ReservedNum ]]; do
|
FileNum="$(ls /data/app/*/com.google.android.trichromelibrary_*/base.apk 2>/dev/null | wc -l)"
|
||||||
OldFile="$(ls -rt /data/app/*/com.google.android.trichromelibrary_*/base.apk 2>/dev/null | head -1)"
|
while [[ $FileNum -gt $ReservedNum ]]; do
|
||||||
rm -rf "${OldFile%/*/*}" && echoRgb "刪除文件:${OldFile%/*/*}"
|
OldFile="$(ls -rt /data/app/*/com.google.android.trichromelibrary_*/base.apk 2>/dev/null | head -1)"
|
||||||
let "FileNum--"
|
rm -rf "${OldFile%/*/*}" && echoRgb "刪除文件:${OldFile%/*/*}"
|
||||||
done
|
let "FileNum--"
|
||||||
[[ -f $(ls /data/app/*/com.google.android.trichromelibrary_*/base.apk 2>/dev/null) && $(ls /data/app/*/com.google.android.trichromelibrary_*/base.apk 2>/dev/null | wc -l) = 1 ]] && cp -r "$(ls /data/app/*/com.google.android.trichromelibrary_*/base.apk 2>/dev/null)" "$Backup_folder/nmsl.apk"
|
done
|
||||||
fi
|
[[ -f $(ls /data/app/*/com.google.android.trichromelibrary_*/base.apk 2>/dev/null) && $(ls /data/app/*/com.google.android.trichromelibrary_*/base.apk 2>/dev/null | wc -l) = 1 ]] && cp -r "$(ls /data/app/*/com.google.android.trichromelibrary_*/base.apk 2>/dev/null)" "$Backup_folder/nmsl.apk"
|
||||||
else
|
fi
|
||||||
rm -rf "$Backup_folder"
|
else
|
||||||
fi
|
rm -rf "$Backup_folder"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
let osj++
|
let osj++
|
||||||
rm -rf "$Backup_folder"
|
rm -rf "$Backup_folder"
|
||||||
@@ -1195,71 +1195,73 @@ Backup_data() {
|
|||||||
esac
|
esac
|
||||||
rm -rf "$Backup_folder/$1.tar"*
|
rm -rf "$Backup_folder/$1.tar"*
|
||||||
partition_info "$Backup" "$1"
|
partition_info "$Backup" "$1"
|
||||||
echoRgb "備份$1數據"
|
if [[ $Skip != 1 ]]; then
|
||||||
# 判斷是否超過指定大小
|
echoRgb "備份$1數據"
|
||||||
if [[ $Filesize2 != *"bytes"* ]]; then
|
# 判斷是否超過指定大小
|
||||||
if [[ $Filesize2 = *"KB"* ]]; then
|
if [[ $Filesize2 != *"bytes"* ]]; then
|
||||||
if [[ $(echo "${Filesize2% KB}" | bc) > 1 ]]; then
|
if [[ $Filesize2 = *"KB"* ]]; then
|
||||||
Start_backup="true"
|
if [[ $(echo "${Filesize2% KB}" | bc) > 1 ]]; then
|
||||||
|
Start_backup="true"
|
||||||
|
else
|
||||||
|
Start_backup="false"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
Start_backup="false"
|
Start_backup="true"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
Start_backup="true"
|
Start_backup="false"
|
||||||
fi
|
fi
|
||||||
else
|
[[ $Start_backup = true ]] && {
|
||||||
Start_backup="false"
|
case $1 in
|
||||||
fi
|
user|user_de)
|
||||||
[[ $Start_backup = true ]] && {
|
case $Compression_method in
|
||||||
case $1 in
|
tar | Tar | TAR) tar --checkpoint-action="ttyout=%T\r" --exclude="${data_path##*/}/.ota" --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/lib" --exclude="${data_path##*/}/code_cache" --exclude="${data_path##*/}/no_backup" --warning=no-file-changed -cpf "$Backup_folder/$1.tar" -C "${data_path%/*}" "${data_path##*/}" 2>/dev/null ;;
|
||||||
user|user_de)
|
zstd | Zstd | ZSTD) tar --checkpoint-action="ttyout=%T\r" --exclude="${data_path##*/}/.ota" --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/lib" --exclude="${data_path##*/}/code_cache" --exclude="${data_path##*/}/no_backup" --warning=no-file-changed -cpf - -C "${data_path%/*}" "${data_path##*/}" | zstd --ultra -3 -T0 -q --priority=rt >"$Backup_folder/$1.tar.zst" 2>/dev/null ;;
|
||||||
case $Compression_method in
|
esac
|
||||||
tar | Tar | TAR) tar --checkpoint-action="ttyout=%T\r" --exclude="${data_path##*/}/.ota" --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/lib" --exclude="${data_path##*/}/code_cache" --exclude="${data_path##*/}/no_backup" --warning=no-file-changed -cpf "$Backup_folder/$1.tar" -C "${data_path%/*}" "${data_path##*/}" 2>/dev/null ;;
|
;;
|
||||||
zstd | Zstd | ZSTD) tar --checkpoint-action="ttyout=%T\r" --exclude="${data_path##*/}/.ota" --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/lib" --exclude="${data_path##*/}/code_cache" --exclude="${data_path##*/}/no_backup" --warning=no-file-changed -cpf - -C "${data_path%/*}" "${data_path##*/}" | zstd --ultra -3 -T0 -q --priority=rt >"$Backup_folder/$1.tar.zst" 2>/dev/null ;;
|
*)
|
||||||
esac
|
case $Compression_method in
|
||||||
;;
|
tar | Tar | TAR) tar --checkpoint-action="ttyout=%T\r" --exclude="Backup_"* --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/QQ" --exclude="${data_path##*/}/Telegram" --exclude="${data_path##*/}"/.* --warning=no-file-changed -cpf "$Backup_folder/$1.tar" -C "${data_path%/*}" "${data_path##*/}" ;;
|
||||||
*)
|
zstd | Zstd | ZSTD) tar --checkpoint-action="ttyout=%T\r" --exclude="Backup_"* --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/QQ" --exclude="${data_path##*/}/Telegram" --exclude="${data_path##*/}"/.* --warning=no-file-changed -cpf - -C "${data_path%/*}" "${data_path##*/}" | zstd --ultra -3 -T0 -q --priority=rt >"$Backup_folder/$1.tar.zst" ;;
|
||||||
case $Compression_method in
|
esac
|
||||||
tar | Tar | TAR) tar --checkpoint-action="ttyout=%T\r" --exclude="Backup_"* --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/QQ" --exclude="${data_path##*/}/Telegram" --exclude="${data_path##*/}"/.* --warning=no-file-changed -cpf "$Backup_folder/$1.tar" -C "${data_path%/*}" "${data_path##*/}" ;;
|
;;
|
||||||
zstd | Zstd | ZSTD) tar --checkpoint-action="ttyout=%T\r" --exclude="Backup_"* --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/QQ" --exclude="${data_path##*/}/Telegram" --exclude="${data_path##*/}"/.* --warning=no-file-changed -cpf - -C "${data_path%/*}" "${data_path##*/}" | zstd --ultra -3 -T0 -q --priority=rt >"$Backup_folder/$1.tar.zst" ;;
|
|
||||||
esac
|
esac
|
||||||
;;
|
echo_log "備份$1數據"
|
||||||
esac
|
} || {
|
||||||
echo_log "備份$1數據"
|
echoRgb "$1數據 $Filesize2太小" "0" && result=1
|
||||||
} || {
|
}
|
||||||
echoRgb "$1數據 $Filesize2太小" "0" && result=1
|
if [[ $result = 0 ]]; then
|
||||||
}
|
Validation_file "$Backup_folder/$1.tar"*
|
||||||
if [[ $result = 0 ]]; then
|
if [[ $result = 0 ]]; then
|
||||||
Validation_file "$Backup_folder/$1.tar"*
|
if [[ ! $Filesize -eq 0 ]]; then
|
||||||
if [[ $result = 0 ]]; then
|
size2="$(stat -c %s "$Backup_folder/$1.tar"*)"
|
||||||
if [[ ! $Filesize -eq 0 ]]; then
|
rate="$(echo "scale=2; (1 - ($size2 / $Filesize)) * 100" | bc)"
|
||||||
size2="$(stat -c %s "$Backup_folder/$1.tar"*)"
|
echoRgb "壓縮率${rate}% 大小$(size "$size2")"
|
||||||
rate="$(echo "scale=2; (1 - ($size2 / $Filesize)) * 100" | bc)"
|
fi
|
||||||
echoRgb "壓縮率${rate}% 大小$(size "$size2")"
|
[[ ${Backup_folder##*/} = Media ]] && [[ $(sed -e '/^$/d' "$mediatxt" | grep -w "${REPLY##*/}.tar$" | head -1) = "" ]] && echo "$FILE_NAME" >> "$mediatxt"
|
||||||
fi
|
if [[ $zsize != "" ]]; then
|
||||||
[[ ${Backup_folder##*/} = Media ]] && [[ $(sed -e '/^$/d' "$mediatxt" | grep -w "${REPLY##*/}.tar$" | head -1) = "" ]] && echo "$FILE_NAME" >> "$mediatxt"
|
extra_content="{
|
||||||
if [[ $zsize != "" ]]; then
|
\"$1\": {
|
||||||
extra_content="{
|
\"path\": \"$2\",
|
||||||
\"$1\": {
|
\"Size\": \"$Filesize\"
|
||||||
\"path\": \"$2\",
|
}
|
||||||
\"Size\": \"$Filesize\"
|
}"
|
||||||
}
|
jq --argjson new_content "$extra_content" '. += $new_content' "$app_details" > temp.json && cp temp.json "$app_details" && rm -rf temp.json
|
||||||
}"
|
else
|
||||||
jq --argjson new_content "$extra_content" '. += $new_content' "$app_details" > temp.json && cp temp.json "$app_details" && rm -rf temp.json
|
extra_content="{
|
||||||
else
|
\"$1\": {
|
||||||
extra_content="{
|
\"Size\": \"$Filesize\"
|
||||||
\"$1\": {
|
}
|
||||||
\"Size\": \"$Filesize\"
|
}"
|
||||||
}
|
jq --argjson new_content "$extra_content" '. += $new_content' "$app_details" > temp.json && cp temp.json "$app_details" && rm -rf temp.json
|
||||||
}"
|
fi
|
||||||
jq --argjson new_content "$extra_content" '. += $new_content' "$app_details" > temp.json && cp temp.json "$app_details" && rm -rf temp.json
|
else
|
||||||
fi
|
rm -rf "$Backup_folder/$1".tar.*
|
||||||
else
|
fi
|
||||||
rm -rf "$Backup_folder/$1".tar.*
|
fi
|
||||||
fi
|
[[ $Compression_method1 != "" ]] && Compression_method="$Compression_method1"
|
||||||
fi
|
unset Compression_method1
|
||||||
[[ $Compression_method1 != "" ]] && Compression_method="$Compression_method1"
|
fi
|
||||||
unset Compression_method1
|
|
||||||
else
|
else
|
||||||
[[ $Size != "" ]] && echoRgb "$1數據無發生變化 跳過備份" "2"
|
[[ $Size != "" ]] && echoRgb "$1數據無發生變化 跳過備份" "2"
|
||||||
fi
|
fi
|
||||||
@@ -1820,11 +1822,12 @@ backup)
|
|||||||
[[ $setDisplayPowerMode = "" ]] && {
|
[[ $setDisplayPowerMode = "" ]] && {
|
||||||
echoRgb "應用備份開始後關閉螢幕\n -音量上關閉,音量下不關閉" "2"
|
echoRgb "應用備份開始後關閉螢幕\n -音量上關閉,音量下不關閉" "2"
|
||||||
get_version "關閉" "不關閉" && setDisplayPowerMode="$branch"
|
get_version "關閉" "不關閉" && setDisplayPowerMode="$branch"
|
||||||
}
|
} || isBoolean "$setDisplayPowerMode" "setDisplayPowerMode" && setDisplayPowerMode="$nsx"
|
||||||
[[ $Background_apps_ignore = "" ]] && {
|
[[ $Background_apps_ignore = "" ]] && {
|
||||||
echoRgb "存在進程忽略備份\n -音量上忽略,音量下備份" "2"
|
echoRgb "存在進程忽略備份\n -音量上忽略,音量下備份" "2"
|
||||||
get_version "忽略" "備份" && Background_apps_ignore="$branch"
|
get_version "忽略" "備份" && Background_apps_ignore="$branch"
|
||||||
} ;;
|
} || isBoolean "$Background_apps_ignore" "Background_apps_ignore" && Background_apps_ignore="$nsx"
|
||||||
|
;;
|
||||||
2)
|
2)
|
||||||
[[ $Backup_Mode = "" ]] && {
|
[[ $Backup_Mode = "" ]] && {
|
||||||
Enter_options "輸入1備份應用+數據,輸入0僅應用不包含數據" "應用+數據" "僅應用" && isBoolean "$parameter" "Backup_Mode" && Backup_Mode="$nsx"
|
Enter_options "輸入1備份應用+數據,輸入0僅應用不包含數據" "應用+數據" "僅應用" && isBoolean "$parameter" "Backup_Mode" && Backup_Mode="$nsx"
|
||||||
@@ -1858,7 +1861,7 @@ backup)
|
|||||||
[[ $setDisplayPowerMode = "" ]] && {
|
[[ $setDisplayPowerMode = "" ]] && {
|
||||||
Enter_options "應用備份開始後關閉螢幕\n -輸入1關閉,0不關閉" "關閉" "不關閉" && isBoolean "$parameter" "setDisplayPowerMode" && setDisplayPowerMode="$nsx"
|
Enter_options "應用備份開始後關閉螢幕\n -輸入1關閉,0不關閉" "關閉" "不關閉" && isBoolean "$parameter" "setDisplayPowerMode" && setDisplayPowerMode="$nsx"
|
||||||
} || {
|
} || {
|
||||||
isBoolean "$backup_media" "backup_media" && backup_media="$nsx"
|
isBoolean "$setDisplayPowerMode" "setDisplayPowerMode" && setDisplayPowerMode="$nsx"
|
||||||
}
|
}
|
||||||
[[ $Background_apps_ignore = "" ]] && {
|
[[ $Background_apps_ignore = "" ]] && {
|
||||||
Enter_options "存在進程忽略備份\n -輸入1不備份,0備份" "忽略" "備份" && isBoolean "$parameter" "Background_apps_ignore" && Background_apps_ignore="$nsx"
|
Enter_options "存在進程忽略備份\n -輸入1不備份,0備份" "忽略" "備份" && isBoolean "$parameter" "Background_apps_ignore" && Background_apps_ignore="$nsx"
|
||||||
@@ -1891,7 +1894,7 @@ backup)
|
|||||||
hx="本地"
|
hx="本地"
|
||||||
echoRgb "腳本受到內核機制影響 息屏後IO性能嚴重影響\n -請勿關閉終端或是息屏備份 如需終止腳本\n -請執行終止腳本.sh即可停止" "3"
|
echoRgb "腳本受到內核機制影響 息屏後IO性能嚴重影響\n -請勿關閉終端或是息屏備份 如需終止腳本\n -請執行終止腳本.sh即可停止" "3"
|
||||||
backup_path
|
backup_path
|
||||||
echoRgb "配置詳細:\n -壓縮方式:$Compression_method\n -音量鍵確認:$Lo\n -更新:$update\n -備份模式:$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\n -關閉螢幕:$setDisplayPowerMode"
|
||||||
D="1"
|
D="1"
|
||||||
Apk_info="$(pm list packages -u --user "$user" | cut -f2 -d ':' | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)"
|
Apk_info="$(pm list packages -u --user "$user" | cut -f2 -d ':' | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)"
|
||||||
if [[ $Apk_info != "" ]]; then
|
if [[ $Apk_info != "" ]]; then
|
||||||
@@ -2381,18 +2384,8 @@ Restore|Restore2)
|
|||||||
restore_permissions
|
restore_permissions
|
||||||
Ssaid="$(jq -r '.[] | select(.Ssaid != null).Ssaid' "$app_details")"
|
Ssaid="$(jq -r '.[] | select(.Ssaid != null).Ssaid' "$app_details")"
|
||||||
if [[ $Ssaid != "" ]]; then
|
if [[ $Ssaid != "" ]]; then
|
||||||
if [[ $(get_ssaid "$name2") != $Ssaid ]]; then
|
SSAID_Package="$(echo "$name1 $name2 $Ssaid")"
|
||||||
set_ssaid "$name2" "$Ssaid"
|
SSAID_Package2="$(echo "$SSAID_Package\n$SSAID_Package2")"
|
||||||
if [[ $(get_ssaid "$name2") = $Ssaid ]]; then
|
|
||||||
echoRgb "SSAID恢復成功" "1"
|
|
||||||
SSAID_Package="$(echo "$name1 \"$name2\"")"
|
|
||||||
SSAID_Package2="$(echo "$SSAID_Package\n$SSAID_Package2")"
|
|
||||||
else
|
|
||||||
echoRgb "SSAID恢復失敗" "0"
|
|
||||||
SSAID_Package1="$(echo "$name1 \"$name2\"")"
|
|
||||||
SSAID_Package3="$(echo "$SSAID_Package1\n$SSAID_Package3")"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
unset Ssaid
|
unset Ssaid
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -2411,7 +2404,26 @@ Restore|Restore2)
|
|||||||
fi
|
fi
|
||||||
if [[ $i = $r && $operate != Restore2 ]]; then
|
if [[ $i = $r && $operate != Restore2 ]]; then
|
||||||
endtime 1 "應用恢復" "2"
|
endtime 1 "應用恢復" "2"
|
||||||
echoRgb "\n -下列為已設置SSAID應用,請勿打開需要重啟後才能使用,否則ssaid設置失敗\n$SSAID_Package2\n -下列為設置SSAID失敗應用....\n$SSAID_Package3" "3"
|
[[ $SSAID_Package2 != "" ]] && {
|
||||||
|
echoRgb "開始恢復saaid" "0"
|
||||||
|
echo "$SSAID_Package2" | while read; do
|
||||||
|
Ssaid="$(echo "$REPLY" | awk '{print $3}')"
|
||||||
|
name1="$(echo "$REPLY" | awk '{print $1}')"
|
||||||
|
name2="$(echo "$REPLY" | awk '{print $2}')"
|
||||||
|
set_ssaid "$name2" "$Ssaid"
|
||||||
|
if [[ $(get_ssaid "$name2") = $Ssaid ]]; then
|
||||||
|
echoRgb "$name1 SSAID恢復成功" "1"
|
||||||
|
SSAID_Package0="$(echo "$name1 \"$name2\"")"
|
||||||
|
SSAID_Package1="$(echo "$SSAID_Package0\n$SSAID_Package1")"
|
||||||
|
else
|
||||||
|
echoRgb "$name1 SSAID恢復失敗" "0"
|
||||||
|
SSAID_Package3="$(echo "$name1 \"$name2\"")"
|
||||||
|
SSAID_Package4="$(echo "$SSAID_Package3\n$SSAID_Package4")"
|
||||||
|
fi
|
||||||
|
unset Ssaid
|
||||||
|
done
|
||||||
|
echoRgb "SSAID恢復後必須重新開機套用,否則應用閃退,如果沒有應用恢復ssaid則無須重啟" "0"
|
||||||
|
}
|
||||||
if [[ $media_recovery = true ]]; then
|
if [[ $media_recovery = true ]]; then
|
||||||
starttime1="$(date -u "+%s")"
|
starttime1="$(date -u "+%s")"
|
||||||
app_details="$Backup_folder2/app_details.json"
|
app_details="$Backup_folder2/app_details.json"
|
||||||
@@ -2447,7 +2459,7 @@ Restore|Restore2)
|
|||||||
done
|
done
|
||||||
Set_screen_pause_seconds off
|
Set_screen_pause_seconds off
|
||||||
starttime1="$TIME"
|
starttime1="$TIME"
|
||||||
echoRgb "$DX完成" && endtime 1 "$DX開始到結束" && [[ $SSAID_Package2 != "" ]] && echoRgb "SSAID恢復後必須重啟套用,如發現應用閃退請重新開機" "0"
|
echoRgb "$DX完成" && endtime 1 "$DX開始到結束"
|
||||||
rm -rf "$TMPDIR"/*
|
rm -rf "$TMPDIR"/*
|
||||||
} &
|
} &
|
||||||
wait && exit
|
wait && exit
|
||||||
|
|||||||
Reference in New Issue
Block a user