diff --git a/backup_settings.conf b/backup_settings.conf index 86e2a89..6b3d753 100644 --- a/backup_settings.conf +++ b/backup_settings.conf @@ -6,6 +6,9 @@ Lo=0 #備份路徑位置為絕對位置或是當前環境位置(1環境位置 0腳本所在位置) path=0 +#假設如果存在usb隨身碟是否默認使用隨身碟?(1不詢問默認使用 0每次都進行詢問) +USBdefault=0 + #選擇是否只備份split apk(分割apk檔,1備份split apk 0混合備份) Splist=0 @@ -16,7 +19,7 @@ Backup_user_data=1 Backup_obb_data=1 #是否在應用數據備份好後備份自定義目錄 -backup_media=0 +backup_media=1 #單獨生成可在recovery中用於救急備份的卡刷,並且跳過應用備份? Hybrid_backup=0 diff --git a/tools/bin/appinfo.dex b/tools/bin/appinfo.dex index 8a12c13..c8ee5c9 100644 Binary files a/tools/bin/appinfo.dex and b/tools/bin/appinfo.dex differ diff --git a/tools/bin/bin.sh b/tools/bin/bin.sh index a5cbdf1..3e5d81a 100644 --- a/tools/bin/bin.sh +++ b/tools/bin/bin.sh @@ -18,11 +18,10 @@ if [[ -d $(magisk --path 2>/dev/null) ]]; then else echo "Magisk busybox Path does not exist" fi ; export PATH="$PATH" -backup_version="V10.7 2021/10/25-21:07" +backup_version="V10.7 2021/10/27-20:07" #設置二進制命令目錄位置 [[ $bin_path = "" ]] && echo "未正確指定bin.sh位置" && exit 2 -bin_path="${bin_path/'/storage/emulated/'/'/data/media/'}" -MODDIR="${MODDIR/'/storage/emulated/'/'/data/media/'}" +#bin_path="${bin_path/'/storage/emulated/'/'/data/media/'}" Status_log="$MODDIR/執行狀態日誌.txt" rm -rf "$Status_log" filepath="/data/backup_tools" @@ -124,11 +123,11 @@ get_version() { case $version in KEY_VOLUMEUP) branch=true - echoRgb "$1" + echoRgb "$1" "1" ;; KEY_VOLUMEDOWN) branch=false - echoRgb "$2" + echoRgb "$2" "0" ;; *) continue diff --git a/tools/script/Get_DirName b/tools/script/Get_DirName index a8f2e4c..6b2b039 100644 --- a/tools/script/Get_DirName +++ b/tools/script/Get_DirName @@ -8,7 +8,7 @@ echo "#不需要恢復還原的應用請在開頭注釋# 比如#xxxxxxxx 酷安" 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 + . "$REPLY/app_details" if [[ $PackageName != "" ]]; then echo "${REPLY##*/} $PackageName">>"$txt" fi diff --git a/備份應用.sh b/備份應用.sh index 02f14f2..d2dfcd2 100644 --- a/備份應用.sh +++ b/備份應用.sh @@ -29,6 +29,7 @@ fi isBoolean "$Lo" && Lo="$nsx" 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" @@ -61,16 +62,23 @@ echoRgb "提示 腳本支持後台壓縮 可以直接離開腳本\n -或是關 if [[ $PU != "" ]]; then [[ -f /proc/mounts ]] && PT="$(cat /proc/mounts | grep "$PU" | awk '{print $2}')" if [[ -d $PT ]]; then - echoRgb "檢測到usb 是否在usb備份\n -音量上是,音量下不是" - get_version "選擇了USB備份" "選擇了本地備份" - if $branch = true ]]; then + if [[ $USBdefault = false ]]; then + echoRgb "檢測到隨身碟 是否在隨身碟備份\n -音量上是,音量下不是" + get_version "選擇了隨身碟備份" "選擇了本地備份" + if $branch = true ]]; then + Backup="$PT/Backup_$Compression_method" + data="/dev/block/vold/$PU" + hx="USB" + fi + else + echoRgb "於隨身碟備份" "1" Backup="$PT/Backup_$Compression_method" data="/dev/block/vold/$PU" hx="USB" fi fi else - echoRgb "沒有檢測到USB於本地備份" "2" + echoRgb "沒有檢測到隨身碟於本地備份" "1" fi [[ $Backup_user_data = false ]] && echoRgb "當前backup_settings.conf的\n -Backup_user_data為0將不備份user數據" "0" [[ $Backup_obb_data = false ]] && echoRgb "當前backup_settings.conf的\n -Backup_obb_data為0將不備份外部數據" "0" diff --git a/本地一鍵更新腳本.sh b/本地一鍵更新腳本.sh new file mode 100644 index 0000000..fc91f7d --- /dev/null +++ b/本地一鍵更新腳本.sh @@ -0,0 +1,51 @@ +MODDIR="${0%/*}" +#鏈接腳本設置環境變量 +tools_path="$MODDIR/tools" +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" +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" + 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 + 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" + 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 \ No newline at end of file diff --git a/生成應用列表.sh b/生成應用列表.sh index 9c56cb1..e6cf540 100644 --- a/生成應用列表.sh +++ b/生成應用列表.sh @@ -28,7 +28,7 @@ i=1 bn=118 rm -rf "$MODDIR/tmp" starttime1="$(date -u "+%s")" -appinfo -d " " -o ands,pn -pn $system $launcher_app -3 2>/dev/null | sort | sed 's/\///g ; s/\://g ; s/(//g ; s/)//g ; s/\[//g ; s/\]//g ; s/\-//g' | egrep -v 'ice.message|oneplus|miui|xiaomi|oppo|flyme' | while read; do +appinfo -d " " -o ands,pn -pn $system $launcher_app -3 2>/dev/null | sort | sed 's/\///g ; s/\://g ; s/(//g ; s/)//g ; s/\[//g ; s/\]//g ; s/\-//g' | egrep -v 'ice.message|oneplus|miui|xiaomi|oppo|flyme|meizu|com.android.soundrecorder' | while read; do [[ $bn -ge 229 ]] && bn=118 app_1=($REPLY $REPLY) if [[ $(cat "$nametxt" | grep -oE "${app_1[1]}$") = "" ]]; then