From baae8c298aa4e8e9ab5e65b82c95184ae2494325 Mon Sep 17 00:00:00 2001 From: YAWAsau <229953100a@gmail.com> Date: Sun, 14 Nov 2021 09:08:59 +0800 Subject: [PATCH] bug fix --- tools/script/restore | 7 ++++--- tools/script/restore2 | 7 ++++--- 備份應用.sh | 32 +++++++++++++++++++------------- 本地一鍵更新腳本.sh | 6 +++++- 4 files changed, 32 insertions(+), 20 deletions(-) diff --git a/tools/script/restore b/tools/script/restore index af07453..95d05a4 100644 --- a/tools/script/restore +++ b/tools/script/restore @@ -17,6 +17,7 @@ txt="$MODDIR/應用列表.txt" [[ ! -f $txt ]] && echoRgb "請執行\"掃描資料夾名.sh\"獲取應用列表再來恢復" "0" && exit 2 r="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n '$=')" [[ $r = "" ]] && echoRgb "應用列表.txt包名為空或是被注釋了" "0" && exit 1 +[[ $(restorecon --help 2>/dev/null) = "" ]] && echoRgb "restorecon命令不存在" "0" && exit 1 #顯示執行結果 Release_data() { tar_path="$1" @@ -74,7 +75,7 @@ Release_data() { Path_details="$(stat -c "%A/%a %U/%G" "$X")" chown -hR "$G:$G" "$X" echo_log "設置用戶組:$(echo "$Path_details" | awk '{print $2}')" - restorecon -R "$X" >/dev/null 2>&1 + restorecon -RF "$X/" >/dev/null 2>&1 echo_log "selinux上下文設置" #echoRgb "$(stat -c "%n %A/%a %U/%G" "$X" | awk '{print "路徑:"$1"\n 權限:"$2"\n 用戶組:"$3}')" else @@ -84,9 +85,9 @@ Release_data() { echoRgb "路徑$X不存在" "0" fi elif [[ $FILE_NAME2 = data ]]; then - [[ -d $path/data/$name2 ]] && chown -R "1023:1078" "$path/data/$name2" + [[ -d $path/data/$name2 ]] && chown -R "1023:1023" "$path/data/$name2" elif [[ $FILE_NAME2 = thanox ]]; then - restorecon -R "$(find "/data/system" -name "thanos*" -maxdepth 1 -type d)" >/dev/null 2>&1 + restorecon -RF "$(find "/data/system" -name "thanos*" -maxdepth 1 -type d)/" >/dev/null 2>&1 echo_log "selinux上下文設置" && echoRgb "警告 thanox配置恢復後務必重啟\n -否則不生效" "0" fi fi diff --git a/tools/script/restore2 b/tools/script/restore2 index c42937a..d78c0da 100644 --- a/tools/script/restore2 +++ b/tools/script/restore2 @@ -11,6 +11,7 @@ path="/data/media/0/Android" path2="/data/data" [[ ! -d $TMPDIR ]] && mkdir "$TMPDIR" [[ ! -d $path2 ]] && echoRgb "設備不存在user目錄" "0" && exit 1 +[[ $(restorecon --help 2>/dev/null) = "" ]] && echoRgb "restorecon命令不存在" "0" && exit 1 #記錄開始時間 starttime1="$(date -u "+%s")" { @@ -111,7 +112,7 @@ if [[ $Recovery_mode = true ]]; then Path_details="$(stat -c "%A/%a %U/%G" "$X")" chown -hR "$G:$G" "$X" echo_log "設置用戶組:$(echo "$Path_details" | awk '{print $2}')" - restorecon -R "$X" >/dev/null 2>&1 + restorecon -RF "$X/" >/dev/null 2>&1 echo_log "selinux上下文設置" else echoRgb "uid獲取失敗" "0" @@ -120,9 +121,9 @@ if [[ $Recovery_mode = true ]]; then echoRgb "路徑$X不存在" "0" fi elif [[ $FILE_NAME2 = data ]]; then - [[ -d $path/data/$name2 ]] && chown -R "1023:1078" "$path/data/$name2" + [[ -d $path/data/$name2 ]] && chown -R "1023:1023" "$path/data/$name2" elif [[ $FILE_NAME2 = thanox ]]; then - restorecon -R "$(find "/data/system" -name "thanos*" -maxdepth 1 -type d)" >/dev/null 2>&1 + restorecon -R "$(find "/data/system" -name "thanos*" -maxdepth 1 -type d)/" >/dev/null 2>&1 echo_log "selinux上下文設置" && echoRgb "警告 thanox配置恢復後務必重啟\n -否則不生效" "0" fi fi diff --git a/備份應用.sh b/備份應用.sh index 574cec4..fbef527 100644 --- a/備份應用.sh +++ b/備份應用.sh @@ -61,18 +61,23 @@ if [[ $PU != "" ]]; then [[ -f /proc/mounts ]] && PT="$(cat /proc/mounts | grep "$PU" | awk '{print $2}')" if [[ -d $PT ]]; then if [[ $(echo "$MODDIR" | grep -oE "^${PT}") != "" || $USBdefault = true ]]; then - echoRgb "於隨身碟備份" "1" - Backup="$PT/Backup_$Compression_method" - data="/dev/block/vold/$PU" hx="USB" else echoRgb "檢測到隨身碟 是否在隨身碟備份\n -音量上是,音量下不是" get_version "選擇了隨身碟備份" "選擇了本地備份" - if $branch = true ]]; then - Backup="$PT/Backup_$Compression_method" - data="/dev/block/vold/$PU" - hx="USB" - fi + [[ $branch = true ]] && hx="USB" + fi + if [[ $hx = USB ]]; then + Backup="$PT/Backup_$Compression_method" + data="/dev/block/vold/$PU" + mountinfo="$(df -T "$data" | awk 'END{print $1}')" + case $mountinfo in + exfat|NTFS|ext4) + echoRgb "於隨身碟備份 檔案系統:$mountinfo" "1" + ;; + *) + echoRgb "隨身碟檔案系統$mountinfo不支持超過單檔4GB\n -請格式化為exfat" "0" ; exit 1 ;; + esac fi fi else @@ -115,7 +120,7 @@ Backup_apk() { case $Compression_method in tar|TAR|Tar) tar -cf "$Backup_folder/apk.tar" *.apk ;; lz4|LZ4|Lz4) tar -cf - *.apk | lz4 -1 >"$Backup_folder/apk.tar.lz4" ;; - zstd|Zstd|ZSTD) tar -cf - *apk | zstd -r -T0 -6 -q >"$Backup_folder/apk.tar.zst" ;; + zstd|Zstd|ZSTD) tar -cf - *apk | zstd -r -T0 --ultra -6 -q >"$Backup_folder/apk.tar.zst" ;; esac) echo_log "備份$apk_number個Apk" if [[ $result = 0 ]]; then @@ -158,14 +163,14 @@ Backup_data() { user) case $Compression_method in tar|Tar|TAR) tar --exclude="${data_path##*/}/.ota" --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/lib" -cpf - -C "${data_path%/*}" "${data_path##*/}" 2>/dev/null | pv >"$Backup_folder/$1.tar" ;; - zstd|Zstd|ZSTD) tar --exclude="${data_path##*/}/.ota" --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/lib" -cpf - -C "${data_path%/*}" "${data_path##*/}" 2>/dev/null | pv | zstd -r -T0 -6 -q >"$Backup_folder/$1.tar.zst" ;; + zstd|Zstd|ZSTD) tar --exclude="${data_path##*/}/.ota" --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/lib" -cpf - -C "${data_path%/*}" "${data_path##*/}" 2>/dev/null | pv | zstd -r -T0 --ultra -6 -q >"$Backup_folder/$1.tar.zst" ;; lz4|Lz4|LZ4) tar --exclude="${data_path##*/}/.ota" --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/lib" -cpf - -C "${data_path%/*}" "${data_path##*/}" 2>/dev/null | pv | lz4 -1 >"$Backup_folder/$1.tar.lz4" ;; esac ;; *) case $Compression_method in - tar|Tar|TAR) tar --exclude="Backup_"* -cPpf - "$data_path" 2>/dev/null | pv >"$Backup_folder/$1.tar" ;; - zstd|Zstd|ZSTD) tar --exclude="Backup_"* -cPpf - "$data_path" 2>/dev/null | pv | zstd -r -T0 -6 -q >"$Backup_folder/$1.tar.zst" ;; - lz4|Lz4|LZ4) tar --exclude="Backup_"* -cPpf - "$data_path" 2>/dev/null | pv | lz4 -1 >"$Backup_folder/$1.tar.lz4" ;; + tar|Tar|TAR) tar --exclude="Backup_"* --exclude="${data_path##*/}/cache" -cPpf - "$data_path" 2>/dev/null | pv >"$Backup_folder/$1.tar" ;; + zstd|Zstd|ZSTD) tar --exclude="Backup_"* --exclude="${data_path##*/}/cache" -cPpf - "$data_path" 2>/dev/null | pv | zstd -r -T0 --ultra -6 -q >"$Backup_folder/$1.tar.zst" ;; + lz4|Lz4|LZ4) tar --exclude="Backup_"* --exclude="${data_path##*/}/cache" -cPpf - "$data_path" 2>/dev/null | pv | lz4 -1 >"$Backup_folder/$1.tar.lz4" ;; esac ; [[ $Compression_method1 != "" ]] && Compression_method="$Compression_method1" ; unset Compression_method1 ;; esac echo_log "備份$1數據" @@ -228,6 +233,7 @@ while [[ $i -le $r ]]; do fi fi lxj="$(df -h "$data" | awk 'END{print $4}' | sed 's/%//g')" + [[ $hx = USB && $PT = "" ]] && echoRgb "隨身碟意外斷開 請檢查穩定性" "0" && exit 1 starttime2="$(date -u "+%s")" echoRgb "備份$name1 ($name2)" [[ $name2 = com.tencent.mobileqq ]] && echo "QQ可能恢復備份失敗或是丟失聊天記錄,請自行用你信賴的應用備份" diff --git a/本地一鍵更新腳本.sh b/本地一鍵更新腳本.sh index da3c66d..63f107d 100644 --- a/本地一鍵更新腳本.sh +++ b/本地一鍵更新腳本.sh @@ -5,7 +5,11 @@ 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) = "" ]] && echoRgb "警告 未找到任何zip 請將下載的備份腳本.zip\n -放入當前目錄中\n -當前路徑$MODDIR" "0" +if [[ $(find "$MODDIR" -maxdepth 1 -name "*.zip" -type f) = "" ]]; then + echoRgb "警告 未找到任何zip 請將下載的備份腳本.zip\n -放入當前目錄中\n -當前路徑$MODDIR" "0" +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 +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" && (