This commit is contained in:
Yawasau
2024-03-02 17:05:30 +08:00
parent 47faeb5590
commit aff4405b7b
8 changed files with 202 additions and 132 deletions

View File

@@ -22,7 +22,7 @@ update=1
#假設如果存在usb隨身碟是否默認使用隨身碟(1不詢問默認使用 0每次都進行詢問) #假設如果存在usb隨身碟是否默認使用隨身碟(1不詢問默認使用 0每次都進行詢問)
USBdefault=0 USBdefault=0
#自定義外部掛載點,多個分區請使用|區隔 #自定義屏蔽外部掛載點,多個分區請使用|區隔
mount_point="rannki|0000-1" mount_point="rannki|0000-1"
#使用者(為空預設0) #使用者(為空預設0)
@@ -35,7 +35,7 @@ Backup_user_data=1
Backup_obb_data=1 Backup_obb_data=1
#是否在應用數據備份好後備份自定義目錄 #是否在應用數據備份好後備份自定義目錄
backup_media=0 backup_media=1
#假設你遇到列表輸出異常問題請將此設為1 #假設你遇到列表輸出異常問題請將此設為1
debug_list=0 debug_list=0
@@ -44,9 +44,7 @@ debug_list=0
Custom_path=" Custom_path="
/storage/emulated/0/Pictures/ /storage/emulated/0/Pictures/
/storage/emulated/0/Download/ /storage/emulated/0/Download/
/storage/emulated/0/Music
/storage/emulated/0/DCIM/ /storage/emulated/0/DCIM/
#/storage/emulated/0/DCIM/Snapseed
/data/adb /data/adb
" "

View File

