From 5c838c1df94e07b288b9a5653d289c3552de9bb9 Mon Sep 17 00:00:00 2001 From: Yawasau <229953100a@gmail.com> Date: Sun, 14 Apr 2024 15:16:19 +0800 Subject: [PATCH] bugfix --- tools/tools.sh | 180 ++++++++++++++++++++++++++++--------------------- 1 file changed, 102 insertions(+), 78 deletions(-) diff --git a/tools/tools.sh b/tools/tools.sh index 8d45d4d..28ffe1e 100644 --- a/tools/tools.sh +++ b/tools/tools.sh @@ -433,12 +433,12 @@ fi Socname="$(getprop ro.soc.model)" if [[ $Socname != "" ]]; then if [[ -f $tools_path/soc.json ]]; then - cat "$tools_path/soc.json" | jq -r --arg device "$Socname" '.[$device] | "處理器:\(.VENDOR) \(.NAME)"' &>/dev/null + jq -r --arg device "$Socname" '.[$device] | "處理器:\(.VENDOR) \(.NAME)"' $tools_path/soc.json &>/dev/null if [[ $? = 0 ]]; then - DEVICE_NAME="$(cat "$tools_path/soc.json" | jq -r --arg device "$Socname" '.[$device] | "處理器:\(.VENDOR) \(.NAME)"' 2>/dev/null)" - cat "$tools_path/soc.json" | jq -r --arg device "$Socname" '.[$device] | "RAM:\(.MEMORY) \(.CHANNELS)"' &>/dev/null + DEVICE_NAME="$(jq -r --arg device "$Socname" '.[$device] | "處理器:\(.VENDOR) \(.NAME)"' $tools_path/soc.json 2>/dev/null)" + jq -r --arg device "$Socname" '.[$device] | "RAM:\(.MEMORY) \(.CHANNELS)"' $tools_path/soc.json &>/dev/null if [[ $? = 0 ]]; then - RAMINFO="$(cat "$tools_path/soc.json" | jq -r --arg device "$Socname" '.[$device] | "RAM:\(.MEMORY) \(.CHANNELS)"' 2>/dev/null)" + RAMINFO="$(jq -r --arg device "$Socname" '.[$device] | "RAM:\(.MEMORY) \(.CHANNELS)"' $tools_path/soc.json 2>/dev/null)" else RAMINFO="RAM:null" fi @@ -458,7 +458,7 @@ 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" case $MODDIR in *Backup_*) - if [[ -f $MODDIR/app_details ]]; then + if [[ -f $MODDIR/app_details.json ]]; then if [[ -d ${MODDIR%/*/*}/tools ]]; then path_hierarchy="${MODDIR%/*/*}" else @@ -547,7 +547,7 @@ Rename_script () { FILE_NAME="${REPLY##*/}" case $Script_type in backup|Getlist|backup_media|Restore|dumpname|check_file|convert|Restore3|Restore2) - if [[ -f ${REPLY%/*}/app_details ]]; then + if [[ -f ${REPLY%/*}/app_details.json || -f ${REPLY%/*}/app_details ]]; then if [[ $FILE_NAME = backup.sh ]]; then touch_shell "$Script_type" "$REPLY" "backup_mode" "backup_mode=\"1\"" else @@ -595,7 +595,7 @@ touch_shell () { Restore|convert|dumpname|Restore3|check_file) conf_path='${0%/*}/restore_settings.conf' ;; esac 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" + [[ $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" 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 @@ -612,7 +612,7 @@ update_script() { shell_language="$(grep -o 'shell_language="[^"]*"' "$MODDIR/tools.sh" 2>/dev/null | awk -F'=' '{print $2}' | tr -d '"' | head -1)" case $MODDIR in *Backup_*) - if [[ -f $MODDIR/app_details ]]; then + if [[ -f $MODDIR/app_details.json ]]; then echoRgb "請在${MODDIR%/*}更新腳本" "0" rm -rf "$MODDIR/tools.sh" exit 2 @@ -879,7 +879,7 @@ Calculate_size() { fi echoRgb "$NJL" } -size () { +size() { varr="$(echo "$1" | bc 2>/dev/null)" if [[ $varr != $1 ]]; then b_size="$(ls -l "$1" 2>/dev/null | awk '{print $5}')" @@ -927,13 +927,12 @@ restore_freeze() { pm unsuspend --user "$user" "$REPLY" 2>/dev/null | sed "s/Package $name2/ -應用:$name1/g ; s/new suspended state: false/暫停狀態:解凍/g" done } -get_variables() { - awk "/$1/"'{print $1}' "$2" | cut -f2 -d '=' | tail -n1 | sed 's/\"//g' -} Backup_apk() { #檢測apk狀態進行備份 #創建APP備份文件夾 [[ ! -d $Backup_folder ]] && mkdir -p "$Backup_folder" + [[ ! -f $app_details ]] && echo "{\n}">"$app_details" + apk_version="$(jq -r '.[] | select(.apk_version != null) | .apk_version' "$app_details")" apk_version2="$(pm list packages --show-versioncode --user "$user" "$name2" 2>/dev/null | cut -f3 -d ':' | head -n 1)" apk_version3="$(dumpsys package "$name2" 2>/dev/null | awk '/versionName=/{print $1}' | cut -f2 -d '=' | head -1)" if [[ $apk_version = $apk_version2 ]]; then @@ -975,18 +974,14 @@ Backup_apk() { Validation_file "$Backup_folder/apk.tar"* if [[ $result = 0 ]]; then [[ $(sed -e '/^$/d' "$txt2" 2>/dev/null | awk '{print $2}' | grep -w "^${name2}$" | head -1) = "" ]] && echo "${Backup_folder##*/} $name2" >>"$txt2" - if [[ $apk_version = "" ]]; then - echo "apk_version=\"$apk_version2\"" >>"$app_details" - else - echo "$(sed "s/${apk_version}/${apk_version2}/g" "$app_details")">"$app_details" - fi - if [[ $versionName = "" ]]; then - echo "versionName=\"$apk_version3\"" >>"$app_details" - else - echo "$(sed "s/${versionName}/${apk_version3}/g" "$app_details")">"$app_details" - fi - [[ $PackageName = "" ]] && echo "PackageName=\"$name2\"" >>"$app_details" - [[ $ChineseName = "" ]] && echo "ChineseName=\"$name1\"" >>"$app_details" + extra_content="{ + \"$name1\": { + \"PackageName\": \"$name2\", + \"apk_version\": \"$apk_version2\", + \"versionName\": \"$apk_version3\" + } + }" + jq -c --argjson new_content "$extra_content" '. += $new_content' "$app_details" > temp.json && mv temp.json "$app_details" else rm -rf "$Backup_folder" fi @@ -1016,15 +1011,12 @@ Backup_data() { data_path="$path/$1/$name2" MODDIR_NAME="${data_path%/*}" MODDIR_NAME="${MODDIR_NAME##*/}" + [[ -f $app_details ]] && Size="$(jq --arg entry "$1" '.[$entry].Size | tostring | gsub("\""; "") | tonumber' "$app_details" 2>/dev/null)" case $1 in - user) Size="$userSize" && data_path="$path2/$name2" ;; - data) Size="$dataSize" ;; - obb) Size="$obbSize" ;; + user) data_path="$path2/$name2" ;; + data) ;; + obb) ;; *) - if [[ -f $app_details ]]; then - Size="$(get_variables "$1Size" "$app_details")" - mediapath="$(get_variables "$1mediapath" "$app_details")" - fi data_path="$2" if [[ $1 != storage-isolation && $1 != thanox ]]; then Compression_method1="$Compression_method" @@ -1046,13 +1038,9 @@ Backup_data() { fi case $1 in user) + Ssaid="$(jq -r '.[] | select(.Ssaid != null) | .Ssaid' "$app_details")" ssaid="$(get_ssaid "$name2")" if [[ $ssaid != null && $ssaid != $Ssaid ]]; then - if [[ $Ssaid != "" ]]; then - echo "$(sed "s/$Ssaid/$ssaid/g" "$app_details")">"$app_details" - else - echo "Ssaid=\"$ssaid\"" >>"$app_details" - fi SSAID_apk="$(echo "$name1 \"$name2\"")" SSAID_apk2="$(echo "$SSAID_apk\n$SSAID_apk2")" echo_log "備份ssaid" @@ -1094,22 +1082,26 @@ Backup_data() { if [[ $result = 0 ]]; then [[ ${Backup_folder##*/} = Media ]] && [[ $(sed -e '/^$/d' "$mediatxt" | grep -w "${REPLY##*/}.tar$" | head -1) = "" ]] && echo "$FILE_NAME" >> "$mediatxt" if [[ $zsize != "" ]]; then - if [[ $Size != "" ]]; then - echo "$(sed "s/$Size/$Filesize/g" "$app_details")">"$app_details" - else - echo "#$1Size=\"$Filesize\"" >>"$app_details" - fi + extra_content="{ + \"$1\": { + \"path\": \"$2\", + \"Size\": \"$Filesize\" + } + }" + jq -c --argjson new_content "$extra_content" '. += $new_content' "$app_details" > temp.json && mv temp.json "$app_details" else - if [[ $Size != "" ]]; then - echo "$(sed "s/$Size/$Filesize/g" "$app_details")">"$app_details" - else - echo "$1Size=\"$Filesize\"" >>"$app_details" - fi - fi - if [[ $zmediapath != "" ]]; then - if [[ $mediapath = "" ]]; then - echo "#$1mediapath=\"$2\"" >>"$app_details" - fi + extra_content="{ + \"$name1\": { + \"PackageName\": \"$name2\", + \"apk_version\": \"$apk_version2\", + \"versionName\": \"$apk_version3\", + \"Ssaid\": \"$ssaid\" + }, + \"$1\": { + \"Size\": \"$Filesize\" + } + }" + jq -c --argjson new_content "$extra_content" '. += $new_content' "$app_details" > temp.json && mv temp.json "$app_details" fi else rm -rf "$Backup_folder/$1".tar.* @@ -1134,29 +1126,28 @@ Release_data() { case ${FILE_NAME##*.} in zst | tar) unset FILE_PATH Size Selinux_state + [[ -f $app_details ]] && Size="$(jq --arg entry "$FILE_NAME2" '.[$entry].Size | tostring | gsub("\""; "") | tonumber' "$app_details" 2>/dev/null)" case $FILE_NAME2 in user) if [[ -d $X ]]; then FILE_PATH="$path2" - Size="$userSize" Selinux_state="$(LS "$X" | awk 'NF>1{print $1}' | sed -e "s/system_data_file/app_data_file/g" 2>/dev/null)" else echoRgb "$X不存在 無法恢復$FILE_NAME2數據" "0" fi;; - data) FILE_PATH="$path/data" Size="$dataSize" Selinux_state="$(LS "$FILE_PATH" | awk 'NF>1{print $1}' | sed -e "s/system_data_file/app_data_file/g" 2>/dev/null)";; - obb) FILE_PATH="$path/obb" Size="$obbSize" Selinux_state="$(LS "$FILE_PATH" | awk 'NF>1{print $1}' | sed -e "s/system_data_file/app_data_file/g" 2>/dev/null)";; - thanox) FILE_PATH="/data/system" Size="$(get_variables "${FILE_NAME2}Size" "$app_details")" && find "/data/system" -name "thanos*" -maxdepth 1 -type d -exec rm -rf {} \; 2>/dev/null ;; - storage-isolation) FILE_PATH="/data/adb" Size="$(get_variables "${FILE_NAME2}Size" "$app_details")" ;; + data) FILE_PATH="$path/data" Selinux_state="$(LS "$FILE_PATH" | awk 'NF>1{print $1}' | sed -e "s/system_data_file/app_data_file/g" 2>/dev/null)";; + obb) FILE_PATH="$path/obb" Selinux_state="$(LS "$FILE_PATH" | awk 'NF>1{print $1}' | sed -e "s/system_data_file/app_data_file/g" 2>/dev/null)";; + thanox) FILE_PATH="/data/system" && find "/data/system" -name "thanos*" -maxdepth 1 -type d -exec rm -rf {} \; 2>/dev/null ;; + storage-isolation) FILE_PATH="/data/adb" ;; *) if [[ $A != "" ]]; then if [[ ${MODDIR_NAME##*/} = Media ]]; then - FILE_PATH="$(get_variables "${FILE_NAME2}mediapath" "$app_details")" + FILE_PATH="$(jq -r --arg entry "${FILE_NAME2}" 'select(.[$entry].path != null) | .[$entry].path' "$app_details")" if [[ $FILE_PATH = "" ]]; then echoRgb "路徑獲取失敗" "0" else echoRgb "解壓路徑↓\n -$FILE_PATH" "2" FILE_PATH="${FILE_PATH%/*}" - Size="$(get_variables "${FILE_NAME2}Size" "$app_details")" [[ ! -d $FILE_PATH ]] && mkdir -p "$FILE_PATH" fi fi @@ -1303,8 +1294,34 @@ get_name(){ find "$MODDIR" -maxdepth 2 -name "apk.*" -type f 2>/dev/null | sort | while read; do Folder="${REPLY%/*}" [[ $rgb_a -ge 229 ]] && rgb_a=118 - unset PackageName NAME DUMPAPK ChineseName - [[ -f $Folder/app_details ]] && . "$Folder/app_details" &>/dev/null + unset PackageName NAME DUMPAPK ChineseName versionName apk_version Ssaid dataSize obbSize userSize + if [[ -f $Folder/app_details.json ]]; then + ChineseName="$(jq -r 'to_entries[] | select(.key != null) | .key' "$Folder/app_details.json" | head -n 1)" + PackageName="$(jq -r '.[] | select(.PackageName != null) | .PackageName' "$Folder/app_details.json")" + else + if [[ -f $Folder/app_details ]]; then + . "$Folder/app_details" &>/dev/null + extra_content="{ + \"$ChineseName\": { + \"PackageName\": \"$PackageName\", + \"apk_version\": \"$apk_version\", + \"versionName\": \"$versionName\", + \"Ssaid\": \"$Ssaid\" + }, + \"data\": { + \"Size\": \"$dataSize\" + }, + \"obb\": { + \"Size\": \"$obbSize\" + }, + \"user\": { + \"Size\": \"$userSize\" + } + }" + echo "{\n}">"$Folder/app_details.json" + jq -c --argjson new_content "$extra_content" '. += $new_content' "$Folder/app_details.json" > temp.json && rm -rf "$Folder/app_details" && mv temp.json "$Folder/app_details.json" + fi + fi [[ ! -f $txt ]] && echo "#不需要恢復還原的應用請在開頭使用#注釋 比如:#酷安 com.coolapk.market" >"$txt" if [[ $PackageName = "" || $ChineseName = "" ]]; then echoRgb "${Folder##*/}包名獲取失敗,解壓縮獲取包名中..." "0" @@ -1381,8 +1398,8 @@ Check_archive() { rm -rf "$error_log" FIND_PATH="$(find "$1" -maxdepth 3 -name "*.tar*" -type f 2>/dev/null | sort)" i=1 - r="$(find "$MODDIR" -maxdepth 2 -name "app_details" -type f 2>/dev/null | wc -l)" - find "$MODDIR" -maxdepth 2 -name "app_details" -type f 2>/dev/null | sort | while read; do + r="$(find "$MODDIR" -maxdepth 2 -name "app_details.json" -type f 2>/dev/null | wc -l)" + find "$MODDIR" -maxdepth 2 -name "app_details.json" -type f 2>/dev/null | sort | while read; do REPLY="${REPLY%/*}" echoRgb "效驗第$i/$r個資料夾 剩下$((r - i))個" "3" echoRgb "效驗:${REPLY##*/}" @@ -1595,6 +1612,8 @@ backup) 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}')" else + ChineseName="$(jq -r 'to_entries[] | select(.key != null) | .key' "${0%/*}/app_details.json" | head -n 1)" + PackageName="$(jq -r '.[] | select(.PackageName != null) | .PackageName' "${0%/*}/app_details.json")" name1="$ChineseName" name2="$PackageName" fi @@ -1605,7 +1624,7 @@ backup) if [[ -d $apk_path2 ]]; then echoRgb "備份第$i/$r個應用 剩下$((r - i))個" "3" 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 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 [[ $name1 = !* || $name1 = !* ]]; then name1="$(echo "$name1" | sed 's/!//g ; s/!//g')" @@ -1623,18 +1642,16 @@ backup) fi fi Backup_folder="$Backup/$name1" - app_details="$Backup_folder/app_details" + app_details="$Backup_folder/app_details.json" app_Permissions="$Backup_folder/Permissions" if [[ -f $app_details ]]; then - . "$app_details" &>/dev/null [[ -f $app_Permissions ]] && . "$app_Permissions" + PackageName="$(jq -r '.[] | select(.PackageName != null) | .PackageName' "$app_details")" 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 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 Backup_folder="$Backup/${name1}[${name2}]" - app_details="$Backup_folder/app_details" + app_details="$Backup_folder/app_details.json" app_Permissions="$Backup_folder/Permissions" - [[ -f $app_details ]] && . "$app_details" &>/dev/null - [[ -f $app_Permissions ]] && . "$app_Permissions" fi fi [[ $hx = USB && $PT = "" ]] && echoRgb "隨身碟意外斷開 請檢查穩定性" "0" && exit 1 @@ -1708,8 +1725,8 @@ backup) Backup_folder="$Backup/Media" [[ ! -f $Backup/恢復自定義資料夾.sh ]] && touch_shell "Restore3" "$Backup/恢復自定義資料夾.sh" [[ ! -d $Backup_folder ]] && mkdir -p "$Backup_folder" - app_details="$Backup_folder/app_details" - [[ -f $app_details ]] && . "$app_details" &>/dev/null || touch "$app_details" + app_details="$Backup_folder/app_details.json" + [[ ! -f $app_details ]] && echo "{\n}">"$app_details" mediatxt="$Backup/mediaList.txt" [[ ! -f $mediatxt ]] && echo "#不需要恢復的資料夾請在開頭使用#注釋 比如:#Download" > "$mediatxt" echo "$Custom_path" | grep -v "#" | sed -e '/^$/d' | sed 's/\/$//' | while read; do @@ -1846,12 +1863,13 @@ Restore|Restore2) i=1 r=1 Backup_folder="$MODDIR" - app_details="$Backup_folder/app_details" + app_details="$Backup_folder/app_details.json" app_Permissions="$Backup_folder/Permissions" if [[ ! -f $app_details ]]; then echoRgb "$app_details遺失,無法獲取包名" "0" && exit 1 else - . "$app_details" &>/dev/null + ChineseName="$(jq -r 'to_entries[] | select(.key != null) | .key' "$app_details" | head -n 1)" + PackageName="$(jq -r '.[] | select(.PackageName != null) | .PackageName' "$app_details")" [[ -f $app_Permissions ]] && . "$app_Permissions" &>/dev/null fi name1="$ChineseName" @@ -1882,7 +1900,12 @@ Restore|Restore2) No_backupdata=1 fi Backup_folder="$MODDIR/$name1" - [[ -f "$Backup_folder/app_details" ]] && app_details="$Backup_folder/app_details" . "$Backup_folder/app_details" &>/dev/null + if [[ -f "$Backup_folder/app_details.json" ]]; then + app_details="$Backup_folder/app_details.json" + else + echoRgb "$Backup_folder/app_details.json不存在" "0" + exit2 + fi app_Permissions="$Backup_folder/Permissions" [[ -f $app_Permissions ]] && . "$app_Permissions" &>/dev/null [[ $name2 = "" ]] && echoRgb "應用包名獲取失敗" "0" && exit 1 @@ -1904,6 +1927,7 @@ Restore|Restore2) unset G Set_service restore_permissions + Ssaid="$(jq -r '.[] | select(.Ssaid != null) | .Ssaid' "$app_details")" if [[ $Ssaid != "" ]]; then if [[ $(get_ssaid "$name2") != $Ssaid ]]; then set_ssaid "$name2" "$Ssaid" @@ -1936,7 +1960,7 @@ Restore|Restore2) echoRgb "\n -下列為已設置SSAID應用\n$SSAID_Package2\n -下列為設置SSAID失敗應用....\n$SSAID_Package3" "3" if [[ $media_recovery = true ]]; then starttime1="$(date -u "+%s")" - app_details="$Backup_folder2/app_details" + app_details="$Backup_folder2/app_details.json" txt="$MODDIR/mediaList.txt" sort -u "$txt" -o "$txt" 2>/dev/null A=1 @@ -1983,7 +2007,7 @@ Restore3) echoRgb "假設反悔了要終止腳本請儘速離開此腳本點擊終止腳本.sh,否則腳本將繼續執行直到結束" "0" get_version "恢復自定義資料夾" "離開腳本" && [[ "$branch" = false ]] && exit 0 mediaDir="$MODDIR/Media" - [[ -f "$mediaDir/app_details" ]] && app_details="$mediaDir/app_details" &>/dev/null + [[ -f "$mediaDir/app_details.json" ]] && app_details="$mediaDir/app_details.json" Backup_folder2="$mediaDir" [[ ! -d $mediaDir ]] && echoRgb "媒體資料夾不存在" "0" && exit 2 txt="$MODDIR/mediaList.txt" @@ -2172,9 +2196,9 @@ backup_media) [[ ! -f $Backup/壓縮檔完整性檢查.sh ]] && touch_shell "check_file" "$Backup/壓縮檔完整性檢查.sh" [[ ! -d $Backup/tools ]] && cp -r "$tools_path" "$Backup" [[ ! -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.json" + [[ ! -f $app_details ]] && echo "{\n}">"$app_details" filesize="$(du -s "$Backup_folder" | awk '{print $1}')" - [[ -f $app_details ]] && . "$app_details" &>/dev/null || touch "$app_details" mediatxt="$Backup/mediaList.txt" [[ ! -f $mediatxt ]] && echo "#不需要恢復的資料夾請在開頭使用#注釋 比如:#Download" > "$mediatxt" echo "$script">"$TMPDIR/scriptTMP"