This commit is contained in:
Yawasau
2023-12-05 14:13:20 +08:00
parent 1326cf59ad
commit 2db2e8f24e
4 changed files with 138 additions and 65 deletions

View File

@@ -16,7 +16,7 @@ Output_path=
toast_info=1 toast_info=1
#自動更新腳本 #自動更新腳本
update=1 update=0
#假設如果存在usb隨身碟是否默認使用隨身碟(1不詢問默認使用 0每次都進行詢問) #假設如果存在usb隨身碟是否默認使用隨身碟(1不詢問默認使用 0每次都進行詢問)
USBdefault=0 USBdefault=0
@@ -45,11 +45,13 @@ Custom_path="
/data/adb /data/adb
" "
#黑名單模式(1直接忽略備份0僅備份安裝檔)
blacklist_mode=0
#備份黑名單 備份apk不備份任何數據 #備份黑名單 備份apk不備份任何數據
blacklist=" blacklist="jp.naver.line.android
jp.naver.line.android #com.esunbank
com.esunbank #com.chailease.tw.app.android.ccfappcust"
com.chailease.tw.app.android.ccfappcust"
#位於data的預裝應用白名單 #位於data的預裝應用白名單
whitelist="com.xiaomi.xmsf whitelist="com.xiaomi.xmsf
com.xiaomi.xiaoailite com.xiaomi.xiaoailite

Binary file not shown.

View File

