From 684ee58677e2fe27aca51d9f02b516405556ad09 Mon Sep 17 00:00:00 2001 From: YAWAsau <229953100a@gmail.com> Date: Wed, 22 Dec 2021 15:49:42 +0800 Subject: [PATCH] bug fix --- 生成應用列表.sh => Getlist.sh | 3 +-- 備份應用.sh => backup.sh | 22 +++++++----------- backup_settings.conf | 4 ++-- tools/bin/bin.sh | 44 ++++++++++++++++++++++++----------- tools/script/restore | 1 + tools/script/restore2 | 1 + 6 files changed, 45 insertions(+), 30 deletions(-) rename 生成應用列表.sh => Getlist.sh (96%) rename 備份應用.sh => backup.sh (94%) diff --git a/生成應用列表.sh b/Getlist.sh similarity index 96% rename from 生成應用列表.sh rename to Getlist.sh index a5154cf..dc4ad65 100644 --- a/生成應用列表.sh +++ b/Getlist.sh @@ -17,8 +17,7 @@ launcher_app="$(pm resolve-activity --brief -c android.intent.category.HOME -a a for launcher_app in $launcher_app; do [[ $launcher_app != "android" ]] && [[ $(pgrep -f "$launcher_app" | grep -v 'grep' | wc -l) -ge 1 ]] && launcher_app="$launcher_app" done -isBoolean "$path" && txtpath="$nsx" -[[ $txtpath = true ]] && txtpath="$PWD" || txtpath="$MODDIR" +txtpath="$MODDIR" txtpath="${txtpath/'/storage/emulated/'/'/data/media/'}" nametxt="$txtpath/應用列表.txt" [[ ! -e $nametxt ]] && echo '#不需要備份的應用請在開頭注釋# 比如#酷安 xxxxxxxx\n#不需要備份數據比如酷安! xxxxxxxx應用名後方加一個驚嘆號即可 注意是應用名不是包名' >"$nametxt" diff --git a/備份應用.sh b/backup.sh similarity index 94% rename from 備份應用.sh rename to backup.sh index 973fd6a..5aba34f 100644 --- a/備份應用.sh +++ b/backup.sh @@ -24,23 +24,18 @@ if [[ $Lo = false ]]; then isBoolean "$Splist" && Splist="$nsx" isBoolean "$USBdefault" && USBdefault="$nsx" isBoolean "$Backup_obb_data" && Backup_obb_data="$nsx" - isBoolean "$path" && path3="$nsx" isBoolean "$Backup_user_data" && Backup_user_data="$nsx" isBoolean "$backup_media" && backup_media="$nsx" -else - echoRgb "備份路徑位置為絕對位置或是當前環境位置\n 音量上當前環境位置,音量下腳本絕對位置" - get_version "當前環境位置" "腳本絕對位置" && path3="$branch" fi i=1 #數據目錄 path="/data/media/0/Android" path2="/data/user/0" -if [[ $path3 = true ]]; then - Backup="$PWD/Backup_$Compression_method" - txt="$PWD/應用列表.txt" +txt="$MODDIR/應用列表.txt" +if [[ $Output_path != "" ]]; then + echoRgb "使用自定義目錄\n-輸出位置:$Output_path" && Backup="$Output_path/Backup_$Compression_method" else Backup="$MODDIR/Backup_$Compression_method" - txt="$MODDIR/應用列表.txt" fi txt="${txt/'/storage/emulated/'/'/data/media/'}" PU="$(ls /dev/block/vold | grep public)" @@ -84,9 +79,9 @@ fi txt2="$Backup/應用列表.txt" [[ ! -f $txt2 ]] && echo "#不需要恢復還原的應用請在開頭注釋# 比如#xxxxxxxx 酷安" >"$txt2" [[ ! -d $Backup/tools ]] && cp -r "$tools_path" "$Backup" && rm -rf "$Backup/tools/bin/zip" "$Backup/tools/script" -[[ ! -f $Backup/還原備份.sh ]] && cp -r "$script_path/restore" "$Backup/還原備份.sh" -[[ ! -f $Backup/掃描資料夾名.sh ]] && cp -r "$script_path/Get_DirName" "$Backup/掃描資料夾名.sh" -[[ ! -f $Backup/刪除已卸載備份.sh ]] && cp -r "$script_path/delete_backup" "$Backup/刪除已卸載備份.sh" +[[ ! -f $Backup/Restorebackup.sh ]] && cp -r "$script_path/restore" "$Backup/Restorebackup.sh" +[[ ! -f $Backup/DumpName.sh ]] && cp -r "$script_path/Get_DirName" "$Backup/DumpName.sh" +[[ ! -f $Backup/delete_backup ]] && cp -r "$script_path/delete_backup" "$Backup/delete_backup.sh" filesize="$(du -ks "$Backup" | awk '{print $1}')" Quantity=0 #檢測apk狀態進行備份 @@ -128,7 +123,7 @@ Backup_apk() { echo "apk_version=\"$(dumpsys package "$name2" | awk '/versionName=/{print $1}' | cut -f2 -d '=' | head -1)\"" >>"$app_details" [[ $PackageName = "" ]] && echo "PackageName=\"$name2\"" >>"$app_details" [[ $ChineseName = "" ]] && echo "ChineseName=\"$name1\"" >>"$app_details" - [[ ! -f $Backup_folder/還原備份.sh ]] && cp -r "$script_path/restore2" "$Backup_folder/還原備份.sh" + [[ ! -f $Backup_folder/Restorebackup.sh ]] && cp -r "$script_path/restore2" "$Backup_folder/Restorebackup.sh" [[ ! -f $Backup_folder/recover.conf ]] && cp -r "$script_path/recover.conf" "$Backup_folder" [[ ! -f $Backup/recover.conf ]] && cp -r "$script_path/recover.conf" "$Backup" fi @@ -247,6 +242,7 @@ while [[ $i -le $r ]]; do echoRgb "備份$name1 ($name2)" [[ $name2 = com.tencent.mobileqq ]] && echo "QQ可能恢復備份失敗或是丟失聊天記錄,請自行用你信賴的應用備份" [[ $name2 = com.tencent.mm ]] && echo "WX可能恢復備份失敗或是丟失聊天記錄,請自行用你信賴的應用備份" + unset nobackup apk_number="$(echo "$apk_path" | wc -l)" if [[ $apk_number = 1 ]]; then if [[ $Splist = false ]]; then @@ -257,7 +253,7 @@ while [[ $i -le $r ]]; do else Backup_apk "Split Apk支持備份" fi - if [[ $D != "" && $result = 0 && $No_backupdata = "" ]]; then + if [[ $D != "" && $result = 0 && $No_backupdata = "" && $nobackup != true ]]; then if [[ $Backup_obb_data = true ]]; then #備份data數據 Backup_data "data" diff --git a/backup_settings.conf b/backup_settings.conf index e7f1df6..63494e2 100644 --- a/backup_settings.conf +++ b/backup_settings.conf @@ -3,8 +3,8 @@ #如果是那下面三項設置就被忽略,改為音量鍵選擇 Lo=0 -#備份路徑位置為絕對位置或是當前環境位置(1環境位置 0腳本所在位置) -path=0 +#自定義備份目錄輸出位置 (忽略為空將默認腳本路徑中) +Output_path= #假設如果存在usb隨身碟是否默認使用隨身碟?(1不詢問默認使用 0每次都進行詢問) USBdefault=0 diff --git a/tools/bin/bin.sh b/tools/bin/bin.sh index 23e2d20..23997b2 100644 --- a/tools/bin/bin.sh +++ b/tools/bin/bin.sh @@ -19,13 +19,21 @@ if [[ -d $(magisk --path 2>/dev/null) ]]; then else echo "Magisk busybox Path does not exist" fi ; export PATH="$PATH" -backup_version="V12.8" +backup_version="V12.9" #設置二進制命令目錄位置 [[ $bin_path = "" ]] && echo "未正確指定bin.sh位置" && exit 2 #bin_path="${bin_path/'/storage/emulated/'/'/data/media/'}" -Status_log="$MODDIR/執行狀態日誌.txt" +Status_log="$MODDIR/Log.txt" rm -rf "$Status_log" filepath="/data/backup_tools" +case $MODDIR in +/data/user/0/com.xayah.databackup*) + if [[ -d /data/user/0/com.xayah.databackup ]]; then + filepath="/data/user/0/com.xayah.databackup/backup_tools" + echo "於com.xayah.databackup內執行" && app="true" + [[ ! -e $bin_path/freq ]] && echo "1">"$bin_path/freq" + fi ;; +esac busybox="$filepath/busybox" busybox2="$bin_path/busybox" #排除自身 @@ -203,6 +211,7 @@ if [[ $LANG != "" ]]; then else echoRgb "獲取系統語系失敗 默認簡體中文" "0" fi +[[ $app = true && $(cat "$bin_path/freq" 2>/dev/null) = 1 ]] && Mandatory_update="true" && freq="$(cat "$bin_path/freq" 2>/dev/null)" #dns="1.1.1.1,1.0.0.1" dns="8.8.8.8" #dns="114.114.114.114" @@ -218,20 +227,28 @@ else fi if [[ $json != "" ]]; then tag="$(echo "$json" | sed -r -n 's/.*"tag_name": *"(.*)".*/\1/p')" - if [[ $backup_version != $tag ]]; then - echoRgb "發現新版本 從GitHub更新 版本:$tag\n -更新日誌:\n$(curl "https://api.github.com/repos/YAWAsau/backup_script/releases/latest" 2>/dev/null | sed -r -n 's/.*"body": *"(.*)".*/\1/p' || down -s -L "https://api.github.com/repos/YAWAsau/backup_script/releases/latest" 2>/dev/null | sed -r -n 's/.*"body": *"(.*)".*/\1/p')" + if [[ $Mandatory_update != true ]]; then + if [[ $backup_version != $tag ]]; then + echoRgb "發現新版本 從GitHub更新 版本:$tag\n -更新日誌:\n$(curl "https://api.github.com/repos/YAWAsau/backup_script/releases/latest" 2>/dev/null | sed -r -n 's/.*"body": *"(.*)".*/\1/p' || down -s -L "https://api.github.com/repos/YAWAsau/backup_script/releases/latest" 2>/dev/null | sed -r -n 's/.*"body": *"(.*)".*/\1/p')" + download="$(echo "$json" | sed -r -n 's/.*"browser_download_url": *"(.*.zip)".*/\1/p')" + curl -O "https://gh.api.99988866.xyz/$download" || down -s -L -o "$MODDIR/$tag.zip" "https://gh.api.99988866.xyz/$download" + echo_log "下載${download##*/}" + if [[ $result = 0 ]]; then + echoRgb "update $backup_version > $tag" + zippath="$(find "$MODDIR" -maxdepth 1 -name "*.zip" -type f)" + GitHub="true" + else + echoRgb "請手動將備份腳本壓縮包放置在\n -$MODDIR後再次執行腳本進行更新" "0" + fi + else + echoRgb "本地版本:$backup_version 線上版本:$tag 版本一致無須更新" + fi + else + echoRgb "首次使用 強制更新腳本\n -版本:$tag\n -更新日誌:\n$(curl "https://api.github.com/repos/YAWAsau/backup_script/releases/latest" 2>/dev/null | sed -r -n 's/.*"body": *"(.*)".*/\1/p' || down -s -L "https://api.github.com/repos/YAWAsau/backup_script/releases/latest" 2>/dev/null | sed -r -n 's/.*"body": *"(.*)".*/\1/p')" download="$(echo "$json" | sed -r -n 's/.*"browser_download_url": *"(.*.zip)".*/\1/p')" curl -O "https://gh.api.99988866.xyz/$download" || down -s -L -o "$MODDIR/$tag.zip" "https://gh.api.99988866.xyz/$download" echo_log "下載${download##*/}" - if [[ $result = 0 ]]; then - echoRgb "update $backup_version > $tag" - zippath="$(find "$MODDIR" -maxdepth 1 -name "*.zip" -type f)" - GitHub="true" - else - echoRgb "請手動將備份腳本壓縮包放置在\n -$MODDIR後再次執行腳本進行更新" "0" - fi - else - echoRgb "本地版本:$backup_version 線上版本:$tag 版本一致無須更新" + zippath="$(find "$MODDIR" -maxdepth 1 -name "*.zip" -type f)" fi else echoRgb "更新獲取失敗" "0" @@ -318,6 +335,7 @@ if [[ $zippath != "" ]]; then fi rm -rf "$TMPDIR"/* find "$MODDIR" -maxdepth 1 -name "*.zip" -type f -exec rm -rf {} \; + echo "$(("$freq"+1))" >"$bin_path/freq" echoRgb "更新完成 請重新執行腳本" "2" && exit fi ;; *) diff --git a/tools/script/restore b/tools/script/restore index 9e756e7..ce1e204 100644 --- a/tools/script/restore +++ b/tools/script/restore @@ -98,6 +98,7 @@ Release_data() { #記錄開始時間 starttime1="$(date -u "+%s")" TIME="$starttime1" +[[ $(pm path "com.android.vending") != "" ]] && echoRgb "注意 為了避免還原失敗請關閉PLAY的安全檢查" en=118 { while [[ $i -le $r ]]; do diff --git a/tools/script/restore2 b/tools/script/restore2 index e382d3a..13a1688 100644 --- a/tools/script/restore2 +++ b/tools/script/restore2 @@ -16,6 +16,7 @@ path2="/data/data" [[ $(which restorecon) = "" ]] && echoRgb "restorecon命令不存在" "0" && exit 1 #記錄開始時間 starttime1="$(date -u "+%s")" +[[ $(pm path "com.android.vending") != "" ]] && echoRgb "注意 為了避免還原失敗請關閉PLAY的安全檢查" { Backup_folder="$MODDIR" if [[ ! -f $Backup_folder/app_details ]]; then