diff --git a/backup_settings.conf b/backup_settings.conf index b91a7a8..b93488e 100644 --- a/backup_settings.conf +++ b/backup_settings.conf @@ -11,7 +11,7 @@ default_behavior=0 #自定義位置支持相對位置 #自定義備份目錄輸出位置 (忽略為空將默認腳本路徑中) -Output_path="/sdcard" +Output_path="" #自定義applist.txt位置 list_location="" @@ -22,6 +22,9 @@ update=1 #假設如果存在usb隨身碟是否默認使用隨身碟?(1不詢問默認使用 0每次都進行詢問) USBdefault=0 +#自定義外部掛載點,多個分區請使用|區隔 +mount_point="rannki|0000-1" + #使用者(為空預設0) user=0 @@ -43,6 +46,7 @@ Custom_path=" /storage/emulated/0/Download/ /storage/emulated/0/Music /storage/emulated/0/DCIM/ +#/storage/emulated/0/DCIM/Snapseed /data/adb " @@ -103,4 +107,3 @@ rgb_a=226 #輔色 rgb_b=123 rgb_c=177 - diff --git a/tools/Control.dex b/tools/Control.dex deleted file mode 100644 index 960b056..0000000 Binary files a/tools/Control.dex and /dev/null differ diff --git a/tools/Device_List b/tools/Device_List index 9eb4266..ba1642e 100644 --- a/tools/Device_List +++ b/tools/Device_List @@ -1594,3 +1594,4 @@ "XQ-CQ72" "Xperia 5 IV" "XQ-DQ72" "Xperia 1 V" "XQ-DE72" "Xperia 5 V" +"RMX3350" "真我GT Neo 極速版" diff --git a/tools/busybox_path b/tools/busybox_path new file mode 100644 index 0000000..9e90e40 --- /dev/null +++ b/tools/busybox_path @@ -0,0 +1 @@ + -/data/backup_tools diff --git a/tools/classes2.dex b/tools/classes2.dex new file mode 100644 index 0000000..9902fc5 Binary files /dev/null and b/tools/classes2.dex differ diff --git a/tools/tools.sh b/tools/tools.sh index 3e2b617..37466c0 100644 --- a/tools/tools.sh +++ b/tools/tools.sh @@ -5,6 +5,7 @@ MODDIR_NAME="${MODDIR##*/}" tools_path="$MODDIR/tools" Compression_rate=3 script="${0##*/}" +backup_version="V15.8.6" update_backup_settings_conf() { echo "#1開啟0關閉 #是否在每次執行備份腳本使用音量鍵詢問如下備份需求 @@ -30,8 +31,11 @@ update="${update:-1}" #假設如果存在usb隨身碟是否默認使用隨身碟?(1不詢問默認使用 0每次都進行詢問) USBdefault="${USBdefault:-0}" +#自定義外部掛載點,多個分區請使用|區隔 +mount_point=\""${mount_point:-rannki|0000-1}"\" + #使用者(為空預設0) -user="$user" +user="${user:-0}" #是否備份使用者數據 (1備份0不備份) Backup_user_data="${Backup_user_data:-1}" @@ -185,7 +189,6 @@ else [[ $(ksud -V 2>/dev/null) = "" ]] && echo "Magisk busybox Path does not exist" fi export PATH="$PATH" -backup_version="V15.8.6" #tools_path="${tools_path/'/storage/emulated/'/'/data/media/'}" filepath="/data/backup_tools" busybox="$filepath/busybox" @@ -242,7 +245,7 @@ fi [[ ! -f $filepath/zstd ]] && echoRgb "$filepath缺少zstd" && exit 2 export PATH="$filepath:$PATH" export TZ=Asia/Taipei -export CLASSPATH="$tools_path/classes.dex:$tools_path/Control.dex" +export CLASSPATH="$tools_path/classes.dex:$tools_path/classes2.dex" zstd_sha256sum="55cc57a3d079dd90e74d972c705c4f9389dd00a7175de148e21000eab01f7ed9" tar_sha256sum="3c605b1e9eb8283555225dcad4a3bf1777ae39c5f19a2c8b8943140fd7555814" classesdex_sha256sum="09d0058763157b97d6ea2bf74bd7ec53089a9ddb496f089a159ea0027007bb94" @@ -261,6 +264,7 @@ if [[ $(which toybox | egrep -o "system") != system ]]; then fi LANG="$(getprop "persist.sys.locale")" #下列為自定義函數 +alias getssaid="app_process /system/bin com.xayah.dex.SsaidUtil $@" alias appinfo="app_process /system/bin --nice-name=appinfo han.core.order.AppInfo $@" alias down="app_process /system/bin --nice-name=down han.core.order.Down $@" alias PayloadDumper="app_process /system/bin --nice-name=payload-dumper han.core.order.payload.PayloadDumper $@" @@ -563,8 +567,10 @@ update_script() { if [[ -d $find_tools_path && $find_tools_path != $path_hierarchy/tools ]]; then rm -rf "$find_tools_path" cp -r "$path_hierarchy/tools" "${find_tools_path%/*}" - ts -f "${find_tools_path%/*}/backup_settings.conf" -o "${find_tools_path%/*}/backup_settings.conf" - echo_log "${find_tools_path%/*}/backup_settings.conf翻譯" + if [[ $shell_language != $Script_target_language ]]; then + ts -f "${find_tools_path%/*}/backup_settings.conf" -o "${find_tools_path%/*}/backup_settings.conf" + echo_log "${find_tools_path%/*}/backup_settings.conf翻譯" + fi fi Rename_script if [[ $Output_path != "" ]]; then @@ -639,7 +645,7 @@ if [[ $path_hierarchy != "" && $Script_target_language != "" ]]; then J="$(find "$path_hierarchy" -maxdepth 3 -name "tools.sh" -type f | wc -l)" find "$path_hierarchy" -maxdepth 3 -name "tools.sh" -type f | while read ; do unset shell_language - shell_language="$(grep -o 'shell_language="[^"]*"' "$REPLY" | awk -F'=' '{print $2}' | tr -d '"' | head -1)" + shell_language="$(grep -o 'shell_language="[^"]*"' "$REPLY" 2>/dev/null | awk -F'=' '{print $2}' | tr -d '"' | head -1)" case $shell_language in zh-CN|zh-TW) if [[ $Script_target_language != $shell_language ]]; then @@ -739,7 +745,7 @@ backup_path() { [[ -d $Backup ]] && outshow="使用上層路徑作為備份目錄" || echoRgb "$Backup目錄不存在" "0" fi fi - PU="$(mount | egrep -v "rannki|0000-1" | grep -w "/mnt/media_rw" | awk '{print $3,$5}')" + PU=$(mount | awk '$3 ~ "/mnt/media_rw/[^/]+$" {print $3, $5}' | egrep -v "$mount_point") OTGPATH="$(echo "$PU" | awk '{print $1}')" OTGFormat="$(echo "$PU" | awk '{print $2}')" if [[ -d $OTGPATH ]]; then @@ -796,7 +802,7 @@ Calculate_size() { size () { varr="$(echo "$1" | bc 2>/dev/null)" if [[ $varr != $1 ]]; then - b_size="$(ls -l "$1" | awk '{print $5}')" + b_size="$(ls -l "$1" 2>/dev/null | awk '{print $5}')" else b_size="$1" fi @@ -954,7 +960,7 @@ Backup_data() { ;; esac if [[ -d $data_path ]]; then - unset Filesize m_size k_size get_size + unset Filesize m_size k_size get_size ssaid Filesize="$(du -s "$data_path" | awk '{print $1}')" k_size="$(awk 'BEGIN{printf "%.2f\n", "'$Filesize'"'*1024'/'1024'}')" m_size="$(awk 'BEGIN{printf "%.2f\n", "'$k_size'"/'1024'}')" @@ -963,6 +969,18 @@ Backup_data() { else [[ $(echo "$m_size" | cut -d '.' -f1) -lt 1000 ]] && get_size="${m_size}MB" || get_size="$(awk 'BEGIN{printf "%.2f\n", "'$m_size'"/'1024'}')GB" fi + case $1 in + user) + ssaid="$(getssaid get "$user" "$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 + echo_log "備份ssaid" + fi ;; + esac if [[ $Size != $Filesize ]]; then #停止應用 case $1 in @@ -1057,6 +1075,8 @@ Release_data() { [[ ! -d $FILE_PATH ]] && mkdir -p "$FILE_PATH" fi fi + else + echoRgb "$tar_path名稱似乎有誤" "0" fi ;; esac echoRgb "恢復$FILE_NAME2數據 釋放$(size "$(awk 'BEGIN{printf "%.2f\n", "'$Size'"*'1024'}')")" "3" @@ -1434,10 +1454,16 @@ backup) [[ ! -d $Backup/modules ]] && mkdir -p "$Backup/modules" && echoRgb "$Backup/modules已創建成功\n -請按需要自行放置需要恢復時刷入的模塊在內將自動批量刷入" "1" [[ -d $Backup/Media ]] && touch_shell "Restore3" "$Backup/恢復自定義資料夾.sh" [[ ! -f $Backup/backup_settings.conf ]] && echo "#1開啟0關閉\n\n#是否在每次執行恢復腳本時使用音量鍵詢問如下需求\n#如果是那下面兩項項設置就被忽略,改為音量鍵選擇\nLo=$Lo\n\n#使用者\nuser=\n\n#腳本檢測更新後進行更新?\nupdate=$update\n\n#主色\nrgb_a=$rgb_a\n#輔色\nrgb_b=$rgb_b\nrgb_c=$rgb_c">"$Backup/backup_settings.conf" && echo "$(sed 's/true/1/g ; s/false/0/g' "$Backup/backup_settings.conf")">"$Backup/backup_settings.conf" - if [[ -f $Backup/tools/tools.sh ]]; then - filesha256="$(sha256sum "$tools_path/tools.sh" | cut -d" " -f1)" - filesha256_1="$(sha256sum "$Backup/tools/tools.sh" | cut -d" " -f1)" - [[ $filesha256 != $filesha256_1 ]] && cp -r "$tools_path/tools.sh" "$Backup/tools/tools.sh" + if [[ -d $Backup/tools ]]; then + find "$Backup/tools" -maxdepth 1 -type f | while read; do + Tools_FILE_NAME="${REPLY##*/}" + filesha256="$(sha256sum "$tools_path/$Tools_FILE_NAME" | cut -d" " -f1)" + filesha256_1="$(sha256sum "$REPLY" | cut -d" " -f1)" + if [[ $filesha256 != $filesha256_1 ]]; then + cp -r "$tools_path/$Tools_FILE_NAME" "$REPLY" + echoRgb "更新$REPLY" + fi + done fi filesize="$(du -s "$Backup" | awk '{print $1}')" Quantity=0 @@ -1475,7 +1501,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 + 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 if [[ $name1 = !* || $name1 = !* ]]; then name1="$(echo "$name1" | sed 's/!//g ; s/!//g')" echoRgb "跳過備份所有數據" "0" @@ -1490,7 +1516,7 @@ backup) if [[ -f $app_details ]]; then . "$app_details" &>/dev/null 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 + 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 Backup_folder="$Backup/${name1}[${name2}]" app_details="$Backup_folder/app_details" [[ -f $app_details ]] && . "$app_details" &>/dev/null @@ -1555,7 +1581,6 @@ backup) [[ $add_app2 = "" ]] && add_app2="暫無更新" echoRgb "\n -已更新的apk=\"$osn\"\n -已新增的備份=\"$osk\"\n -apk版本號無變化=\"$osj\"\n -下列為版本號已變更的應用\n$update_apk2\n -新增的備份....\n$add_app2" "3" echo "$(sort "$txt2" | sed -e '/^$/d')" >"$txt2" - if [[ $backup_media = true && $backup_mode = "" ]]; then A=1 B="$(echo "$Custom_path" | grep -v "#" | sed -e '/^$/d' | sed -n '$=')" @@ -1746,6 +1771,21 @@ Restore|Restore2) find "$Backup_folder" -maxdepth 1 ! -name "apk.*" -name "*.tar*" -type f 2>/dev/null | sort | while read; do Release_data "$REPLY" done + if [[ $Ssaid != "" ]]; then + if [[ $(getssaid get "$user" "$name2") != $Ssaid ]]; then + getssaid set "$user" "$name2" "$Ssaid" + if [[ $(getssaid get "$user" "$name2") = $Ssaid ]]; then + echoRgb "SSAID恢復成功" "1" + SSAID_Package="$(echo "$name1 \"$name2\"")" + SSAID_Package2="$(echo "$SSAID_Package\n$SSAID_Package2")" + else + echoRgb "SSAID恢復失敗" "0" + SSAID_Package1="$(echo "$name1 \"$name2\"")" + SSAID_Package3="$(echo "$SSAID_Package1\n$SSAID_Package3")" + fi + fi + unset Ssaid + fi Set_service fi else @@ -1761,6 +1801,7 @@ Restore|Restore2) fi if [[ $i = $r && $operate != Restore2 ]]; then endtime 1 "應用恢復" "2" + 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" @@ -1798,7 +1839,7 @@ Restore|Restore2) rm -rf "$TMPDIR/scriptTMP" "$TXT" Set_screen_pause_seconds off starttime1="$TIME" - echoRgb "$DX完成" && endtime 1 "$DX開始到結束" && echoRgb "如發現應用閃退請重新開機" + echoRgb "$DX完成" && endtime 1 "$DX開始到結束" && [[ $SSAID_Package2 != "" ]] && echoRgb "SSAID恢復後必須重啟套用,如發現應用閃退請重新開機" rm -rf "$TMPDIR"/* } & wait && exit diff --git a/更新脚本机型列表.sh b/更新脚本机型列表.sh new file mode 100644 index 0000000..b9fd531 --- /dev/null +++ b/更新脚本机型列表.sh @@ -0,0 +1,8 @@ +if [ -f "${0%/*}/tools/tools.sh" ]; then + MODDIR="${0%/*}" + operate="Device_List" + . "${0%/*}/tools/tools.sh" | tee "$MODDIR/log.txt" +else + [[ $(echo "${0%/*}" | grep -o 'bin.mt.plus/temp') != "" ]] && echo "你妈没告诉你脚本要解压缩吗?傻逼玩儿" && exit 2 + echo "${0%/*}/tools/tools.sh遗失" +fi \ No newline at end of file