@@ -15,6 +15,9 @@ if [[ ! -d $bin_path ]]; then
bin_path="${MODDIR%/*}/tools/bin" bin_path="${MODDIR%/*}/tools/bin"
[[ ! -d $bin_path ]] && echo "$bin_path關鍵目錄遺失" && EXIT="true" [[ ! -d $bin_path ]] && echo "$bin_path關鍵目錄遺失" && EXIT="true"
fi fi
[[ ! -f $bin_path/zstd ]] && echo "$bin_path/zstd遺失"
[[ ! -f $bin_path/tar ]] && echo "$bin_path/tar遺失"
[[ ! -f $bin_path/classes.dex ]] && echo "$bin_path/classes.dex遺失"
[[ $conf_path != "" ]] && conf_path="$conf_path" || conf_path="$MODDIR/backup_settings.conf" [[ $conf_path != "" ]] && conf_path="$conf_path" || conf_path="$MODDIR/backup_settings.conf"
[[ ! -f $conf_path ]] && echo "$conf_path配置遺失" && exit 1 [[ ! -f $conf_path ]] && echo "$conf_path配置遺失" && exit 1
echo "$(sed 's/true/1/g ; s/false/0/g' "$conf_path")">"$conf_path" echo "$(sed 's/true/1/g ; s/false/0/g' "$conf_path")">"$conf_path"
@@ -123,6 +126,12 @@ fi
export PATH="$filepath:$PATH" export PATH="$filepath:$PATH"
export TZ=Asia/Taipei export TZ=Asia/Taipei
export CLASSPATH="$bin_path/classes.dex" export CLASSPATH="$bin_path/classes.dex"
zstd_sha256sum="6fb924c51e0d00ada3a65e44ae9dccff908911b6181bd3262ce669e599f2a025"
tar_sha256sum="3c605b1e9eb8283555225dcad4a3bf1777ae39c5f19a2c8b8943140fd7555814"
classesdex_sha256sum="c4f5e6155c6b927d5f002dbb21a975a716655bc5011ae7cf450563fb1ae0ca4f"
[[ $(sha256sum "$bin_path/zstd" | cut -d" " -f1) != $zstd_sha256sum ]] && echoRgb "zstd效驗失敗" "0" && exit 2
[[ $(sha256sum "$bin_path/tar" | cut -d" " -f1) != $tar_sha256sum ]] && echoRgb "tar效驗失敗" "0" && exit 2
[[ $(sha256sum "$bin_path/classes.dex" | cut -d" " -f1) != $classesdex_sha256sum ]] && echoRgb "classes.dex效驗失敗" "0" && exit 2
TMPDIR="/data/local/tmp" TMPDIR="/data/local/tmp"
[[ ! -d $TMPDIR ]] && mkdir "$TMPDIR" [[ ! -d $TMPDIR ]] && mkdir "$TMPDIR"
if [[ $(which busybox) = "" ]]; then if [[ $(which busybox) = "" ]]; then
@@ -146,7 +155,7 @@ esac
alias zstd="zstd --ultra -$Compression_rate -T0 -q --priority=rt" alias zstd="zstd --ultra -$Compression_rate -T0 -q --priority=rt"
alias LS="toybox ls -Zd" alias LS="toybox ls -Zd"
alias lz4="zstd --ultra -$Compression_rate -T0 -q --priority=rt --format=lz4" alias lz4="zstd --ultra -$Compression_rate -T0 -q --priority=rt --format=lz4"
[[ $1 = --help ]] && appinfo --help #[[ $1 = --help ]] && appinfo --help
#appinfo -o pn -u | while read; do #appinfo -o pn -u | while read; do
# cmd package install-existing "$REPLY" # cmd package install-existing "$REPLY"
#done #done
@@ -533,7 +542,11 @@ backup_path() {
outshow="使用自定義目錄" outshow="使用自定義目錄"
else else
Backup="$MODDIR/Backup_${Compression_method}_$user" Backup="$MODDIR/Backup_${Compression_method}_$user"
if [[ $backup_mode = "" ]]; then
outshow="使用當前路徑作為備份目錄" outshow="使用當前路徑作為備份目錄"
else
[[ -d $Backup ]] && outshow="使用上層路徑作為備份目錄" || echoRgb "$Backup目錄不存在" "0"
fi
fi fi
PU="$(mount | egrep -v "rannki|0000-1" | grep -w "/mnt/media_rw" | awk '{print $3,$5}')" PU="$(mount | egrep -v "rannki|0000-1" | grep -w "/mnt/media_rw" | awk '{print $3,$5}')"
OTGPATH="$(echo "$PU" | awk '{print $1}')" OTGPATH="$(echo "$PU" | awk '{print $1}')"
@@ -617,8 +630,13 @@ kill_app() {
[[ $Pause_Freeze = "" ]] && Pause_Freeze="0" [[ $Pause_Freeze = "" ]] && Pause_Freeze="0"
if [[ $name2 != $Open_apps2 ]]; then if [[ $name2 != $Open_apps2 ]]; then
if [[ $Pause_Freeze = 0 ]]; then if [[ $Pause_Freeze = 0 ]]; then
while pgrep -f "$name2" &>/dev/null; do
killall -9 "$name2" &>/dev/null
am force-stop --user "$user" "$name2" &>/dev/null
am kill "$neme2" &>/dev/null
echoRgb "刺殺$name1"
done
pm suspend --user "$user" "$name2" 2>/dev/null | sed "s/Package $name2/ -應用:$name1/g ; s/new suspended state: true/暫停狀態:凍結/g" pm suspend --user "$user" "$name2" 2>/dev/null | sed "s/Package $name2/ -應用:$name1/g ; s/new suspended state: true/暫停狀態:凍結/g"
am force-stop --user "$user" "$name2"
fi fi
Pause_Freeze="1" Pause_Freeze="1"
fi fi
@@ -701,7 +719,6 @@ Backup_apk() {
fi fi
[[ $PackageName = "" ]] && echo "PackageName=\"$name2\"" >>"$app_details" [[ $PackageName = "" ]] && echo "PackageName=\"$name2\"" >>"$app_details"
[[ $ChineseName = "" ]] && echo "ChineseName=\"$name1\"" >>"$app_details" [[ $ChineseName = "" ]] && echo "ChineseName=\"$name1\"" >>"$app_details"
[[ ! -f $Backup_folder/$name2.sh ]] && cp -r "$script_path/restore2" "$Backup_folder/$name2.sh"
else else
rm -rf "$Backup_folder" rm -rf "$Backup_folder"
fi fi
@@ -1114,6 +1131,7 @@ backup)
isBoolean "$USBdefault" "USBdefault" && USBdefault="$nsx" isBoolean "$USBdefault" "USBdefault" && USBdefault="$nsx"
isBoolean "$Backup_obb_data" "Backup_obb_data" && Backup_obb_data="$nsx" isBoolean "$Backup_obb_data" "Backup_obb_data" && Backup_obb_data="$nsx"
isBoolean "$Backup_user_data" "Backup_user_data" && Backup_user_data="$nsx" isBoolean "$Backup_user_data" "Backup_user_data" && Backup_user_data="$nsx"
isBoolean "$blacklist_mode" "blacklist_mode" && blacklist_mode="$nsx"
isBoolean "$backup_media" "backup_media" && backup_media="$nsx" isBoolean "$backup_media" "backup_media" && backup_media="$nsx"
else else
echoRgb "檢查目錄是否存在已卸載應用?\n -音量上檢查,下不檢查" echoRgb "檢查目錄是否存在已卸載應用?\n -音量上檢查,下不檢查"
@@ -1122,6 +1140,10 @@ backup)
get_version "刪除" "移動到其他處" && default_behavior="$branch" get_version "刪除" "移動到其他處" && default_behavior="$branch"
echoRgb "存在usb隨身碟是否默認使用隨身碟?\n -音量上默認,下進行詢問" echoRgb "存在usb隨身碟是否默認使用隨身碟?\n -音量上默認,下進行詢問"
get_version "默認" "詢問" && USBdefault="$branch" get_version "默認" "詢問" && USBdefault="$branch"
if [[ $(echo "$blacklist" | grep -v "#" | wc -l) -gt 0 ]]; then
echoRgb "選擇黑名單模式\n -音量上不備份,音量下僅備份安裝檔" "2"
get_version "不備份" "備份安裝檔" && blacklist_mode="$branch"
fi
echoRgb "是否備份外部數據 即比如原神的數據包\n -音量上備份,音量下不備份" "2" echoRgb "是否備份外部數據 即比如原神的數據包\n -音量上備份,音量下不備份" "2"
get_version "備份" "不備份" && Backup_obb_data="$branch" get_version "備份" "不備份" && Backup_obb_data="$branch"
echoRgb "是否備份使用者數據\n -音量上備份,音量下不備份" "2" echoRgb "是否備份使用者數據\n -音量上備份,音量下不備份" "2"
@@ -1139,7 +1161,7 @@ backup)
hx="本地" hx="本地"
echoRgb "腳本受到內核機制影響 息屏後io性能嚴重影響\n -請勿關閉終端或是息屏備份 如需終止腳本\n -請執行終止腳本.sh即可停止\n -備份結束將發送toast提示語" "3" echoRgb "腳本受到內核機制影響 息屏後io性能嚴重影響\n -請勿關閉終端或是息屏備份 如需終止腳本\n -請執行終止腳本.sh即可停止\n -備份結束將發送toast提示語" "3"
backup_path backup_path
echoRgb "配置詳細:\n -壓縮方式:$Compression_method\n -音量鍵確認:$Lo\n -Toast:$toast_info\n -更新:$update\n -已卸載應用檢查:$delete_folder\n -卸載應用默認操作(true刪除false移動):$default_behavior\n -默認使用usb:$USBdefault\n -備份外部數據:$Backup_obb_data\n -備份user數據:$Backup_user_data\n -自定義目錄備份:$backup_media" echoRgb "配置詳細:\n -壓縮方式:$Compression_method\n -音量鍵確認:$Lo\n -Toast:$toast_info\n -更新:$update\n -已卸載應用檢查:$delete_folder\n -卸載應用默認操作(true刪除false移動):$default_behavior\n -默認使用usb:$USBdefault\n -備份外部數據:$Backup_obb_data\n -備份user數據:$Backup_user_data\n -自定義目錄備份:$backup_media\n -黑名單模式:$blacklist_mode"
D="1" D="1"
C="$(grep -v "#" "$txt" | sed -e '/^$/d' | sed -n '$=')" C="$(grep -v "#" "$txt" | sed -e '/^$/d' | sed -n '$=')"
[[ $user = 0 ]] && Apk_info="$(appinfo -sort-i -o pn -pn $system -3 | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)" || Apk_info="$(appinfo -sort-i -o pn -pn $system $(pm list packages -3 --user "$user" | cut -f2 -d ':') | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)" [[ $user = 0 ]] && Apk_info="$(appinfo -sort-i -o pn -pn $system -3 | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)" || Apk_info="$(appinfo -sort-i -o pn -pn $system $(pm list packages -3 --user "$user" | cut -f2 -d ':') | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)"
@@ -1194,7 +1216,7 @@ backup)
done done
[[ -f $Tmplist ]] && sed -e '/^$/d' "$Tmplist" | sort>"$txt" && rm -rf "$Tmplist" [[ -f $Tmplist ]] && sed -e '/^$/d' "$Tmplist" | sort>"$txt" && rm -rf "$Tmplist"
r="$(grep -v "#" "$txt" | sed -e '/^$/d' | sed -n '$=')" r="$(grep -v "#" "$txt" | sed -e '/^$/d' | sed -n '$=')"
[[ $1 != "" ]] && r=1 [[ $backup_mode != "" ]] && r=1
[[ $r = "" ]] && echoRgb "$MODDIR_NAME/appList.txt是空的或是包名被注釋備份個鬼\n -檢查是否注釋亦或者執行$MODDIR_NAME/生成應用列表.sh" "0" && exit 1 [[ $r = "" ]] && echoRgb "$MODDIR_NAME/appList.txt是空的或是包名被注釋備份個鬼\n -檢查是否注釋亦或者執行$MODDIR_NAME/生成應用列表.sh" "0" && exit 1
[[ $Backup_user_data = false ]] && echoRgb "當前$MODDIR_NAME/backup_settings.conf的\n -Backup_user_data=0將不備份user數據" "0" [[ $Backup_user_data = false ]] && echoRgb "當前$MODDIR_NAME/backup_settings.conf的\n -Backup_user_data=0將不備份user數據" "0"
[[ $Backup_obb_data = false ]] && echoRgb "當前$MODDIR_NAME/backup_settings.conf的\n -Backup_obb_data=0將不備份外部數據" "0" [[ $Backup_obb_data = false ]] && echoRgb "當前$MODDIR_NAME/backup_settings.conf的\n -Backup_obb_data=0將不備份外部數據" "0"
@@ -1233,9 +1255,14 @@ backup)
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
if [[ $backup_mode = "" ]]; then
name1="$(grep -v "#" "$txt" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $1}')" name1="$(grep -v "#" "$txt" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $1}')"
name2="$(grep -v "#" "$txt" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $2}')" name2="$(grep -v "#" "$txt" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $2}')"
[[ $name2 = "" ]] && echoRgb "警告! appList.txt應用包名獲取失敗可能修改有問題" "0" && exit 1 else
name1="$ChineseName"
name2="$PackageName"
fi
[[ $name2 = "" || $name1 = "" ]] && echoRgb "警告! appList.txt應用包名獲取失敗可能修改有問題" "0" && exit 1
apk_path="$(pm path --user "$user" "$name2" 2>/dev/null | cut -f2 -d ':')" apk_path="$(pm path --user "$user" "$name2" 2>/dev/null | cut -f2 -d ':')"
apk_path2="$(echo "$apk_path" | head -1)" apk_path2="$(echo "$apk_path" | head -1)"
apk_path2="${apk_path2%/*}" apk_path2="${apk_path2%/*}"
@@ -1286,6 +1313,9 @@ backup)
[[ $name2 = moe.shizuku.redirectstorage ]] && Backup_data "storage-isolation" "/data/adb/storage-isolation" [[ $name2 = moe.shizuku.redirectstorage ]] && Backup_data "storage-isolation" "/data/adb/storage-isolation"
Set_service Set_service
fi fi
[[ -f $Backup_folder/$name2.sh ]] && rm -rf "$Backup_folder/$name2.sh"
[[ ! -f $Backup_folder/recover.sh ]] && cp -r "$script_path/restore2" "$Backup_folder/recover.sh"
[[ ! -f $Backup_folder/backup.sh ]] && cp -r "$script_path/backup" "$Backup_folder/backup.sh"
endtime 2 "$name1 備份" "3" endtime 2 "$name1 備份" "3"
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)}')"
lxj="$(echo "$Occupation_status" | awk '{print $3}' | sed 's/%//g')" lxj="$(echo "$Occupation_status" | awk '{print $3}' | sed 's/%//g')"
@@ -1446,7 +1476,7 @@ Restore)
echoRgb "獲取完成 但備份內應用都已安裝....正在退出腳本" "0" && exit 0 echoRgb "獲取完成 但備份內應用都已安裝....正在退出腳本" "0" && exit 0
fi fi
fi fi
#開始循環$txt內的資料進行恢 #開始循環$txt內的資料進行恢
#記錄開始時間 #記錄開始時間
starttime1="$(date -u "+%s")" starttime1="$(date -u "+%s")"
TIME="$starttime1" TIME="$starttime1"
@@ -1455,7 +1485,7 @@ Restore)
{ {
while [[ $i -le $r ]]; do while [[ $i -le $r ]]; do
[[ $en -ge 229 ]] && en=118 [[ $en -ge 229 ]] && en=118
echoRgb "$i/$r個應用 剩下$((r - i))" "3" echoRgb "$i/$r個應用 剩下$((r - i))" "3"
name1="$(grep -v "#" "$txt" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $1}')" name1="$(grep -v "#" "$txt" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $1}')"
name2="$(grep -v "#" "$txt" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $2}')" name2="$(grep -v "#" "$txt" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $2}')"
unset No_backupdata apk_version unset No_backupdata apk_version
@@ -1468,14 +1498,20 @@ Restore)
[[ -f "$Backup_folder/app_details" ]] && app_details="$Backup_folder/app_details" . "$Backup_folder/app_details" &>/dev/null [[ -f "$Backup_folder/app_details" ]] && app_details="$Backup_folder/app_details" . "$Backup_folder/app_details" &>/dev/null
[[ $name2 = "" ]] && echoRgb "應用包名獲取失敗" "0" && exit 1 [[ $name2 = "" ]] && echoRgb "應用包名獲取失敗" "0" && exit 1
if [[ -d $Backup_folder ]]; then if [[ -d $Backup_folder ]]; then
echoRgb "$name1 ($name2)" "2" echoRgb "$name1 ($name2)" "2"
starttime2="$(date -u "+%s")" starttime2="$(date -u "+%s")"
if [[ $(pm path --user "$user" "$name2" 2>/dev/null) = "" ]]; then if [[ $(pm path --user "$user" "$name2" 2>/dev/null) = "" ]]; then
installapk installapk
else else
if [[ $apk_version -gt $(pm list packages --show-versioncode --user "$user" "$name2" 2>/dev/null | cut -f3 -d ':' | head -n 1) ]]; then if [[ $apk_version -gt $(pm list packages --show-versioncode --user "$user" "$name2" 2>/dev/null | cut -f3 -d ':' | head -n 1) ]]; then
installapk installapk
echoRgb "版本提升$(pm list packages --show-versioncode --user "$user" "$name2" 2>/dev/null | cut -f3 -d ':' | head -n 1)>$apk_version" "1" [[ $? = 0 ]] && echoRgb "版本提升$(pm list packages --show-versioncode --user "$user" "$name2" 2>/dev/null | cut -f3 -d ':' | head -n 1)>$apk_version" "1"
elif [[ $apk_version -lt $(pm list packages --show-versioncode --user "$user" "$name2" 2>/dev/null | cut -f3 -d ':' | head -n 1) ]]; then
pm uninstall --user "$user" -k "$name2" &>/dev/null
if [[ $? = 0 ]]; then
installapk
echoRgb "版本降低$(pm list packages --show-versioncode --user "$user" "$name2" 2>/dev/null | cut -f3 -d ':' | head -n 1)>$apk_version" "1"
fi
fi fi
fi fi
if [[ $(pm path --user "$user" "$name2" 2>/dev/null) != "" ]]; then if [[ $(pm path --user "$user" "$name2" 2>/dev/null) != "" ]]; then
@@ -1489,13 +1525,13 @@ Restore)
else else
[[ $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"
rgb_d="$rgb_a" rgb_d="$rgb_a"
rgb_a=188 rgb_a=188
echoRgb "_________________$(endtime 1 "已經")___________________" echoRgb "_________________$(endtime 1 "已經")___________________"
rgb_a="$rgb_d" rgb_a="$rgb_d"
else else
echoRgb "$Backup_folder資料夾遺失,無法恢" "0" echoRgb "$Backup_folder資料夾遺失,無法恢" "0"
fi fi
if [[ $i = $r ]]; then if [[ $i = $r ]]; then
endtime 1 "應用恢復" "2" endtime 1 "應用恢復" "2"
@@ -1512,7 +1548,7 @@ Restore)
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"
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"
fi fi
@@ -1535,7 +1571,7 @@ Restore)
restore_freeze restore_freeze
rm -rf "$TMPDIR/scriptTMP" "$TXT" rm -rf "$TMPDIR/scriptTMP" "$TXT"
starttime1="$TIME" starttime1="$TIME"
echoRgb "批量恢完成" && endtime 1 "批量恢開始到結束" && echoRgb "如發現應用閃退請重新開機" echoRgb "批量恢完成" && endtime 1 "批量恢開始到結束" && echoRgb "如發現應用閃退請重新開機"
longToast "批量恢復完成" longToast "批量恢復完成"
Print "批量恢復完成 執行過程請查看$Status_log" && rm -rf "$TMPDIR"/* Print "批量恢復完成 執行過程請查看$Status_log" && rm -rf "$TMPDIR"/*
} & } &
@@ -1565,15 +1601,20 @@ Restore2)
name2="$(echo "${Script_path##*/}" | sed 's/.sh//g')" name2="$(echo "${Script_path##*/}" | sed 's/.sh//g')"
fi fi
[[ $name2 = "" ]] && echoRgb "包名獲取失敗" "0" && exit 2 [[ $name2 = "" ]] && echoRgb "包名獲取失敗" "0" && exit 2
echoRgb "$name1 ($name2)" "2" echoRgb "$name1 ($name2)" "2"
starttime2="$(date -u "+%s")" starttime2="$(date -u "+%s")"
if [[ $(pm path --user "$user" "$name2" 2>/dev/null) = "" ]]; then if [[ $(pm path --user "$user" "$name2" 2>/dev/null) = "" ]]; then
installapk installapk
else else
apk_version="$(echo "$apk_version" | head -n 1)"
if [[ $apk_version -gt $(pm list packages --show-versioncode --user "$user" "$name2" 2>/dev/null | cut -f3 -d ':' | head -n 1) ]]; then if [[ $apk_version -gt $(pm list packages --show-versioncode --user "$user" "$name2" 2>/dev/null | cut -f3 -d ':' | head -n 1) ]]; then
installapk installapk
echoRgb "版本提升$(pm list packages --show-versioncode --user "$user" "$name2" 2>/dev/null | cut -f3 -d ':' | head -n 1)>$apk_version" "1" [[ $? = 0 ]] && echoRgb "版本提升$(pm list packages --show-versioncode --user "$user" "$name2" 2>/dev/null | cut -f3 -d ':' | head -n 1)>$apk_version" "1"
elif [[ $apk_version -lt $(pm list packages --show-versioncode --user "$user" "$name2" 2>/dev/null | cut -f3 -d ':' | head -n 1) ]]; then
pm uninstall --user "$user" -k "$name2" &>/dev/null
if [[ $? = 0 ]]; then
installapk
echoRgb "版本降低$(pm list packages --show-versioncode --user "$user" "$name2" 2>/dev/null | cut -f3 -d ':' | head -n 1)>$apk_version" "1"
fi
fi fi
fi fi
if [[ $(pm path --user "$user" "$name2" 2>/dev/null) != "" ]]; then if [[ $(pm path --user "$user" "$name2" 2>/dev/null) != "" ]]; then
@@ -1586,7 +1627,7 @@ Restore2)
echoRgb "$name1沒有安裝無法恢復數據" "0" echoRgb "$name1沒有安裝無法恢復數據" "0"
fi fi
restore_freeze restore_freeze
endtime 1 "恢開始到結束" && echoRgb "如發現應用閃退請重新開機" && rm -rf "$TMPDIR"/* endtime 1 "恢開始到結束" && echoRgb "如發現應用閃退請重新開機" && rm -rf "$TMPDIR"/*
rm -rf "$TMPDIR/scriptTMP" rm -rf "$TMPDIR/scriptTMP"
wait && exit wait && exit
;; ;;
@@ -1609,7 +1650,7 @@ Restore3)
if [[ $? = 0 ]]; then if [[ $? = 0 ]]; then
echoRgb "$1成功" "1" && result=0 echoRgb "$1成功" "1" && result=0
else else
echoRgb "$1失敗,過世了" "0" && result=1 echoRgb "$1失敗,過世了" "0" && result=1
fi fi
} }
starttime1="$(date -u "+%s")" starttime1="$(date -u "+%s")"
@@ -1623,9 +1664,9 @@ Restore3)
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"
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 "恢結束" endtime 1 "恢結束"
rm -rf "$TMPDIR/scriptTMP" rm -rf "$TMPDIR/scriptTMP"
} & } &
;; ;;
@@ -1634,8 +1675,16 @@ Getlist)
/storage/emulated/0/Android/* | /data/media/0/Android/* | /sdcard/Android/*) echoRgb "請勿在$MODDIR內生成列表" "0" && exit 2 ;; /storage/emulated/0/Android/* | /data/media/0/Android/* | /sdcard/Android/*) echoRgb "請勿在$MODDIR內生成列表" "0" && exit 2 ;;
esac esac
#效驗選填是否正確 #效驗選填是否正確
isBoolean "$Lo" "Lo" && Lo="$nsx"
isBoolean "$debug_list" "debug_list" && debug_list="$nsx" isBoolean "$debug_list" "debug_list" && debug_list="$nsx"
isBoolean "$Lo" "Lo" && Lo="$nsx"
if [[ $Lo = false ]]; then
isBoolean "$blacklist_mode" "blacklist_mode" && blacklist_mode="$nsx"
else
if [[ $(echo "$blacklist" | grep -v "#" | wc -l) -gt 0 ]]; then
echoRgb "選擇黑名單模式\n -音量上不備份,音量下僅備份安裝檔" "2"
get_version "不備份" "備份安裝檔" && blacklist_mode="$branch"
fi
fi
txtpath="$MODDIR" txtpath="$MODDIR"
[[ $debug_list = true ]] && txtpath="${txtpath/'/storage/emulated/'/'/data/media/'}" [[ $debug_list = true ]] && txtpath="${txtpath/'/storage/emulated/'/'/data/media/'}"
nametxt="$txtpath/appList.txt" nametxt="$txtpath/appList.txt"
@@ -1659,9 +1708,7 @@ Getlist)
rc="0" rc="0"
rd="0" rd="0"
Q="0" Q="0"
echo "$Apk_info" | sed 's/\///g ; s/\://g ; s/(//g ; s/)//g ; s/\[//g ; s/\]//g ; s/\-//g ; s/!//g' | while read; do Output_list() {
[[ $rgb_a -ge 229 ]] && rgb_a=118
app_1=($REPLY $REPLY)
if [[ $(cat "$nametxt" | cut -f2 -d ' ' | egrep -w "^${app_1[1]}$") != ${app_1[1]} ]]; then if [[ $(cat "$nametxt" | cut -f2 -d ' ' | egrep -w "^${app_1[1]}$") != ${app_1[1]} ]]; then
case ${app_1[1]} in case ${app_1[1]} in
*oneplus* | *miui* | *xiaomi* | *oppo* | *flyme* | *meizu* | com.android.soundrecorder | com.mfashiongallery.emag | com.mi.health | *coloros*) *oneplus* | *miui* | *xiaomi* | *oppo* | *flyme* | *meizu* | com.android.soundrecorder | com.mfashiongallery.emag | com.mi.health | *coloros*)
@@ -1694,6 +1741,19 @@ Getlist)
else else
let Q++ let Q++
fi fi
}
echo "$Apk_info" | sed 's/\///g ; s/\://g ; s/(//g ; s/)//g ; s/\[//g ; s/\]//g ; s/\-//g ; s/!//g' | while read; do
[[ $rgb_a -ge 229 ]] && rgb_a=118
app_1=($REPLY $REPLY)
if [[ $blacklist_mode = true ]]; then
if [[ $(echo "$blacklist" | egrep -w "^${app_1[1]}$") != ${app_1[1]} ]]; then
Output_list
else
echoRgb "${app_1[2]}黑名單應用 不輸出" "0"
fi
else
Output_list
fi
if [[ $LR = $Apk_Quantity ]]; then if [[ $LR = $Apk_Quantity ]]; then
if [[ $(cat "$nametxt" | wc -l | awk '{print $1-2}') -lt $i ]]; then if [[ $(cat "$nametxt" | wc -l | awk '{print $1-2}') -lt $i ]]; then
rm -rf "$nametxt" "$MODDIR/tmp" rm -rf "$nametxt" "$MODDIR/tmp"

11
tools/script/backup Normal file
View File

@@ -0,0 +1,11 @@
if [ -f "${0%/*/*/*}/tools/bin/tools.sh" ]; then
MODDIR="${0%/*/*/*}"
operate="backup"
conf_path="${0%/*/*/*}/backup_settings.conf"
[[ ! -f $conf_path ]] && echo "$conf_path遺失"
backup_mode=1
. "${0%/*}/app_details" &>/dev/null
. "${0%/*/*/*}/tools/bin/tools.sh" | tee "$MODDIR/log.txt"
else
echo "${0%/*/*}/tools/bin/tools.sh遺失"
fi