@@ -1603,17 +1603,16 @@
"RMX3031" "真我 GT Neo" "RMX3031" "真我 GT Neo"
"RMX3041" "真我 v13" "RMX3041" "真我 v13"
"RMX3042" "真我 Q3i" "RMX3042" "真我 Q3i"
"RMX3043" "真我 v13信版" "RMX3043" "真我 v13信版"
"RMX3161" "真我 Q3" "RMX3161" "真我 Q3"
"RMX3300" "真我 GT2 PRO" "RMX3300" "真我 GT2 PRO"
"RMX3350" "真我 GT Neo 闪速版"
"RMX3357" "真我 GT Neo2T" "RMX3357" "真我 GT Neo2T"
"RMX3366" "真我 GT 大探索版" "RMX3366" "真我 GT 大探索版"
"RMX3370" "真我 GT Neo2" "RMX3370" "真我 GT Neo2"
"RMX3372" "真我 Q5 PRO" "RMX3372" "真我 Q5 PRO"
"RMX3461" "真我 Q3s" "RMX3461" "真我 Q3s"
"RMX3478" "真我 Q5" "RMX3478" "真我 Q5"
"RMX3551" "真我 GT2 大探索版" "RMX3551" "真我 GT2 大探索版"
"RMX3560" "真我 GT Neo3" "RMX3560" "真我 GT Neo3"
"RMX3562" "真我 GT Neo3 150w" "RMX3562" "真我 GT Neo3 150w"
"RMX3700" "真我 GT Neo5 SE" "RMX3700" "真我 GT Neo5 SE"

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,5 @@
#!/system/bin/sh #!/system/bin/sh
set -x 2> debug_output.log
shell_language="zh-TW" shell_language="zh-TW"
MODDIR="$MODDIR" MODDIR="$MODDIR"
MODDIR_NAME="${MODDIR##*/}" MODDIR_NAME="${MODDIR##*/}"
@@ -6,6 +7,7 @@ tools_path="$MODDIR/tools"
Compression_rate=3 Compression_rate=3
script="${0##*/}" script="${0##*/}"
backup_version="V15.8.7" backup_version="V15.8.7"
[[ $SHELL = *mt* ]] && echo "請勿使用mt拓展包環境執行,請更換系統環境" && exit 2
update_backup_settings_conf() { update_backup_settings_conf() {
echo "#1開啟0關閉 echo "#1開啟0關閉
#是否在每次執行備份腳本使用音量鍵詢問如下備份需求 #是否在每次執行備份腳本使用音量鍵詢問如下備份需求
@@ -120,7 +122,27 @@ rgb_c="${rgb_c:-177}"
/^blacklist/ s/ /\n/g; /^blacklist/ s/ /\n/g;
/^whitelist/ s/ /\n/g; /^whitelist/ s/ /\n/g;
/^system/ s/ /\n/g; /^system/ s/ /\n/g;
/^am_start/ s/ /\n/g' /^am_start/ s/ /\n/g;
s/true/1/g;
s/false/0/g'
}
update_Restore_settings_conf() {
echo "#1開啟0關閉
#是否在每次執行備份腳本使用音量鍵詢問如下備份需求
#如果是那下面兩項設置就被忽略,改為音量鍵選擇
Lo="${Lo:-0}"
#自動更新腳本
update="${update:-1}"
#使用者(為空預設0)
user=
#主色
rgb_a="${rgb_a:-226}"
#輔色
rgb_b="${rgb_b:-123}"
rgb_c="${rgb_c:-177}"" | sed 's/true/1/g ; s/false/0/g'
} }
if [[ ! -d $tools_path ]]; then if [[ ! -d $tools_path ]]; then
tools_path="${MODDIR%/*}/tools" tools_path="${MODDIR%/*}/tools"
@@ -130,13 +152,24 @@ fi
[[ ! -f $tools_path/tar ]] && echo "$tools_path/tar遺失" [[ ! -f $tools_path/tar ]] && echo "$tools_path/tar遺失"
[[ ! -f $tools_path/classes.dex ]] && echo "$tools_path/classes.dex遺失" [[ ! -f $tools_path/classes.dex ]] && echo "$tools_path/classes.dex遺失"
[[ ! -f $tools_path/classes2.dex ]] && echo "$tools_path/classes2.dex遺失" [[ ! -f $tools_path/classes2.dex ]] && echo "$tools_path/classes2.dex遺失"
[[ $conf_path != "" ]] && conf_path="$conf_path" || conf_path="$MODDIR/backup_settings.conf" if [[ ! -f $conf_path ]]; then
if [[ $conf_path != *Backup_* ]]; then case $operate in
backup_media|backup|Getlist|Restore2|check_file|convert|Restore3|dumpname)
if [[ $conf_path != *Backup_* ]]; then
update_backup_settings_conf>"$conf_path" update_backup_settings_conf>"$conf_path"
else echo "因腳本找不到\n$conf_path\n故重新生成默認列表\n請重新配置後重新執行腳本" && exit 0
else
if [[ $conf_path = *Backup_* ]]; then
update_Restore_settings_conf>"$conf_path"
echo "因腳本找不到\n$conf_path\n故重新生成默認列表\n請重新配置後重新執行腳本" && exit 0
else
echo "$conf_path配置遺失" && exit 1 echo "$conf_path配置遺失" && exit 1
fi
fi ;;
*) conf_path="$MODDIR/backup_settings.conf" ;;
esac
fi fi
echo "$(sed 's/true/1/g ; s/false/0/g' "$conf_path")">"$conf_path" [[ ! -f $conf_path ]] && echo "$conf_path遺失" && exit 2
. "$conf_path" &>/dev/null . "$conf_path" &>/dev/null
echoRgb() { echoRgb() {
#轉換echo顏色提高可讀性 #轉換echo顏色提高可讀性
@@ -247,7 +280,7 @@ export CLASSPATH="$tools_path/classes.dex:$tools_path/classes2.dex"
zstd_sha256sum="55cc57a3d079dd90e74d972c705c4f9389dd00a7175de148e21000eab01f7ed9" zstd_sha256sum="55cc57a3d079dd90e74d972c705c4f9389dd00a7175de148e21000eab01f7ed9"
tar_sha256sum="3c605b1e9eb8283555225dcad4a3bf1777ae39c5f19a2c8b8943140fd7555814" tar_sha256sum="3c605b1e9eb8283555225dcad4a3bf1777ae39c5f19a2c8b8943140fd7555814"
classesdex_sha256sum="09d0058763157b97d6ea2bf74bd7ec53089a9ddb496f089a159ea0027007bb94" classesdex_sha256sum="09d0058763157b97d6ea2bf74bd7ec53089a9ddb496f089a159ea0027007bb94"
classesdex2_sha256sum="1f74841cf94369a74d9f304cc396608efc758454350414379ca2ee4b6ffce61c" classesdex2_sha256sum="010c1e247a104ebe39cc218af9b4c9581a9ee0946851dea249d3f40050c15d79"
[[ $(sha256sum "$tools_path/zstd" | cut -d" " -f1) != $zstd_sha256sum ]] && echoRgb "zstd效驗失敗" "0" && exit 2 [[ $(sha256sum "$tools_path/zstd" | cut -d" " -f1) != $zstd_sha256sum ]] && echoRgb "zstd效驗失敗" "0" && exit 2
[[ $(sha256sum "$tools_path/tar" | cut -d" " -f1) != $tar_sha256sum ]] && echoRgb "tar效驗失敗" "0" && exit 2 [[ $(sha256sum "$tools_path/tar" | cut -d" " -f1) != $tar_sha256sum ]] && echoRgb "tar效驗失敗" "0" && exit 2
[[ $(sha256sum "$tools_path/classes.dex" | cut -d" " -f1) != $classesdex_sha256sum ]] && echoRgb "classes.dex效驗失敗" "0" && exit 2 [[ $(sha256sum "$tools_path/classes.dex" | cut -d" " -f1) != $classesdex_sha256sum ]] && echoRgb "classes.dex效驗失敗" "0" && exit 2
@@ -264,7 +297,6 @@ if [[ $(which toybox | egrep -o "system") != system ]]; then
fi fi
LANG="$(getprop "persist.sys.locale")" LANG="$(getprop "persist.sys.locale")"
#下列為自定義函數 #下列為自定義函數
alias getssaid="app_process /system/bin com.xayah.dex.SsaidUtil $@"
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 $@"
@@ -281,7 +313,10 @@ alias LS="toybox ls -Zd"
# *camera*) cmd package install-existing "$REPLY" ;; # *camera*) cmd package install-existing "$REPLY" ;;
# esac # esac
#done #done
Set_back() { Set_back_0() {
return 0
}
Set_back_1() {
return 1 return 1
} }
endtime() { endtime() {
@@ -323,7 +358,7 @@ isBoolean() {
elif [[ $1 = 0 ]]; then elif [[ $1 = 0 ]]; then
nsx=false nsx=false
else else
echoRgb "$MODDIR_NAME/backup_settings.conf $2=$1填寫錯誤正確值1or0" "0" echoRgb "$conf_path $2=$1填寫錯誤正確值1or0" "0"
exit 2 exit 2
fi fi
} }
@@ -331,9 +366,11 @@ echo_log() {
if [[ $? = 0 ]]; then if [[ $? = 0 ]]; then
echoRgb "$1成功" "1" echoRgb "$1成功" "1"
result=0 result=0
Set_back_0
else else
echoRgb "$1失敗,過世了" "0" echoRgb "$1失敗,過世了" "0"
result=1 result=1
Set_back_1
fi fi
} }
process_name() { process_name() {
@@ -369,7 +406,7 @@ else
UFS_MODEL="unknown" UFS_MODEL="unknown"
fi fi
fi fi
[[ $(egrep -w "$(getprop ro.product.model 2>/dev/null)" "$tools_path/Device_List" | awk -F'"' '{print $4}') != "" ]] && Device_name="$(egrep -w "$(getprop ro.product.model 2>/dev/null)" "$tools_path/Device_List" | awk -F'"' '{print $4}')" || Device_name="$(getprop ro.product.model 2>/dev/null)" [[ $(egrep -w "$(getprop ro.product.model 2>/dev/null)" "$tools_path/Device_List" | awk -F'"' '{print $4}') != "" ]] && Device_name="$(egrep -w "$(getprop ro.product.model 2>/dev/null)" "$tools_path/Device_List" | awk -F'"' '{print $4}' | head -1)" || Device_name="$(getprop ro.product.model 2>/dev/null)"
if [[ $(su -v 2>/dev/null) != "" ]]; then if [[ $(su -v 2>/dev/null) != "" ]]; then
Manager_version="$(su -v 2>/dev/null)" Manager_version="$(su -v 2>/dev/null)"
else else
@@ -404,7 +441,7 @@ else
RAMINFO="RAM:null" RAMINFO="RAM:null"
fi fi
echoRgb "---------------------SpeedBackup---------------------" echoRgb "---------------------SpeedBackup---------------------"
echoRgb "腳本路徑:$MODDIR\n -已開機:$(Show_boottime)\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 -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 ]]; then if [[ -f $MODDIR/app_details ]]; then
@@ -432,6 +469,7 @@ case $LANG in
esac esac
case $operate in case $operate in
backup|Restore|Restore2|Getlist|backup_media) backup|Restore|Restore2|Getlist|backup_media)
if [[ $backup_mode = "" ]]; then
if [[ $user = "" ]]; then if [[ $user = "" ]]; then
user_id="$(appinfo -listUsers)" user_id="$(appinfo -listUsers)"
if [[ $user_id != "" && $(appinfo -listUsers | wc -l) -gt 1 ]]; then if [[ $user_id != "" && $(appinfo -listUsers | wc -l) -gt 1 ]]; then
@@ -457,18 +495,27 @@ backup|Restore|Restore2|Getlist|backup_media)
fi fi
done done
fi fi
echoRgb "當前操作為用戶$user"
else else
user="0" user="0"
fi fi
fi fi
else
user="$(echo "${0%}" | sed 's/.*\/Backup_zstd_\([0-9]*\).*/\1/')"
fi
path="/data/media/$user/Android" path="/data/media/$user/Android"
path2="/data/user/$user" path2="/data/user/$user"
[[ ! -d $path2 ]] && echoRgb "$user分區不存在請將上方提示的用戶id按照需求填入\n -$MODDIR_NAME/backup_settings.conf配置項user=,一次只能填寫一個" "0" && exit 2 [[ ! -d $path2 ]] && echoRgb "$user分區不存在請將上方提示的用戶id按照需求填入\n -$conf_path配置項user=,一次只能填寫一個" "0" && exit 2
echoRgb "當前操作為用戶$user"
export USER_ID="$user" ;; export USER_ID="$user" ;;
esac esac
#因接收USER_ID環境變量問題故將函數放在此處
alias get_ssaid="app_process /system/bin com.xayah.dex.SsaidUtil get $USER_ID $@"
alias set_ssaid="app_process /system/bin com.xayah.dex.SsaidUtil set $USER_ID $@"
alias get_uid="app_process /system/bin com.xayah.dex.HiddenApiUtil getPackageUid $USER_ID $@"
alias get_Permissions="app_process /system/bin com.xayah.dex.HiddenApiUtil getRuntimePermissions $USER_ID $@"
alias Set_true_Permissions="app_process /system/bin com.xayah.dex.HiddenApiUtil grantRuntimePermission $USER_ID $@"
alias Set_false_Permissions="app_process /system/bin com.xayah.dex.HiddenApiUtil revokeRuntimePermission $USER_ID $@"
find_tools_path="$(find "$path_hierarchy"/* -maxdepth 1 -name "tools" -type d ! -path "$path_hierarchy/tools")" find_tools_path="$(find "$path_hierarchy"/* -maxdepth 1 -name "tools" -type d ! -path "$path_hierarchy/tools")"
find_conf_path="$(find "$path_hierarchy"/* -maxdepth 1 -name "backup_settings.conf" -type f ! -path "*Backup_*")"
Rename_script () { Rename_script () {
[[ $HT = "" ]] && HT=0 [[ $HT = "" ]] && HT=0
find "$path_hierarchy" -maxdepth 3 -name "*.sh" -type f -not -name "tools.sh" | sort | while read ; do find "$path_hierarchy" -maxdepth 3 -name "*.sh" -type f -not -name "tools.sh" | sort | while read ; do
@@ -516,14 +563,19 @@ touch_shell () {
case $1 in case $1 in
Restore2) Restore2)
MODDIR_Path='${0%/*/*}' MODDIR_Path='${0%/*/*}'
conf_path='${0%/*/*}/backup_settings.conf' ;; conf_path='${0%/*/*}/restore_settings.conf' ;;
backup) backup)
if [[ $3 = backup_mode ]]; then if [[ $3 = backup_mode ]]; then
MODDIR_Path='${0%/*/*/*}' MODDIR_Path='${0%/*/*/*}'
conf_path='${0%/*/*/*}/backup_settings.conf' conf_path='${0%/*/*/*}/backup_settings.conf'
fi ;; fi ;;
Restore|convert|dumpname|Restore3|check_file) conf_path='${0%/*}/restore_settings.conf' ;;
esac esac
[[ $4 != "" ]] && echo "if [ -f \"$MODDIR_Path/tools/tools.sh\" ]; then\n MODDIR=\"$MODDIR_Path\"\n . \"\${0%/*}/app_details\" &>/dev/null\n operate=\"$1\"\n $4\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" ||echo "if [ -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" if [[ $4 != "" ]]; then
[[ $Output_path = "" ]] && echo "if [ -f \"$MODDIR_Path/tools/tools.sh\" ]; then\n MODDIR=\"$MODDIR_Path\"\n . \"\${0%/*}/app_details\" &>/dev/null\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"
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"
fi
} }
update_script() { update_script() {
[[ $zipFile = "" ]] && zipFile="$(find "$MODDIR" -maxdepth 1 -name "*.zip" -type f 2>/dev/null)" [[ $zipFile = "" ]] && zipFile="$(find "$MODDIR" -maxdepth 1 -name "*.zip" -type f 2>/dev/null)"
@@ -552,11 +604,8 @@ update_script() {
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
[[ $find_conf_path != "" ]] && update_backup_settings_conf>"$find_conf_path"
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/backup_settings.conf" -o "$path_hierarchy/backup_settings.conf"
echo_log "$path_hierarchy/backup_settings.conf翻譯"
ts -f "$path_hierarchy/tools/Device_List" -o "$path_hierarchy/tools/Device_List" ts -f "$path_hierarchy/tools/Device_List" -o "$path_hierarchy/tools/Device_List"
echo_log "$path_hierarchy/tools/Device_List翻譯" echo_log "$path_hierarchy/tools/Device_List翻譯"
ts -f "$path_hierarchy/tools/tools.sh" -o "$path_hierarchy/tools/tools.sh" && sed -i "s/shell_language=\"$shell_language\"/shell_language=\"$Script_target_language\"/g" "$path_hierarchy/tools/tools.sh" ts -f "$path_hierarchy/tools/tools.sh" -o "$path_hierarchy/tools/tools.sh" && sed -i "s/shell_language=\"$shell_language\"/shell_language=\"$Script_target_language\"/g" "$path_hierarchy/tools/tools.sh"
@@ -566,10 +615,6 @@ update_script() {
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%/*}"
if [[ $shell_language != $Script_target_language ]]; then
ts -f "${find_tools_path%/*}/backup_settings.conf" -o "${find_tools_path%/*}/backup_settings.conf"
echo_log "${find_tools_path%/*}/backup_settings.conf翻譯"
fi
fi fi
Rename_script Rename_script
if [[ $Output_path != "" ]]; then if [[ $Output_path != "" ]]; then
@@ -656,17 +701,7 @@ if [[ $path_hierarchy != "" && $Script_target_language != "" ]]; then
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翻譯"
if [[ $K = 1 ]]; then [[ $K = 1 ]] && Rename_script
Rename_script
if [[ -d $path_hierarchy/tools ]]; then
if [[ -d $find_tools_path && $find_tools_path != $path_hierarchy/tools ]]; then
ts -f "${find_tools_path%/*}/backup_settings.conf" -o "${find_tools_path%/*}/backup_settings.conf"
echo_log "${find_tools_path%/*}/backup_settings.conf翻譯"
fi
ts -f "$path_hierarchy/backup_settings.conf" -o "$path_hierarchy/backup_settings.conf"
echo_log "$path_hierarchy/backup_settings.conf翻譯"
fi
fi
else else
echoRgb "$REPLY ts進程出現錯誤" "0" echoRgb "$REPLY ts進程出現錯誤" "0"
fi fi
@@ -715,7 +750,7 @@ if [[ $json != "" ]]; then
zipFile="$MODDIR/update.zip" zipFile="$MODDIR/update.zip"
fi fi
else else
echoRgb "$MODDIR_NAME/backup_settings.conf內update選項為0忽略更新僅提示更新" "0" echoRgb "$conf_path內update選項為0忽略更新僅提示更新" "0"
fi fi
fi fi
fi fi
@@ -815,9 +850,10 @@ size () {
} }
#分區佔用信息 #分區佔用信息
partition_info() { partition_info() {
Occupation_status="$(df -h "${1%/*}" | sed -n 's|% /.*|%|p' | awk '{print $(NF-1),$(NF)}')" Occupation_status="$(df "${1%/*}" | sed -n 's|% /.*|%|p' | awk '{print $(NF-1)}')"
lxj="$(echo "$Occupation_status" | awk '{print $2}' | sed 's/%//g')" echo " -$2字節:$Filesize 剩餘字節:$Occupation_status"
[[ $lxj -ge 97 ]] && echoRgb "$hx空間不足,達到$lxj%" "0" && exit 2 [[ $Filesize -gt $Occupation_status ]] && echoRgb "$2備份大小將超出rom可用大小" "0" && exit 2
Occupation_status="$(df -h "${Backup%/*}" | sed -n 's|% /.*|%|p' | awk '{print $(NF-1),$(NF)}')"
} }
kill_app() { kill_app() {
if [[ $name2 != bin.mt.plus && $name2 != com.termux && $name2 != bin.mt.plus.canary ]]; then if [[ $name2 != bin.mt.plus && $name2 != com.termux && $name2 != bin.mt.plus.canary ]]; then
@@ -881,7 +917,9 @@ Backup_apk() {
add_app2="$(echo "$add_app\n$add_app2")" add_app2="$(echo "$add_app\n$add_app2")"
echoRgb "版本:$apk_version2" echoRgb "版本:$apk_version2"
fi fi
partition_info "$Backup" unset Filesize
Filesize="$(du -s "$apk_path2" | awk '{print $1}')"
partition_info "$Backup" "$name2 apk"
#備份apk #備份apk
echoRgb "$1" echoRgb "$1"
echo "$apk_path" | sed -e '/^$/d' | while read; do echo "$apk_path" | sed -e '/^$/d' | while read; do
@@ -959,7 +997,7 @@ Backup_data() {
;; ;;
esac esac
if [[ -d $data_path ]]; then if [[ -d $data_path ]]; then
unset Filesize m_size k_size get_size ssaid unset Filesize m_size k_size get_size ssaid Get_Permissions
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'}')" k_size="$(awk 'BEGIN{printf "%.2f\n", "'$Filesize'"'*1024'/'1024'}')"
m_size="$(awk 'BEGIN{printf "%.2f\n", "'$k_size'"/'1024'}')" m_size="$(awk 'BEGIN{printf "%.2f\n", "'$k_size'"/'1024'}')"
@@ -970,14 +1008,23 @@ Backup_data() {
fi fi
case $1 in case $1 in
user) user)
ssaid="$(getssaid get "$user" "$name2")" ssaid="$(get_ssaid "$name2")"
if [[ $ssaid != null && $ssaid != $Ssaid ]]; then if [[ $ssaid != null && $ssaid != $Ssaid ]]; then
if [[ $Ssaid != "" ]]; then if [[ $Ssaid != "" ]]; then
echo "$(sed "s/$Ssaid/$ssaid/g" "$app_details")">"$app_details" echo "$(sed "s/$Ssaid/$ssaid/g" "$app_details")">"$app_details"
else else
echo "Ssaid=\"$ssaid\"" >>"$app_details" echo "Ssaid=\"$ssaid\"" >>"$app_details"
fi fi
SSAID_apk="$(echo "$name1 \"$name2\"")"
SSAID_apk2="$(echo "$SSAID_apk\n$SSAID_apk2")"
echo_log "備份ssaid" echo_log "備份ssaid"
fi
Get_Permissions="$(get_Permissions "$name2")"
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 esac
if [[ $Size != $Filesize ]]; then if [[ $Size != $Filesize ]]; then
@@ -985,7 +1032,7 @@ Backup_data() {
case $1 in case $1 in
user|data|obb) kill_app ;; user|data|obb) kill_app ;;
esac esac
partition_info "$Backup" partition_info "$Backup" "$1"
echoRgb "備份$1數據($get_size)" echoRgb "備份$1數據($get_size)"
case $1 in case $1 in
user) user)
@@ -1036,7 +1083,6 @@ Backup_data() {
else else
[[ -f $data_path ]] && echoRgb "$1是一個文件 不支持備份" "0" || echoRgb "$1數據不存在跳過備份" "2" [[ -f $data_path ]] && echoRgb "$1是一個文件 不支持備份" "0" || echoRgb "$1數據不存在跳過備份" "2"
fi fi
partition_info "$Backup"
} }
Release_data() { Release_data() {
tar_path="$1" tar_path="$1"
@@ -1086,22 +1132,33 @@ Release_data() {
tar) [[ ${MODDIR_NAME##*/} = Media ]] && tar --checkpoint-action="ttyout=%T\r" -axf "$tar_path" -C "$FILE_PATH" || tar --checkpoint-action="ttyout=%T\r" -amxf "$tar_path" -C "$FILE_PATH" ;; tar) [[ ${MODDIR_NAME##*/} = Media ]] && tar --checkpoint-action="ttyout=%T\r" -axf "$tar_path" -C "$FILE_PATH" || tar --checkpoint-action="ttyout=%T\r" -amxf "$tar_path" -C "$FILE_PATH" ;;
esac esac
else else
Set_back Set_back_1
fi fi
echo_log "解壓縮${FILE_NAME##*.}" echo_log "解壓縮${FILE_NAME##*.}"
if [[ $result = 0 ]]; then if [[ $result = 0 ]]; then
case $FILE_NAME2 in case $FILE_NAME2 in
user|data|obb) user|data|obb)
if [[ -f /config/sdcardfs/$name2/appid ]]; then if [[ $G = "" ]]; then
G="$(cat "/config/sdcardfs/$name2/appid")" if [[ $(get_uid "$name2" 2>/dev/null) != "" ]]; then
G="$(get_uid "$name2" 2>/dev/null)"
else else
G="$(dumpsys package "$name2" 2>/dev/null | awk -F'=' '/userId/ && !/userId=0/{print $2}' | head -1)" G="$(dumpsys package "$name2" 2>/dev/null | awk -F'uid=' '{print $2}' | egrep -o '[0-9]+' | head -n 1)"
[[ $G = "" ]] && G="$(pm list packages -U --user "$user" | egrep -w "$name2" | awk -F'uid:' '{print $2}' | awk '{print $1}' | head -n 1)" [[ $(echo "$G" | egrep -o '[0-9]+') = "" ]] && G="$(pm list packages -U --user "$user" | egrep -w "$name2" | awk -F'uid:' '{print $2}' | awk '{print $1}' | head -n 1)"
fi
fi fi
G="$(echo "$G" | egrep -o '[0-9]+')" G="$(echo "$G" | egrep -o '[0-9]+')"
if [[ $G != "" ]]; then if [[ $G != "" ]]; then
if [[ -d $X ]]; then if [[ -d $X ]]; then
[[ $user = 0 ]] && uid="$G:$G" || uid="$user$G:$user$G" case ${#G} in
5)
if [[ $user = 0 ]]; then
uid="$G:$G"
else
uid="$user$G:$user$G"
fi ;;
6|7|8|9|10)
uid="$G:$G" ;;
esac
if [[ $FILE_NAME2 = user ]]; then if [[ $FILE_NAME2 = user ]]; then
echoRgb "路徑:$X" echoRgb "路徑:$X"
chown -hR "$uid" "$X/" chown -hR "$uid" "$X/"
@@ -1132,7 +1189,7 @@ Release_data() {
;; ;;
*) *)
echoRgb "$FILE_NAME 壓縮包不支持解壓縮" "0" echoRgb "$FILE_NAME 壓縮包不支持解壓縮" "0"
Set_back Set_back_1
;; ;;
esac esac
rm -rf "$TMPDIR"/* rm -rf "$TMPDIR"/*
@@ -1146,7 +1203,7 @@ installapk() {
tar) tar --checkpoint-action="ttyout=%T\r" -xmpf "$apkfile" -C "$TMPDIR" ;; tar) tar --checkpoint-action="ttyout=%T\r" -xmpf "$apkfile" -C "$TMPDIR" ;;
*) *)
echoRgb "${apkfile##*/} 壓縮包不支持解壓縮" "0" echoRgb "${apkfile##*/} 壓縮包不支持解壓縮" "0"
Set_back Set_back_1
;; ;;
esac esac
echo_log "${apkfile##*/}解壓縮" && [[ -f $Backup_folder/nmsl.apk ]] && cp -r "$Backup_folder/nmsl.apk" "$TMPDIR" echo_log "${apkfile##*/}解壓縮" && [[ -f $Backup_folder/nmsl.apk ]] && cp -r "$Backup_folder/nmsl.apk" "$TMPDIR"
@@ -1217,7 +1274,7 @@ get_name(){
tar) tar -xmpf "$REPLY" -C "$TMPDIR" --wildcards --no-anchored 'base.apk' ;; tar) tar -xmpf "$REPLY" -C "$TMPDIR" --wildcards --no-anchored 'base.apk' ;;
*) *)
echoRgb "${REPLY##*/} 壓縮包不支持解壓縮" "0" echoRgb "${REPLY##*/} 壓縮包不支持解壓縮" "0"
Set_back Set_back_1
;; ;;
esac esac
echo_log "${REPLY##*/}解壓縮" echo_log "${REPLY##*/}解壓縮"
@@ -1314,6 +1371,12 @@ Set_screen_pause_seconds () {
fi fi
fi fi
} }
restore_permissions () {
echoRgb "恢復權限"
appops reset --user "$user" "$name2" &>/dev/null
[[ $(echo "$Permissions" | grep "true$") != "" ]] && Set_true_Permissions "$name2" "$(echo "$Permissions" | grep "true$" | sed 's/ true$//' | xargs)" &>/dev/null
[[ $(echo "$Permissions" | grep "false$") != "" ]] && Set_false_Permissions "$name2" "$(echo "$Permissions" | grep "false$" | sed 's/ false$//' | xargs)" &>/dev/null
}
case $operate in case $operate in
backup) backup)
kill_Serve kill_Serve
@@ -1380,9 +1443,9 @@ backup)
echoRgb "配置詳細:\n -壓縮方式:$Compression_method\n -音量鍵確認:$Lo\n -更新:$update\n -已卸載應用檢查:$delete_folder\n -卸載應用默認操作(true刪除false移動):$default_behavior\n -默認使用usb:$USBdefault\n -備份外部數據:$Backup_obb_data\n -備份user數據:$Backup_user_data\n -自定義目錄備份:$backup_media\n -黑名單模式:$blacklist_mode" echoRgb "配置詳細:\n -壓縮方式:$Compression_method\n -音量鍵確認:$Lo\n -更新:$update\n -已卸載應用檢查:$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="$(sed -e '/^$/d' "$txt" 2>/dev/null | sed -n '$=')" C="$(sed -e '/^$/d' "$txt" 2>/dev/null | sed -n '$=')"
[[ $user = 0 ]] && Apk_info="$(appinfo -sort-i -o pn -pn $system -3 | 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 2>/dev/null | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)" || Apk_info="$(appinfo -sort-i -o pn -pn $system $(pm list packages -3 --user "$user" | cut -f2 -d ':') 2>/dev/null | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)"
[[ $Apk_info = "" ]] && echoRgb "appinfo輸出失敗" "0" && exit 2 [[ $Apk_info = "" ]] && echoRgb "appinfo輸出失敗" "0" && exit 2
if [[ -d $Backup ]]; then if [[ -d $Backup && $backup_mode = "" ]]; then
if [[ $delete_folder = true ]]; then if [[ $delete_folder = true ]]; then
find "$Backup" -maxdepth 1 -type d 2>/dev/null | sort | while read; do find "$Backup" -maxdepth 1 -type d 2>/dev/null | sort | while read; do
if [[ -f $REPLY/app_details ]]; then if [[ -f $REPLY/app_details ]]; then
@@ -1404,7 +1467,7 @@ backup)
[[ ! -f $Backup/被卸載的應用/轉換資料夾名稱.sh ]] && touch_shell "convert" "$Backup/被卸載的應用/轉換資料夾名稱.sh" [[ ! -f $Backup/被卸載的應用/轉換資料夾名稱.sh ]] && touch_shell "convert" "$Backup/被卸載的應用/轉換資料夾名稱.sh"
[[ ! -f $Backup/被卸載的應用/壓縮檔完整性檢查.sh ]] && touch_shell "check_file" "$Backup/被卸載的應用/壓縮檔完整性檢查.sh" [[ ! -f $Backup/被卸載的應用/壓縮檔完整性檢查.sh ]] && touch_shell "check_file" "$Backup/被卸載的應用/壓縮檔完整性檢查.sh"
[[ ! -f $Backup/被卸載的應用/終止腳本.sh ]] && cp -r "$MODDIR/終止腳本.sh" "$Backup/被卸載的應用/終止腳本.sh" [[ ! -f $Backup/被卸載的應用/終止腳本.sh ]] && cp -r "$MODDIR/終止腳本.sh" "$Backup/被卸載的應用/終止腳本.sh"
[[ ! -f $Backup/被卸載的應用/backup_settings.conf ]] && echo "#1開啟0關閉\n\n#是否在每次執行恢復腳本時使用音量鍵詢問如下需求\n#如果是那下面兩項項設置就被忽略,改為音量鍵選擇\nLo=$Lo\n\n#腳本檢測更新後進行更新?\nupdate=$update\n\n#主色\nrgb_a=$rgb_a\n#輔色\nrgb_b=$rgb_b\nrgb_c=$rgb_c">"$Backup/backup_settings.conf" && echo "$(sed 's/true/1/g ; s/false/0/g' "$Backup/backup_settings.conf")">"$Backup/被卸載的應用/backup_settings.conf" && echo "$(sed 's/true/1/g ; s/false/0/g' "$Backup/backup_settings.conf")">"$Backup/被卸載的應用/backup_settings.conf" [[ ! -f $Backup/被卸載的應用/restore_settings.conf ]] && update_Restore_settings_conf>"$Backup/被卸載的應用/restore_settings.conf"
txt2="$Backup/被卸載的應用/appList.txt" txt2="$Backup/被卸載的應用/appList.txt"
[[ ! -f $txt2 ]] && echo "#不需要恢復還原的應用請在開頭注釋# 比如#xxxxxxxx 酷安">"$txt2" [[ ! -f $txt2 ]] && echo "#不需要恢復還原的應用請在開頭注釋# 比如#xxxxxxxx 酷安">"$txt2"
echo "${REPLY##*/} $PackageName">>"$txt2" echo "${REPLY##*/} $PackageName">>"$txt2"
@@ -1416,6 +1479,7 @@ backup)
done done
fi fi
fi fi
[[ $backup_mode = "" ]] && {
echoRgb "檢查備份列表中是否存在已經卸載應用" "3" echoRgb "檢查備份列表中是否存在已經卸載應用" "3"
while [[ $D -le $C ]]; do while [[ $D -le $C ]]; do
name1="$(sed -e '/^$/d' "$txt" 2>/dev/null | sed -n "${D}p" | awk '{print $1}')" name1="$(sed -e '/^$/d' "$txt" 2>/dev/null | sed -n "${D}p" | awk '{print $1}')"
@@ -1435,10 +1499,11 @@ backup)
let D++ let D++
fi fi
done done
}
[[ $Tmplist != "" ]] && echo "$Tmplist" | sed -e '/^$/d' | sort>"$txt" [[ $Tmplist != "" ]] && echo "$Tmplist" | sed -e '/^$/d' | sort>"$txt"
r="$(grep -v "#" "$txt" 2>/dev/null | sed -e '/^$/d' | sed -n '$=')" r="$(grep -v "#" "$txt" 2>/dev/null | sed -e '/^$/d' | sed -n '$=')"
[[ $backup_mode != "" ]] && r=1 [[ $backup_mode != "" ]] && r=1
[[ $r = "" ]] && echoRgb "$MODDIR_NAME/appList.txt是空的或是包名被注釋備份個鬼\n -檢查是否注釋亦或者執行$MODDIR_NAME/生成應用列表.sh" "0" && exit 1 [[ $r = "" && $backup_mode = "" ]] && echoRgb "$MODDIR_NAME/appList.txt是空的或是包名被注釋備份個鬼\n -檢查是否注釋亦或者執行$MODDIR_NAME/生成應用列表.sh" "0" && exit 1
[[ $Backup_user_data = false ]] && echoRgb "當前$MODDIR_NAME/backup_settings.conf的\n -Backup_user_data=0將不備份user數據" "0" [[ $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"
[[ $backup_media = false ]] && echoRgb "當前$MODDIR_NAME/backup_settings.conf的\n -backup_media=0將不備份自定義資料夾" "0" [[ $backup_media = false ]] && echoRgb "當前$MODDIR_NAME/backup_settings.conf的\n -backup_media=0將不備份自定義資料夾" "0"
@@ -1452,7 +1517,7 @@ backup)
[[ ! -f $Backup/壓縮檔完整性檢查.sh ]] && touch_shell "check_file" "$Backup/壓縮檔完整性檢查.sh" [[ ! -f $Backup/壓縮檔完整性檢查.sh ]] && touch_shell "check_file" "$Backup/壓縮檔完整性檢查.sh"
[[ ! -d $Backup/modules ]] && mkdir -p "$Backup/modules" && echoRgb "$Backup/modules已創建成功\n -請按需要自行放置需要恢復時刷入的模塊在內將自動批量刷入" "1" [[ ! -d $Backup/modules ]] && mkdir -p "$Backup/modules" && echoRgb "$Backup/modules已創建成功\n -請按需要自行放置需要恢復時刷入的模塊在內將自動批量刷入" "1"
[[ -d $Backup/Media ]] && touch_shell "Restore3" "$Backup/恢復自定義資料夾.sh" [[ -d $Backup/Media ]] && touch_shell "Restore3" "$Backup/恢復自定義資料夾.sh"
[[ ! -f $Backup/backup_settings.conf ]] && echo "#1開啟0關閉\n\n#是否在每次執行恢復腳本時使用音量鍵詢問如下需求\n#如果是那下面兩項項設置就被忽略,改為音量鍵選擇\nLo=$Lo\n\n#使用者\nuser=\n\n#腳本檢測更新後進行更新?\nupdate=$update\n\n#主色\nrgb_a=$rgb_a\n#輔色\nrgb_b=$rgb_b\nrgb_c=$rgb_c">"$Backup/backup_settings.conf" && echo "$(sed 's/true/1/g ; s/false/0/g' "$Backup/backup_settings.conf")">"$Backup/backup_settings.conf" [[ ! -f $Backup/restore_settings.conf ]] && update_Restore_settings_conf>"$Backup/restore_settings.conf"
if [[ -d $Backup/tools ]]; then if [[ -d $Backup/tools ]]; then
find "$Backup/tools" -maxdepth 1 -type f | while read; do find "$Backup/tools" -maxdepth 1 -type f | while read; do
Tools_FILE_NAME="${REPLY##*/}" Tools_FILE_NAME="${REPLY##*/}"
@@ -1479,8 +1544,6 @@ backup)
#獲取預設鍵盤 #獲取預設鍵盤
keyboard="$(settings get secure default_input_method 2>/dev/null)" keyboard="$(settings get secure default_input_method 2>/dev/null)"
Set_screen_pause_seconds on Set_screen_pause_seconds on
#假裝息屏
#Operation_screen off
[[ $(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
{ {
while [[ $i -le $r ]]; do while [[ $i -le $r ]]; do
@@ -1500,7 +1563,7 @@ backup)
if [[ -d $apk_path2 ]]; then if [[ -d $apk_path2 ]]; then
echoRgb "備份第$i/$r個應用 剩下$((r - i))" "3" echoRgb "備份第$i/$r個應用 剩下$((r - i))" "3"
echoRgb "備份 $name1 \"$name2\"" "2" echoRgb "備份 $name1 \"$name2\"" "2"
unset Backup_folder ChineseName PackageName nobackup No_backupdata result apk_version versionName apk_version2 apk_version3 zsize zmediapath Size data_path userSize dataSize obbSize Ssaid unset Backup_folder ChineseName PackageName nobackup No_backupdata result apk_version versionName apk_version2 apk_version3 zsize zmediapath Size data_path userSize dataSize obbSize Ssaid Permissions
if [[ $name1 = !* || $name1 = * ]]; then if [[ $name1 = !* || $name1 = * ]]; then
name1="$(echo "$name1" | sed 's/!//g ; s///g')" name1="$(echo "$name1" | sed 's/!//g ; s///g')"
echoRgb "跳過備份所有數據" "0" echoRgb "跳過備份所有數據" "0"
@@ -1512,13 +1575,17 @@ backup)
fi fi
Backup_folder="$Backup/$name1" Backup_folder="$Backup/$name1"
app_details="$Backup_folder/app_details" app_details="$Backup_folder/app_details"
app_Permissions="$Backup_folder/Permissions"
if [[ -f $app_details ]]; then if [[ -f $app_details ]]; then
. "$app_details" &>/dev/null . "$app_details" &>/dev/null
[[ -f $app_Permissions ]] && . "$app_Permissions"
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 userSize dataSize obbSize Ssaid unset Backup_folder ChineseName PackageName nobackup No_backupdata result apk_version versionName apk_version2 apk_version3 zsize zmediapath Size data_path userSize dataSize obbSize Ssaid Permissions
Backup_folder="$Backup/${name1}[${name2}]" Backup_folder="$Backup/${name1}[${name2}]"
app_details="$Backup_folder/app_details" app_details="$Backup_folder/app_details"
app_Permissions="$Backup_folder/Permissions"
[[ -f $app_details ]] && . "$app_details" &>/dev/null [[ -f $app_details ]] && . "$app_details" &>/dev/null
[[ -f $app_Permissions ]] && . "$app_Permissions"
fi fi
fi fi
[[ $hx = USB && $PT = "" ]] && echoRgb "隨身碟意外斷開 請檢查穩定性" "0" && exit 1 [[ $hx = USB && $PT = "" ]] && echoRgb "隨身碟意外斷開 請檢查穩定性" "0" && exit 1
@@ -1548,7 +1615,6 @@ backup)
[[ ! -f $Backup_folder/recover.sh ]] && touch_shell "Restore2" "$Backup_folder/recover.sh" [[ ! -f $Backup_folder/recover.sh ]] && touch_shell "Restore2" "$Backup_folder/recover.sh"
[[ ! -f $Backup_folder/backup.sh ]] && touch_shell "backup" "$Backup_folder/backup.sh" "backup_mode" "backup_mode=\"1\"" [[ ! -f $Backup_folder/backup.sh ]] && touch_shell "backup" "$Backup_folder/backup.sh" "backup_mode" "backup_mode=\"1\""
endtime 2 "$name1 備份" "3" endtime 2 "$name1 備份" "3"
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')"
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"
rgb_d="$rgb_a" rgb_d="$rgb_a"
@@ -1578,7 +1644,7 @@ backup)
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" "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"
if [[ $backup_media = true && $backup_mode = "" ]]; then if [[ $backup_media = true && $backup_mode = "" ]]; then
A=1 A=1
@@ -1616,6 +1682,7 @@ backup)
#打開應用 #打開應用
i=1 i=1
am_start="$(echo "$am_start" | xargs | sed 's/ /\n/g')" am_start="$(echo "$am_start" | xargs | sed 's/ /\n/g')"
if [[ $backup_mode = "" ]]; then
while [[ $i -le $r ]]; do while [[ $i -le $r ]]; do
unset pkg name1 unset pkg name1
pkg="$(grep -v "#" "$txt" 2>/dev/null | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $2}')" pkg="$(grep -v "#" "$txt" 2>/dev/null | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $2}')"
@@ -1626,12 +1693,18 @@ backup)
fi fi
let i++ let i++
done done
else
if [[ $(echo "$am_start" | egrep -wo "$PackageName") = $PackageName ]]; then
am start -n "$(appinfo -o sa -pn "$PackageName" 2>/dev/null)" &>/dev/null
echo_log "啟動$name1"
fi
fi
Set_screen_pause_seconds off Set_screen_pause_seconds off
#Operation_screen on
restore_freeze restore_freeze
rm -rf "$TMPDIR/scriptTMP" rm -rf "$TMPDIR/scriptTMP"
Calculate_size "$Backup" Calculate_size "$Backup"
echoRgb "批量備份完成" echoRgb "批量備份完成"
echoRgb "備份結束時間$(date +"%Y-%m-%d %H:%M:%S")"
starttime1="$TIME" starttime1="$TIME"
endtime 1 "批量備份開始到結束" endtime 1 "批量備份開始到結束"
} & } &
@@ -1711,10 +1784,12 @@ Restore|Restore2)
r=1 r=1
Backup_folder="$MODDIR" Backup_folder="$MODDIR"
app_details="$Backup_folder/app_details" app_details="$Backup_folder/app_details"
app_Permissions="$Backup_folder/Permissions"
if [[ ! -f $app_details ]]; then if [[ ! -f $app_details ]]; then
echoRgb "$app_details遺失,無法獲取包名" "0" && exit 1 echoRgb "$app_details遺失,無法獲取包名" "0" && exit 1
else else
. "$app_details" &>/dev/null . "$app_details" &>/dev/null
[[ -f $app_Permissions ]] && . "$app_Permissions" &>/dev/null
fi fi
name1="$ChineseName" name1="$ChineseName"
[[ $name1 = "" ]] && name1="${Backup_folder##*/}" [[ $name1 = "" ]] && name1="${Backup_folder##*/}"
@@ -1737,7 +1812,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}')"
unset No_backupdata apk_version 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')"
echoRgb "跳過恢復$name1 所有數據" "0" echoRgb "跳過恢復$name1 所有數據" "0"
@@ -1745,6 +1820,8 @@ Restore|Restore2)
fi fi
Backup_folder="$MODDIR/$name1" Backup_folder="$MODDIR/$name1"
[[ -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
app_Permissions="$Backup_folder/Permissions"
[[ -f $app_Permissions ]] && . "$app_Permissions" &>/dev/null
[[ $name2 = "" ]] && echoRgb "應用包名獲取失敗" "0" && exit 1 [[ $name2 = "" ]] && echoRgb "應用包名獲取失敗" "0" && exit 1
fi fi
if [[ -d $Backup_folder ]]; then if [[ -d $Backup_folder ]]; then
@@ -1753,16 +1830,7 @@ Restore|Restore2)
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 [[ $apk_version -gt $(pm list packages --show-versioncode --user "$user" "$name2" 2>/dev/null | cut -f3 -d ':' | head -n 1) ]] && installapk && [[ $? = 0 ]] && echoRgb "版本提升$(pm list packages --show-versioncode --user "$user" "$name2" 2>/dev/null | cut -f3 -d ':' | head -n 1)>$apk_version" "1"
installapk
[[ $? = 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
if [[ $(pm path --user "$user" "$name2" 2>/dev/null) != "" ]]; then if [[ $(pm path --user "$user" "$name2" 2>/dev/null) != "" ]]; then
if [[ $No_backupdata = "" ]]; then if [[ $No_backupdata = "" ]]; then
@@ -1770,10 +1838,13 @@ Restore|Restore2)
find "$Backup_folder" -maxdepth 1 ! -name "apk.*" -name "*.tar*" -type f 2>/dev/null | sort | while read; do find "$Backup_folder" -maxdepth 1 ! -name "apk.*" -name "*.tar*" -type f 2>/dev/null | sort | while read; do
Release_data "$REPLY" Release_data "$REPLY"
done done
unset G
Set_service
restore_permissions
if [[ $Ssaid != "" ]]; then if [[ $Ssaid != "" ]]; then
if [[ $(getssaid get "$user" "$name2") != $Ssaid ]]; then if [[ $(get_ssaid "$name2") != $Ssaid ]]; then
getssaid set "$user" "$name2" "$Ssaid" set_ssaid "$name2" "$Ssaid"
if [[ $(getssaid get "$user" "$name2") = $Ssaid ]]; then if [[ $(get_ssaid "$name2") = $Ssaid ]]; then
echoRgb "SSAID恢復成功" "1" echoRgb "SSAID恢復成功" "1"
SSAID_Package="$(echo "$name1 \"$name2\"")" SSAID_Package="$(echo "$name1 \"$name2\"")"
SSAID_Package2="$(echo "$SSAID_Package\n$SSAID_Package2")" SSAID_Package2="$(echo "$SSAID_Package\n$SSAID_Package2")"
@@ -1785,7 +1856,6 @@ Restore|Restore2)
fi fi
unset Ssaid unset Ssaid
fi fi
Set_service
fi fi
else else
[[ $No_backupdata = "" ]]&& echoRgb "$name1沒有安裝無法恢復數據" "0" [[ $No_backupdata = "" ]]&& echoRgb "$name1沒有安裝無法恢復數據" "0"
@@ -1908,7 +1978,7 @@ Getlist)
starttime1="$(date -u "+%s")" starttime1="$(date -u "+%s")"
echoRgb "提示! 腳本會屏蔽預裝應用" "0" echoRgb "提示! 腳本會屏蔽預裝應用" "0"
xposed_name="$(appinfo -o pn -xm)" xposed_name="$(appinfo -o pn -xm)"
Apk_info="$(appinfo -sort-i -d " " -o addXpTag:'Xposed: ',anwb,pn -pn $system -3 | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)" Apk_info="$(appinfo -sort-i -d " " -o addXpTag:'Xposed: ',anwb,pn -pn $system -3 2>/dev/null | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)"
[[ $Apk_info = "" ]] && { [[ $Apk_info = "" ]] && {
echoRgb "appinfo輸出失敗,請截圖畫面回報作者" "0" echoRgb "appinfo輸出失敗,請截圖畫面回報作者" "0"
appinfo -sort-i -d " " -o addXpTag:'Xposed: ',anwb,pn -pn $system -3 | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u appinfo -sort-i -d " " -o addXpTag:'Xposed: ',anwb,pn -pn $system -3 | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u
@@ -1982,7 +2052,7 @@ Getlist)
echo "$REPLY2">>"$nametxt" echo "$REPLY2">>"$nametxt"
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" rm -rf "$nametxt"
echoRgb "\n -輸出異常 請將$MODDIR_NAME/backup_settings.conf中的debug_list=\"0\"改為1或是重新執行本腳本" "0" echoRgb "\n -輸出異常 請將$conf_path中的debug_list=\"0\"改為1或是重新執行本腳本" "0"
exit exit
fi fi
[[ $tmp != "" ]] && echoRgb "\n -第三方apk數量=\"$Apk_Quantity\"\n -已過濾=\"$rc\"\n -xposed=\"$rd\"\n -存在列表中=\"$Q\"\n -輸出=\"$i\"" [[ $tmp != "" ]] && echoRgb "\n -第三方apk數量=\"$Apk_Quantity\"\n -已過濾=\"$rc\"\n -xposed=\"$rd\"\n -存在列表中=\"$Q\"\n -輸出=\"$i\""
@@ -2030,7 +2100,7 @@ backup_media)
[[ ! -f $Backup/轉換資料夾名稱.sh ]] && touch_shell "convert" "$Backup/轉換資料夾名稱.sh" [[ ! -f $Backup/轉換資料夾名稱.sh ]] && touch_shell "convert" "$Backup/轉換資料夾名稱.sh"
[[ ! -f $Backup/壓縮檔完整性檢查.sh ]] && touch_shell "check_file" "$Backup/壓縮檔完整性檢查.sh" [[ ! -f $Backup/壓縮檔完整性檢查.sh ]] && touch_shell "check_file" "$Backup/壓縮檔完整性檢查.sh"
[[ ! -d $Backup/tools ]] && cp -r "$tools_path" "$Backup" [[ ! -d $Backup/tools ]] && cp -r "$tools_path" "$Backup"
[[ ! -f $Backup/backup_settings.conf ]] && echo "#1開啟0關閉\n\n#是否在每次執行恢復腳本時使用音量鍵詢問如下需求\n#如果是那下面兩項項設置就被忽略,改為音量鍵選擇\nLo=$Lo\n\n#使用者\nuser=\n\n#腳本檢測更新後進行更新?\nupdate=$update\n\n#主色\nrgb_a=$rgb_a\n#輔色\nrgb_b=$rgb_b\nrgb_c=$rgb_c">"$Backup/backup_settings.conf" && echo "$(sed 's/true/1/g ; s/false/0/g' "$Backup/backup_settings.conf")">"$Backup/backup_settings.conf" [[ ! -f $Backup/restore_settings.conf ]] && update_Restore_settings_conf>"$Backup/restore_settings.conf"
app_details="$Backup_folder/app_details" app_details="$Backup_folder/app_details"
filesize="$(du -s "$Backup_folder" | awk '{print $1}')" filesize="$(du -s "$Backup_folder" | awk '{print $1}')"
[[ -f $app_details ]] && . "$app_details" &>/dev/null || touch "$app_details" [[ -f $app_details ]] && . "$app_details" &>/dev/null || touch "$app_details"

View File

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

View File

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

View File

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