From 0d21079c9e78eaed65b559c7f06af127aa7c9f62 Mon Sep 17 00:00:00 2001 From: YAWAsau <229953100a@gmail.com> Date: Sat, 20 Nov 2021 15:35:27 +0800 Subject: [PATCH] bug fix --- 更新腳本.sh | 116 ++++++++++++++++++++++++++++------------------------ 1 file changed, 62 insertions(+), 54 deletions(-) diff --git a/更新腳本.sh b/更新腳本.sh index adbd7bc..f8009ad 100644 --- a/更新腳本.sh +++ b/更新腳本.sh @@ -5,62 +5,70 @@ bin_path="$tools_path/bin" [[ $(echo "$MODDIR" | grep -v 'mt') = "" ]] && echo "我他媽骨灰給你揚了撒了TM不解壓縮?用毛線 憨批" && exit 1 [[ ! -d $tools_path ]] && echo " $tools_path目錄遺失" && exit 1 . "$bin_path/bin.sh" -find "$MODDIR" -maxdepth 1 -name "*.zip" -type f -exec rm -rf {} \; -if [[ $backup_version != $(down -s -A s "https://api.github.com/repos/YAWAsau/backup_script/releases/latest" | jq -r '.tag_name') ]]; then - down -s -A s "https://api.github.com/repos/YAWAsau/backup_script/releases/latest" | jq -r '.tag_name'>"$bin_path/tag" ; tag="$(cat "$bin_path/tag")" - down -L -o "$MODDIR/$tag.zip" "$(down -s -A s "https://api.github.com/repos/YAWAsau/backup_script/releases/latest" | sed -r -n 's/.*"browser_download_url": *"(.*.zip)".*/\1/p')" - echo_log "下載$tag.zip" -fi -if [[ $(find "$MODDIR" -maxdepth 1 -name "*.zip" -type f) = "" ]]; then - echoRgb "警告 未找到任何zip 請將下載的備份腳本.zip\n -放入當前目錄中\n -當前路徑$MODDIR" "0" +zippath="$(find "$MODDIR" -maxdepth 1 -name "*.zip" -type f)" +tag="$(cat "$bin_path/tag" 2>/dev/null)" +if [[ $zippath != "" ]]; then + case $(echo "$zippath" | wc -l) in + 1) + echoRgb "從$zippath更新" ;; + *) + echoRgb "錯誤 請刪除當前目錄多餘zip\n -保留一個最新的數據備份.zip\n -下列為當前目錄zip\n$(find "$MODDIR" -maxdepth 1 -name "*.zip" -type f)" "0" && exit 1 ;; + esac else - [[ $(find "$MODDIR" -maxdepth 1 -name "*.zip" -type f | wc -l) -gt 1 ]] && echoRgb "錯誤 請刪除當前目錄多餘zip\n -保留一個最新的數據備份.zip\n -下列為當期目錄zip\n$(find "$MODDIR" -maxdepth 1 -name "*.zip" -type f)" "0" && exit 1 + echoRgb "從GitHub更新" + if [[ $backup_version != $(down -s -A s "https://api.github.com/repos/YAWAsau/backup_script/releases/latest" | jq -r '.tag_name') ]]; then + down -s -A s "https://api.github.com/repos/YAWAsau/backup_script/releases/latest" | jq -r '.tag_name'>"$tag" + down -L -o "$MODDIR/$tag.zip" "$(down -s -A s "https://api.github.com/repos/YAWAsau/backup_script/releases/latest" | sed -r -n 's/.*"browser_download_url": *"(.*.zip)".*/\1/p')" + echo_log "下載$tag.zip" + if [[ $result = 0 ]]; then + zippath="$(find "$MODDIR" -maxdepth 1 -name "*.zip" -type f)" + else + echoRgb "請手動將備份腳本壓縮包放置在\n -$MODDIR後再次執行腳本進行更新" "0" && exit 2 + fi + else + echoRgb "本地版本:$backup_version 線上版本:$tag 版本一致無須更新" && exit + fi fi -find "$MODDIR" -maxdepth 1 -name "*.zip" -type f | while read; do - if [[ $(unzip -l "$REPLY" | awk '{print $4}' | grep -oE "^backup_settings.conf$") != "" ]]; then - unzip -o "$REPLY" -d "$MODDIR" && ( - echoRgb "解壓縮${REPLY##*/}成功" "1" - case $MODDIR in - *Backup_*) - echoRgb "更新當前${MODDIR##*/}目錄下恢復相關腳本+tools目錄" - cp -r "$tools_path/script/Get_DirName" "$MODDIR/掃描資料夾名.sh" - cp -r "$tools_path/script/restore" "$MODDIR/還原備份.sh" - [[ -d $MODDIR/媒體 ]] && cp -r "$tools_path/script/restore3" "$MODDIR/媒體/恢復多媒體數據.sh" - find "$MODDIR" -maxdepth 1 -type d | sort | sed 's/\[/ /g ; s/\]//g' | while read; do - if [[ -f $REPLY/app_details ]]; then - unset PackageName - . "$REPLY/app_details" - if [[ $PackageName != "" ]]; then - cp -r "$tools_path/script/restore2" "$REPLY/還原備份.sh" - fi +[[ $(unzip -l "$zippath" | awk '{print $4}' | grep -oE "^backup_settings.conf$") = "" ]] && echoRgb "${zippath##*/}並非指定的備份zip" "0" && exit 2 +unzip -o "$zippath" -d "$MODDIR" +echo_log "解壓縮${zippath##*/}" +if [[ $result = 0 ]]; then + case $MODDIR in + *Backup_*) + echoRgb "更新當前${MODDIR##*/}目錄下恢復相關腳本+tools目錄" + cp -r "$tools_path/script/Get_DirName" "$MODDIR/掃描資料夾名.sh" + cp -r "$tools_path/script/restore" "$MODDIR/還原備份.sh" + [[ -d $MODDIR/媒體 ]] && cp -r "$tools_path/script/restore3" "$MODDIR/媒體/恢復多媒體數據.sh" + find "$MODDIR" -maxdepth 1 -type d | sort | while read; do + if [[ -f $REPLY/app_details ]]; then + unset PackageName + . "$REPLY/app_details" + [[ $PackageName != "" ]] && cp -r "$tools_path/script/restore2" "$REPLY/還原備份.sh" + fi + done + rm -rf "$tools_path/script" "$tools_path/META-INF" "$tools_path/bin/zip" "$MODDIR/backup_settings.conf" "$MODDIR/備份應用.sh" "$MODDIR/生成應用列表.sh" ;; + *) + if [[ $(find "$MODDIR" -maxdepth 1 -name "Backup_*" -type d) != "" ]]; then + find "$MODDIR" -maxdepth 1 -name "Backup_*" -type d | while read backup_path; do + if [[ -d $backup_path && $backup_path != $MODDIR ]]; then + echoRgb "更新當前目錄下備份相關腳本&tools目錄+${backup_path##*/}內tools目錄+恢復腳本+tools" + cp -r "$tools_path" "$backup_path" && rm -rf "$backup_path/tools/bin/zip" "$backup_path/tools/META-INF" "$backup_path/tools/script" + cp -r "$tools_path/script/restore" "$backup_path/還原備份.sh" + cp -r "$tools_path/script/Get_DirName" "$backup_path/掃描資料夾名.sh" + cp -r "$MODDIR/更新腳本.sh" "$backup_path/更新腳本.sh" + [[ -d $backup_path/媒體 ]] && cp -r "$tools_path/script/restore3" "$backup_path/媒體/恢復多媒體數據.sh" + find "$MODDIR" -maxdepth 2 -type d | sort | while read; do + if [[ -f $zippath/app_details ]]; then + unset PackageName + . "$zippath/app_details" + [[ $PackageName != "" ]] && cp -r "$tools_path/script/restore2" "$zippath/還原備份.sh" + fi + done fi done - rm -rf "$tools_path/script" "$tools_path/META-INF" "$tools_path/bin/zip" "$MODDIR/backup_settings.conf" "$MODDIR/備份應用.sh" "$MODDIR/生成應用列表.sh" ;; - *) - if [[ $(find "$MODDIR" -maxdepth 1 -name "Backup_*" -type d) != "" ]]; then - find "$MODDIR" -maxdepth 1 -name "Backup_*" -type d | while read backup_path; do - if [[ -d $backup_path && $backup_path != $MODDIR ]]; then - echoRgb "更新當前目錄下備份相關腳本&tools目錄+${backup_path##*/}內tools目錄+恢復腳本+tools" - cp -r "$tools_path" "$backup_path" && rm -rf "$backup_path/tools/bin/zip" "$backup_path/tools/META-INF" "$backup_path/tools/script" - cp -r "$tools_path/script/restore" "$backup_path/還原備份.sh" - cp -r "$tools_path/script/Get_DirName" "$backup_path/掃描資料夾名.sh" - cp -r "$MODDIR/本地一鍵更新腳本.sh" "$backup_path/本地一鍵更新腳本.sh" - [[ -d $backup_path/媒體 ]] && cp -r "$tools_path/script/restore3" "$backup_path/媒體/恢復多媒體數據.sh" - find "$MODDIR" -maxdepth 2 -type d | sort | sed 's/\[/ /g ; s/\]//g' | while read; do - if [[ -f $REPLY/app_details ]]; then - unset PackageName - . "$REPLY/app_details" - [[ $PackageName != "" ]] && cp -r "$tools_path/script/restore2" "$REPLY/還原備份.sh" - fi - done - fi - done - else - echoRgb "更新當前${MODDIR##*/}目錄下備份相關腳本+tools目錄" - fi ;; - esac) || (echoRgb "解壓縮${REPLY##*/}失敗" "0" && exit 2) - else - echoRgb "${REPLY##*/}並非指定的備份zip" "0" - fi -done + else + echoRgb "更新當前${MODDIR##*/}目錄下備份相關腳本+tools目錄" + fi ;; + esac +fi find "$MODDIR" -maxdepth 1 -name "*.zip" -type f -exec rm -rf {} \; \ No newline at end of file