This commit is contained in:
Yawasau
2023-12-17 12:24:51 +08:00
parent b2dcdc4e02
commit 1fb7f93b9f
15 changed files with 159 additions and 3600 deletions

View File

@@ -12,9 +12,6 @@ default_behavior=0
#自定義備份目錄輸出位置 (忽略為空將默認腳本路徑中) #自定義備份目錄輸出位置 (忽略為空將默認腳本路徑中)
Output_path= Output_path=
#備份與恢復遭遇異常或是結束後發送通知(toast與狀態欄提示)
toast_info=1
#自動更新腳本 #自動更新腳本
update=1 update=1

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1 +0,0 @@
 -/data/backup_tools

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -65,7 +65,7 @@ else
echo "Magisk busybox Path does not exist" echo "Magisk busybox Path does not exist"
fi fi
export PATH="$PATH" export PATH="$PATH"
backup_version="V15.7.8" backup_version="V15.8.0"
#tools_path="${tools_path/'/storage/emulated/'/'/data/media/'}" #tools_path="${tools_path/'/storage/emulated/'/'/data/media/'}"
filepath="/data/backup_tools" filepath="/data/backup_tools"
busybox="$filepath/busybox" busybox="$filepath/busybox"
@@ -170,14 +170,6 @@ endtime() {
[[ $duration != "" ]] && echoRgb "$2用時:$duration" || echoRgb "$2用時:0秒" [[ $duration != "" ]] && echoRgb "$2用時:$duration" || echoRgb "$2用時:0秒"
} }
nskg=1 nskg=1
Print() {
a=$(echo "SpeedBackup" | sed 's#/#{xiegang}#g')
b=$(echo "$(date '+%T')\n$1" | sed 's#/#{xiegang}#g')
content query --uri content://ice.message/notify/"$nskg<|>$a<|>$b<|>bs" >/dev/null 2>&1
}
longToast() {
content query --uri content://ice.message/long/"$*" >/dev/null 2>&1
}
get_version() { get_version() {
while :; do while :; do
keycheck keycheck
@@ -216,7 +208,6 @@ echo_log() {
result=0 result=0
else else
echoRgb "$1失敗,過世了" "0" echoRgb "$1失敗,過世了" "0"
Print "$1失敗,過世了"
result=1 result=1
fi fi
} }
@@ -271,7 +262,13 @@ Rename_script () {
find "$1" -maxdepth 1 -name "*.sh" -type f -not -name "終止腳本.sh" -not -name "tools.sh" | while read ; do find "$1" -maxdepth 1 -name "*.sh" -type f -not -name "終止腳本.sh" -not -name "tools.sh" | while read ; do
Script_type="$(grep -o 'operate="[^"]*"' "$REPLY" 2>/dev/null | awk -F'=' '{print $2}' | tr -d '"' | head -1)" Script_type="$(grep -o 'operate="[^"]*"' "$REPLY" 2>/dev/null | awk -F'=' '{print $2}' | tr -d '"' | head -1)"
case $Script_type in case $Script_type in
backup|Getlist|backup_media|Restore|dumpname|check_file|convert|Restore3) touch_shell "$Script_type" "$REPLY" ;; backup|Getlist|backup_media|Restore|dumpname|check_file|convert|Restore3)
Script_type2="$(grep -o 'backup_mode="[^"]*"' "$REPLY" 2>/dev/null | awk -F'=' '{print $2}' | tr -d '"' | head -1)"
if [[ $Script_type = backup && Script_type2 = 1 ]]; then
touch_shell "$Script_type" "$REPLY" "backup_mode"
else
touch_shell "$Script_type" "$REPLY"
fi ;;
esac esac
done done
case $LANG in case $LANG in
@@ -282,14 +279,19 @@ Rename_script () {
esac esac
} }
touch_shell () { touch_shell () {
if [[ $1 = Restore2 ]]; then unset conf_path MODDIR_Path
MODDIR_Path='${0%/*}'
conf_path='${0%/*}/backup_settings.conf'
case $1 in
Restore2)
MODDIR_Path='${0%/*/*}' MODDIR_Path='${0%/*/*}'
conf_path='${0%/*/*}/backup_settings.conf' conf_path='${0%/*/*}/backup_settings.conf' ;;
elif [[ $1 = backup ]]; then backup)
MODDIR_Path='${0%/*/*/*}' if [[ $3 = backup_mode ]]; then
else MODDIR_Path='${0%/*/*/*}'
MODDIR_Path='${0%/*}' conf_path='${0%/*/*/*}/backup_settings.conf'
fi fi ;;
esac
echo "if [ -f \"$MODDIR_Path/tools/tools.sh\" ]; then\n MODDIR=\"\${0%/*}\"\n operate=\"$1\"\n conf_path=\"$conf_path\"\n . \"$MODDIR_Path/tools/tools.sh\" | tee \"\$MODDIR/log.txt\"\nelse\n echo \"$MODDIR_Path/tools/tools.sh遺失\"\nfi" >"$2" echo "if [ -f \"$MODDIR_Path/tools/tools.sh\" ]; then\n MODDIR=\"\${0%/*}\"\n operate=\"$1\"\n conf_path=\"$conf_path\"\n . \"$MODDIR_Path/tools/tools.sh\" | tee \"\$MODDIR/log.txt\"\nelse\n echo \"$MODDIR_Path/tools/tools.sh遺失\"\nfi" >"$2"
} }
update_script() { update_script() {
@@ -299,94 +301,95 @@ update_script() {
1) 1)
if [[ $(unzip -l "$zipFile" | awk '{print $4}' | egrep -o "^backup_settings.conf$") != "" ]]; then if [[ $(unzip -l "$zipFile" | awk '{print $4}' | egrep -o "^backup_settings.conf$") != "" ]]; then
unzip -o "$zipFile" -j "tools/tools.sh" -d "$MODDIR" &>/dev/null unzip -o "$zipFile" -j "tools/tools.sh" -d "$MODDIR" &>/dev/null
shell_language="$(grep -o 'shell_language="[^"]*"' "$MODDIR/tools.sh" 2>/dev/null | awk -F'=' '{print $2}' | tr -d '"' | head -1)" if [[ -f $MODDIR/tools.sh ]]; then
if [[ $(expr "$(echo "$backup_version" | tr -d "a-zA-Z")" \> "$(awk '/backup_version/{print $1}' "$MODDIR/tools.sh" | cut -f2 -d '=' | head -1 | sed 's/\"//g' | tr -d "a-zA-Z")") -eq 0 ]]; then if [[ $(expr "$(echo "$backup_version" | tr -d "a-zA-Z")" \> "$(awk '/backup_version/{print $1}' "$MODDIR/tools.sh" | cut -f2 -d '=' | head -1 | sed 's/\"//g' | tr -d "a-zA-Z")") -eq 0 ]]; then
case $MODDIR in shell_language="$(grep -o 'shell_language="[^"]*"' "$MODDIR/tools.sh" 2>/dev/null | awk -F'=' '{print $2}' | tr -d '"' | head -1)"
*Backup_*) case $MODDIR in
if [[ -f $MODDIR/app_details ]]; then *Backup_*)
echoRgb "請在${MODDIR%/*}更新腳本" "0" if [[ -f $MODDIR/app_details ]]; then
rm -rf "$MODDIR/tools.sh" echoRgb "請在${MODDIR%/*}更新腳本" "0"
exit 2 rm -rf "$MODDIR/tools.sh"
fi ;; exit 2
esac
echoRgb "$zipFile更新"
cp -r "$tools_path" "$TMPDIR" && rm -rf "$tools_path"
unzip -o "$zipFile" tools/* -d "$MODDIR" | sed 's/inflating/釋放/g ; s/creating/創建/g ; s/Archive/解壓縮/g'
echo_log "解壓縮${zipFile##*/}"
if [[ $result = 0 ]]; then
ts -f "$MODDIR/backup_settings.conf" -o "$MODDIR/backup_settings.conf"
case $LANG in
*-CN | *-cn)
if [[ $shell_language = zh-TW ]]; then
ts -f "$MODDIR/tools/Device_List" -o "$MODDIR/tools/Device_List"
ts -f "$MODDIR/tools/tools.sh" -o "$MODDIR/tools/tools.sh" && sed -i 's/shell_language=\"zh-TW\"/shell_language=\"zh-CN\"/g' "$MODDIR/tools/tools.sh"
[[ $? = 0 ]] && echoRgb "轉換簡體中文腳本完成"
fi ;; fi ;;
*) esac
if [[ $shell_language != zh-TW ]]; then echoRgb "$zipFile更新"
ts -f "$MODDIR/tools/Device_List" -o "$MODDIR/tools/Device_List" cp -r "$tools_path" "$TMPDIR" && rm -rf "$tools_path"
ts -f "$MODDIR/tools/tools.sh" -o "$MODDIR/tools/tools.sh" && sed -i 's/shell_language=\"zh-CN\"/shell_language=\"zh-TW\"/g' "$MODDIR/tools/tools.sh" unzip -o "$zipFile" tools/* -d "$MODDIR" | sed 's/inflating/釋放/g ; s/creating/創建/g ; s/Archive/解壓縮/g'
[[ $? = 0 ]] && echoRgb "轉換繁體中文腳本完成" echo_log "解壓縮${zipFile##*/}"
fi ;; if [[ $result = 0 ]]; then
esac ts -f "$MODDIR/backup_settings.conf" -o "$MODDIR/backup_settings.conf"
case $MODDIR in case $LANG in
*Backup_*) *-CN | *-cn)
if [[ ! -f $MODDIR/app_details ]]; then if [[ $shell_language = zh-TW ]]; then
echoRgb "更新當前${MODDIR##*/}/tools" ts -f "$MODDIR/tools/Device_List" -o "$MODDIR/tools/Device_List"
Rename_script "$MODDIR" ts -f "$MODDIR/tools/tools.sh" -o "$MODDIR/tools/tools.sh" && sed -i 's/shell_language=\"zh-TW\"/shell_language=\"zh-CN\"/g' "$MODDIR/tools/tools.sh"
if [[ -d ${MODDIR%/*}/tools ]]; then [[ $? = 0 ]] && echoRgb "轉換簡體中文腳本完成"
echoRgb "更新${MODDIR%/*}/tools" fi ;;
rm -rf "${MODDIR%/*}/tools" *)
cp -r "$tools_path" "${MODDIR%/*}" if [[ $shell_language != zh-TW ]]; then
Rename_script "${MODDIR%/*}" ts -f "$MODDIR/tools/Device_List" -o "$MODDIR/tools/Device_List"
ts -f "${MODDIR%/*}/backup_settings.conf" -o "${MODDIR%/*}/backup_settings.conf" ts -f "$MODDIR/tools/tools.sh" -o "$MODDIR/tools/tools.sh" && sed -i 's/shell_language=\"zh-CN\"/shell_language=\"zh-TW\"/g' "$MODDIR/tools/tools.sh"
fi [[ $? = 0 ]] && echoRgb "轉換繁體中文腳本完成"
find "$MODDIR" -maxdepth 1 -name "app_details" -type f 2>/dev/null | sort | while read; do fi ;;
MODDIR_NAME="${REPLY%/*}" esac
[[ -f $MODDIR_NAME/recover.sh ]] && touch_shell "Restore2" "$MODDIR_NAME/recover.sh" case $MODDIR in
[[ $MODDIR_NAME/backup.sh ]] && echo 'if [ -f "${0%/*/*/*}/tools/tools.sh" ]; then\n MODDIR="${0%/*/*/*}"\n operate="backup"\n conf_path="${0%/*/*/*}/backup_settings.conf"\n [[ ! -f $conf_path ]] && echo "$conf_path遺失"\n backup_mode=1\n . "${0%/*}/app_details" &>/dev/null\n . "${0%/*/*/*}/tools/tools.sh" | tee "$MODDIR/log.txt"\nelse\n echo "${0%/*/*}/tools/tools.sh遺失"\nfi' >"$MODDIR_NAME/backup.sh" *Backup_*)
done if [[ ! -f $MODDIR/app_details ]]; then
fi echoRgb "更新當前${MODDIR##*/}/tools"
;; Rename_script "$MODDIR"
*) if [[ -d ${MODDIR%/*}/tools ]]; then
Rename_script "$MODDIR" echoRgb "更新${MODDIR%/*}/tools"
if [[ $(find "$MODDIR" -maxdepth 1 -name "Backup_*" -type d) != "" ]]; then rm -rf "${MODDIR%/*}/tools"
find "$MODDIR" -maxdepth 1 -name "Backup_*" -type d | while read backup_path; do cp -r "$tools_path" "${MODDIR%/*}"
if [[ -d $backup_path && $backup_path != $MODDIR ]]; then Rename_script "${MODDIR%/*}"
echoRgb "更新當前tools目錄+${backup_path##*/}/tools" ts -f "${MODDIR%/*}/backup_settings.conf" -o "${MODDIR%/*}/backup_settings.conf"
rm -rf "$backup_path/tools" fi
cp -r "$tools_path" "$backup_path" find "$MODDIR" -maxdepth 1 -name "app_details" -type f 2>/dev/null | sort | while read; do
cp -r "$MODDIR/終止腳本.sh" "$backup_path" MODDIR_NAME="${REPLY%/*}"
Rename_script "$backup_path" [[ -f $MODDIR_NAME/recover.sh ]] && touch_shell "Restore2" "$MODDIR_NAME/recover.sh"
ts -f "$backup_path/backup_settings.conf" -o "$backup_path/backup_settings.conf" [[ $MODDIR_NAME/backup.sh ]] && echo 'if [ -f "${0%/*/*/*}/tools/tools.sh" ]; then\n MODDIR="${0%/*/*/*}"\n operate="backup"\n conf_path="${0%/*/*/*}/backup_settings.conf"\n [[ ! -f $conf_path ]] && echo "$conf_path遺失"\n backup_mode=1\n . "${0%/*}/app_details" &>/dev/null\n . "${0%/*/*/*}/tools/tools.sh" | tee "$MODDIR/log.txt"\nelse\n echo "${0%/*/*}/tools/tools.sh遺失"\nfi' >"$MODDIR_NAME/backup.sh"
find "$backup_path" -maxdepth 2 -name "app_details" -type f 2>/dev/null | sort | while read; do done
MODDIR_NAME="${REPLY%/*}" fi ;;
[[ -f $MODDIR_NAME/recover.sh ]] && touch_shell "Restore2" "$MODDIR_NAME/recover.sh" *)
[[ $MODDIR_NAME/backup.sh ]] && echo 'if [ -f "${0%/*/*/*}/tools/tools.sh" ]; then\n MODDIR="${0%/*/*/*}"\n operate="backup"\n conf_path="${0%/*/*/*}/backup_settings.conf"\n [[ ! -f $conf_path ]] && echo "$conf_path遺失"\n backup_mode=1\n . "${0%/*}/app_details" &>/dev/null\n . "${0%/*/*/*}/tools/tools.sh" | tee "$MODDIR/log.txt"\nelse\n echo "${0%/*/*}/tools/tools.sh遺失"\nfi' >"$MODDIR_NAME/backup.sh" Rename_script "$MODDIR"
done if [[ $(find "$MODDIR" -maxdepth 1 -name "Backup_*" -type d) != "" ]]; then
fi find "$MODDIR" -maxdepth 1 -name "Backup_*" -type d | while read backup_path; do
done if [[ -d $backup_path && $backup_path != $MODDIR ]]; then
else echoRgb "更新當前tools目錄+${backup_path##*/}/tools"
echoRgb "更新當前${MODDIR##*/}/tools" rm -rf "$backup_path/tools"
fi cp -r "$tools_path" "$backup_path"
;; cp -r "$MODDIR/終止腳本.sh" "$backup_path"
esac Rename_script "$backup_path"
else ts -f "$backup_path/backup_settings.conf" -o "$backup_path/backup_settings.conf"
cp -r "$TMPDIR/tools" "$MODDIR" find "$backup_path" -maxdepth 2 -name "app_details" -type f 2>/dev/null | sort | while read; do
fi MODDIR_NAME="${REPLY%/*}"
rm -rf "$TMPDIR"/* "$zipFile" "$MODDIR/tools.sh" [[ -f $MODDIR_NAME/recover.sh ]] && touch_shell "Restore2" "$MODDIR_NAME/recover.sh"
echoRgb "更新完成 請重新執行腳本" "2" [[ $MODDIR_NAME/backup.sh ]] && echo 'if [ -f "${0%/*/*/*}/tools/tools.sh" ]; then\n MODDIR="${0%/*/*/*}"\n operate="backup"\n conf_path="${0%/*/*/*}/backup_settings.conf"\n [[ ! -f $conf_path ]] && echo "$conf_path遺失"\n backup_mode=1\n . "${0%/*}/app_details" &>/dev/null\n . "${0%/*/*/*}/tools/tools.sh" | tee "$MODDIR/log.txt"\nelse\n echo "${0%/*/*}/tools/tools.sh遺失"\nfi' >"$MODDIR_NAME/backup.sh"
exit done
fi
done
else
echoRgb "更新當前${MODDIR##*/}/tools"
fi ;;
esac
else
cp -r "$TMPDIR/tools" "$MODDIR"
fi
rm -rf "$TMPDIR"/* "$zipFile" "$MODDIR/tools.sh"
echoRgb "更新完成 請重新執行腳本" "2"
exit
else
echoRgb "${zipFile##*/}版本低於當前版本,自動刪除" "0"
rm -rf "$zipFile" "$MODDIR/tools.sh"
fi
else else
echoRgb "${zipFile##*/}版本低於當前版本,自動刪除" "0" rm -rf "$zipFile"
rm -rf "$zipFile" "$MODDIR/tools.sh" unset zipFile
fi fi
fi fi ;;
;;
*) *)
echoRgb "錯誤 請刪除當前目錄多餘zip\n -保留一個最新的數據備份.zip\n -下列為當前目錄zip\n$zipFile" "0" echoRgb "錯誤 請刪除當前目錄多餘zip\n -保留一個最新的數據備份.zip\n -下列為當前目錄zip\n$zipFile" "0"
exit 1 exit 1 ;;
;;
esac esac
fi fi
unset NAME unset NAME
@@ -456,46 +459,40 @@ else
fi fi
case $operate in case $operate in
Getlist|Restore2|Restore3|dumpname|check_file|backup_media|convert|Device_List) ;; Getlist|Restore2|Restore3|dumpname|check_file|backup_media|convert|Device_List) ;;
*) *)isBoolean "$Lo" "Lo" && Lo="$nsx" ;;
isBoolean "$Lo" "Lo" && Lo="$nsx"
if [[ $Lo = false ]]; then
isBoolean "$toast_info" "toast_info" && toast_info="$nsx"
else
echoRgb "備份完成或是遭遇異常發送toast與狀態欄通知\n -音量上提示,音量下靜默備份" "2"
get_version "提示" "靜默備份" && toast_info="$branch"
fi
;;
esac esac
cdn=2 cdn=2
#settings get system system_locales #settings get system system_locales
Language="https://api.github.com/repos/YAWAsau/backup_script/releases/latest" Language="https://api.github.com/repos/YAWAsau/backup_script/releases/latest"
if [[ $LANG != "" ]]; then if [[ $LANG != "" ]]; then
Set_script_language() { Set_script_language() {
echoRgb "腳本語系為$shell_language....轉換為$LANG中...." if [[ $shell_language != "" ]]; then
case $MODDIR in echoRgb "腳本語系為$shell_language....轉換為$LANG中...."
*Backup_*) case $MODDIR in
if [[ -f $MODDIR/app_details ]]; then *Backup_*)
Rename_script "${MODDIR%/*}" if [[ -f $MODDIR/app_details ]]; then
ts -f "${MODDIR%/*}/backup_settings.conf" -o "${MODDIR%/*}/backup_settings.conf" Rename_script "${MODDIR%/*}"
[[ -d ${MODDIR%/*/*}/tools ]] && ts -f "${MODDIR%/*/*}/backup_settings.conf" -o "${MODDIR%/*/*}/backup_settings.conf" && Rename_script "${MODDIR%/*/*}" ts -f "${MODDIR%/*}/backup_settings.conf" -o "${MODDIR%/*}/backup_settings.conf"
else [[ -d ${MODDIR%/*/*}/tools ]] && ts -f "${MODDIR%/*/*}/backup_settings.conf" -o "${MODDIR%/*/*}/backup_settings.conf" && Rename_script "${MODDIR%/*/*}"
Rename_script "$MODDIR" else
ts -f "$MODDIR/backup_settings.conf" -o "$MODDIR/backup_settings.conf" Rename_script "$MODDIR"
[[ -d ${MODDIR%/*}/tools ]] && ts -f "${MODDIR%/*}/backup_settings.conf" -o "${MODDIR%/*}/backup_settings.conf" && Rename_script "${MODDIR%/*}" ts -f "$MODDIR/backup_settings.conf" -o "$MODDIR/backup_settings.conf"
fi ;; [[ -d ${MODDIR%/*}/tools ]] && ts -f "${MODDIR%/*}/backup_settings.conf" -o "${MODDIR%/*}/backup_settings.conf" && Rename_script "${MODDIR%/*}"
*) fi ;;
Rename_script "$MODDIR" *)
ts -f "$MODDIR/backup_settings.conf" -o "$MODDIR/backup_settings.conf" Rename_script "$MODDIR"
if [[ $(find "$MODDIR" -maxdepth 1 -name "Backup_*" -type d) != "" ]]; then ts -f "$MODDIR/backup_settings.conf" -o "$MODDIR/backup_settings.conf"
find "$MODDIR" -maxdepth 1 -name "Backup_*" -type d | while read backup_path; do if [[ $(find "$MODDIR" -maxdepth 1 -name "Backup_*" -type d) != "" ]]; then
[[ -d $backup_path && $backup_path != $MODDIR ]] && ts -f "$backup_path/backup_settings.conf" -o "$backup_path/backup_settings.conf" && Rename_script "$backup_path" find "$MODDIR" -maxdepth 1 -name "Backup_*" -type d | while read backup_path; do
done [[ -d $backup_path && $backup_path != $MODDIR ]] && ts -f "$backup_path/backup_settings.conf" -o "$backup_path/backup_settings.conf" && Rename_script "$backup_path"
else done
Rename_script "${MODDIR%/*}" else
ts -f "${MODDIR%/*}/backup_settings.conf" -o "${MODDIR%/*}/backup_settings.conf" Rename_script "${MODDIR%/*}"
fi ;; ts -f "${MODDIR%/*}/backup_settings.conf" -o "${MODDIR%/*}/backup_settings.conf"
esac fi ;;
[[ $? = 0 ]] && echoRgb "轉換腳本完成,退出腳本重新執行即可使用$1" && exit 0 esac
[[ $? = 0 ]] && echoRgb "轉換腳本完成,退出腳本重新執行即可使用$1" && exit 0
fi
} }
case $LANG in case $LANG in
*-TW | *-tw | *-HK) *-TW | *-tw | *-HK)
@@ -544,7 +541,6 @@ if [[ $LANG != "" ]]; then
else else
echoRgb "獲取系統語系失敗" "0" echoRgb "獲取系統語系失敗" "0"
fi fi
echo "${0%/*}"/*/tools/tools.sh
#效驗選填是否正確 #效驗選填是否正確
Lo="$(echo "$Lo" | sed 's/true/1/g ; s/false/0/g')" Lo="$(echo "$Lo" | sed 's/true/1/g ; s/false/0/g')"
isBoolean "$Lo" "Lo" && Lo="$nsx" isBoolean "$Lo" "Lo" && Lo="$nsx"
@@ -562,7 +558,7 @@ if [[ $json != "" ]]; then
download="$(echo "$json" | sed -r -n 's/.*"browser_download_url": *"(.*.zip)".*/\1/p')" download="$(echo "$json" | sed -r -n 's/.*"browser_download_url": *"(.*.zip)".*/\1/p')"
case $cdn in case $cdn in
1) zip_url="http://huge.cf/download/?huge-url=$download" ;; 1) zip_url="http://huge.cf/download/?huge-url=$download" ;;
2) zip_url="https://gh-proxy.com/$download" ;; 2) zip_url="https://github.moeyy.xyz/$download" ;;
3) zip_url="https://gh.api.99988866.xyz/$download" ;; 3) zip_url="https://gh.api.99988866.xyz/$download" ;;
4) zip_url="https://github.lx164.workers.dev/$download" ;; 4) zip_url="https://github.lx164.workers.dev/$download" ;;
5) zip_url="https://shrill-pond-3e81.hunsh.workers.dev/$download" ;; 5) zip_url="https://shrill-pond-3e81.hunsh.workers.dev/$download" ;;
@@ -571,7 +567,7 @@ if [[ $json != "" ]]; then
if [[ $(expr "$(echo "$backup_version" | tr -d "a-zA-Z")" \> "$(echo "$download" | tr -d "a-zA-Z")") -eq 0 ]]; then if [[ $(expr "$(echo "$backup_version" | tr -d "a-zA-Z")" \> "$(echo "$download" | tr -d "a-zA-Z")") -eq 0 ]]; then
echoRgb "發現新版本:$tag" echoRgb "發現新版本:$tag"
if [[ $update = true ]]; then if [[ $update = true ]]; then
body="$(echo "$json" | sed 's/\"body\": \"/body=\"/g' | grep -o 'body="[^"]*"' | tr -d '"' | cut -f2 -d '=')" && [[ $body != "" ]] && echoRgb "更新日誌:\n$body" echo "$json" | sed 's/\"body\": \"/body=\"/g'>"$TMPDIR/updateinfo" && . "$TMPDIR/updateinfo" &>/dev/null ; [[ $body != "" ]] && echoRgb "更新日誌:\n$body" && rm -rf "$TMPDIR/updateinfo"
echoRgb "是否更新腳本?\n -音量上更新,音量下不更新" "2" echoRgb "是否更新腳本?\n -音量上更新,音量下不更新" "2"
get_version "更新" "不更新" && choose="$branch" get_version "更新" "不更新" && choose="$branch"
if [[ $choose = true ]]; then if [[ $choose = true ]]; then
@@ -1216,9 +1212,9 @@ backup)
sort -u "$txt" -o "$txt" 2>/dev/null sort -u "$txt" -o "$txt" 2>/dev/null
data="$MODDIR" data="$MODDIR"
hx="本地" hx="本地"
echoRgb "腳本受到內核機制影響 息屏後io性能嚴重影響\n -請勿關閉終端或是息屏備份 如需終止腳本\n -請執行終止腳本.sh即可停止\n -備份結束將發送toast提示語" "3" echoRgb "腳本受到內核機制影響 息屏後io性能嚴重影響\n -請勿關閉終端或是息屏備份 如需終止腳本\n -請執行終止腳本.sh即可停止" "3"
backup_path backup_path
echoRgb "配置詳細:\n -壓縮方式:$Compression_method\n -音量鍵確認:$Lo\n -Toast:$toast_info\n -更新:$update\n -已卸載應用檢查:$delete_folder\n -卸載應用默認操作(true刪除false移動):$default_behavior\n -默認使用usb:$USBdefault\n -備份外部數據:$Backup_obb_data\n -備份user數據:$Backup_user_data\n -自定義目錄備份:$backup_media\n -黑名單模式:$blacklist_mode" echoRgb "配置詳細:\n -壓縮方式:$Compression_method\n -音量鍵確認:$Lo\n -更新:$update\n -已卸載應用檢查:$delete_folder\n -卸載應用默認操作(true刪除false移動):$default_behavior\n -默認使用usb:$USBdefault\n -備份外部數據:$Backup_obb_data\n -備份user數據:$Backup_user_data\n -自定義目錄備份:$backup_media\n -黑名單模式:$blacklist_mode"
D="1" D="1"
C="$(grep -v "#" "$txt" | sed -e '/^$/d' | sed -n '$=')" C="$(grep -v "#" "$txt" | sed -e '/^$/d' | sed -n '$=')"
[[ $user = 0 ]] && Apk_info="$(appinfo -sort-i -o pn -pn $system -3 | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)" || Apk_info="$(appinfo -sort-i -o pn -pn $system $(pm list packages -3 --user "$user" | cut -f2 -d ':') | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)" [[ $user = 0 ]] && Apk_info="$(appinfo -sort-i -o pn -pn $system -3 | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)" || Apk_info="$(appinfo -sort-i -o pn -pn $system $(pm list packages -3 --user "$user" | cut -f2 -d ':') | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)"
@@ -1245,7 +1241,7 @@ backup)
[[ ! -f $Backup/被卸載的應用/轉換資料夾名稱.sh ]] && touch_shell "convert" "$Backup/被卸載的應用/轉換資料夾名稱.sh" [[ ! -f $Backup/被卸載的應用/轉換資料夾名稱.sh ]] && touch_shell "convert" "$Backup/被卸載的應用/轉換資料夾名稱.sh"
[[ ! -f $Backup/被卸載的應用/壓縮檔完整性檢查.sh ]] && touch_shell "check_file" "$Backup/被卸載的應用/壓縮檔完整性檢查.sh" [[ ! -f $Backup/被卸載的應用/壓縮檔完整性檢查.sh ]] && touch_shell "check_file" "$Backup/被卸載的應用/壓縮檔完整性檢查.sh"
[[ ! -f $Backup/被卸載的應用/終止腳本.sh ]] && cp -r "$MODDIR/終止腳本.sh" "$Backup/被卸載的應用/終止腳本.sh" [[ ! -f $Backup/被卸載的應用/終止腳本.sh ]] && cp -r "$MODDIR/終止腳本.sh" "$Backup/被卸載的應用/終止腳本.sh"
[[ ! -f $Backup/被卸載的應用/backup_settings.conf ]] && echo "#1開啟0關閉\n\n#是否在每次執行恢復腳本時使用音量鍵詢問如下需求\n#如果是那下面兩項項設置就被忽略,改為音量鍵選擇\nLo=$Lo\n\n#備份與恢復遭遇異常或是結束後發送通知(toast與狀態欄提示)\ntoast_info=$toast_info\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" && echo "$(sed 's/true/1/g ; s/false/0/g' "$Backup/backup_settings.conf")">"$Backup/被卸載的應用/backup_settings.conf" [[ ! -f $Backup/被卸載的應用/backup_settings.conf ]] && echo "#1開啟0關閉\n\n#是否在每次執行恢復腳本時使用音量鍵詢問如下需求\n#如果是那下面兩項項設置就被忽略,改為音量鍵選擇\nLo=$Lo\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" && echo "$(sed 's/true/1/g ; s/false/0/g' "$Backup/backup_settings.conf")">"$Backup/被卸載的應用/backup_settings.conf"
txt2="$Backup/被卸載的應用/appList.txt" txt2="$Backup/被卸載的應用/appList.txt"
[[ ! -f $txt2 ]] && echo "#不需要恢復還原的應用請在開頭注釋# 比如#xxxxxxxx 酷安">"$txt2" [[ ! -f $txt2 ]] && echo "#不需要恢復還原的應用請在開頭注釋# 比如#xxxxxxxx 酷安">"$txt2"
echo "${REPLY##*/} $PackageName">>"$txt2" echo "${REPLY##*/} $PackageName">>"$txt2"
@@ -1287,7 +1283,7 @@ backup)
[[ ! -f $Backup/壓縮檔完整性檢查.sh ]] && touch_shell "check_file" "$Backup/壓縮檔完整性檢查.sh" [[ ! -f $Backup/壓縮檔完整性檢查.sh ]] && touch_shell "check_file" "$Backup/壓縮檔完整性檢查.sh"
[[ ! -d $Backup/modules ]] && mkdir -p "$Backup/modules" && echoRgb "$Backup/modules已創建成功\n -請按需要自行放置需要恢復時刷入的模塊在內將自動批量刷入" "1" [[ ! -d $Backup/modules ]] && mkdir -p "$Backup/modules" && echoRgb "$Backup/modules已創建成功\n -請按需要自行放置需要恢復時刷入的模塊在內將自動批量刷入" "1"
[[ -d $Backup/Media ]] && touch_shell "Restore3" "$Backup/恢復自定義資料夾.sh" [[ -d $Backup/Media ]] && touch_shell "Restore3" "$Backup/恢復自定義資料夾.sh"
[[ ! -f $Backup/backup_settings.conf ]] && echo "#1開啟0關閉\n\n#是否在每次執行恢復腳本時使用音量鍵詢問如下需求\n#如果是那下面兩項項設置就被忽略,改為音量鍵選擇\nLo=$Lo\n\n#備份與恢復遭遇異常或是結束後發送通知(toast與狀態欄提示)\ntoast_info=$toast_info\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" [[ ! -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"
filesha256="$(sha256sum "$tools_path/tools.sh" | cut -d" " -f1)" filesha256="$(sha256sum "$tools_path/tools.sh" | cut -d" " -f1)"
filesha256_1="$(sha256sum "$Backup/tools/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" [[ $filesha256 != $filesha256_1 ]] && cp -r "$tools_path/tools.sh" "$Backup/tools/tools.sh"
@@ -1462,8 +1458,6 @@ backup)
echoRgb "批量備份完成" echoRgb "批量備份完成"
starttime1="$TIME" starttime1="$TIME"
endtime 1 "批量備份開始到結束" endtime 1 "批量備份開始到結束"
longToast "批量備份完成"
Print "批量備份完成 執行過程請查看$Status_log"
} & } &
wait && exit wait && exit
;; ;;
@@ -1502,7 +1496,6 @@ Restore|Restore2)
get_version "恢復安裝" "不恢復安裝" && recovery_mode2="$branch" get_version "恢復安裝" "不恢復安裝" && recovery_mode2="$branch"
fi fi
if [[ -d $Backup_folder2 ]]; then if [[ -d $Backup_folder2 ]]; then
Print "是否恢復多媒體數據 音量上恢復,音量下不恢復"
echoRgb "是否恢復多媒體數據\n -音量上恢復,音量下不恢復" "2" echoRgb "是否恢復多媒體數據\n -音量上恢復,音量下不恢復" "2"
get_version "恢復媒體數據" "跳過恢復媒體數據" get_version "恢復媒體數據" "跳過恢復媒體數據"
media_recovery="$branch" media_recovery="$branch"
@@ -1510,7 +1503,6 @@ Restore|Restore2)
B="$(find "$Backup_folder2" -maxdepth 1 -name "*.tar*" -type f 2>/dev/null | wc -l)" B="$(find "$Backup_folder2" -maxdepth 1 -name "*.tar*" -type f 2>/dev/null | wc -l)"
fi fi
if [[ -d $Backup_folder3 && $(find "$Backup_folder3" -maxdepth 1 -name "*.zip*" -type f 2>/dev/null | wc -l) != 0 ]]; then if [[ -d $Backup_folder3 && $(find "$Backup_folder3" -maxdepth 1 -name "*.zip*" -type f 2>/dev/null | wc -l) != 0 ]]; then
Print "是否刷入Magisk模塊 音量上刷入,音量下不刷入"
echoRgb "是否刷入Magisk模塊\n -音量上刷入,音量下不刷入" "2" echoRgb "是否刷入Magisk模塊\n -音量上刷入,音量下不刷入" "2"
get_version "刷入模塊" "跳過刷入模塊" get_version "刷入模塊" "跳過刷入模塊"
modules_recovery="$branch" modules_recovery="$branch"
@@ -1655,8 +1647,7 @@ Restore|Restore2)
Set_screen_pause_seconds off Set_screen_pause_seconds off
starttime1="$TIME" starttime1="$TIME"
echoRgb "$DX完成" && endtime 1 "$DX開始到結束" && echoRgb "如發現應用閃退請重新開機" echoRgb "$DX完成" && endtime 1 "$DX開始到結束" && echoRgb "如發現應用閃退請重新開機"
longToast "$DX完成" rm -rf "$TMPDIR"/*
Print "$DX完成 執行過程請查看$Status_log" && rm -rf "$TMPDIR"/*
} & } &
wait && exit wait && exit
;; ;;
@@ -1829,7 +1820,7 @@ backup_media)
[[ ! -f $Backup/轉換資料夾名稱.sh ]] && touch_shell "convert" "$Backup/轉換資料夾名稱.sh" [[ ! -f $Backup/轉換資料夾名稱.sh ]] && touch_shell "convert" "$Backup/轉換資料夾名稱.sh"
[[ ! -f $Backup/壓縮檔完整性檢查.sh ]] && touch_shell "check_file" "$Backup/壓縮檔完整性檢查.sh" [[ ! -f $Backup/壓縮檔完整性檢查.sh ]] && touch_shell "check_file" "$Backup/壓縮檔完整性檢查.sh"
[[ ! -d $Backup/tools ]] && cp -r "$tools_path" "$Backup" [[ ! -d $Backup/tools ]] && cp -r "$tools_path" "$Backup"
[[ ! -f $Backup/backup_settings.conf ]] && echo "#1開啟0關閉\n\n#是否在每次執行恢復腳本時使用音量鍵詢問如下需求\n#如果是那下面兩項項設置就被忽略,改為音量鍵選擇\nLo=$Lo\n\n#備份與恢復遭遇異常或是結束後發送通知(toast與狀態欄提示)\ntoast_info=$toast_info\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" [[ ! -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"
app_details="$Backup_folder/app_details" app_details="$Backup_folder/app_details"
filesize="$(du -s "$Backup_folder" | awk '{print $1}')" filesize="$(du -s "$Backup_folder" | awk '{print $1}')"
[[ -f $app_details ]] && . "$app_details" &>/dev/null || touch "$app_details" [[ -f $app_details ]] && . "$app_details" &>/dev/null || touch "$app_details"

View File

@@ -1,8 +1,8 @@
if [ -f "${0%/*}/tools/tools.sh" ]; then if [ -f "${0%/*}/tools/tools.sh" ]; then
MODDIR="${0%/*}" MODDIR="${0%/*}"
operate="backup" operate="backup"
. "${0%/*}/tools/tools.sh" | tee "$MODDIR/log.txt" conf_path="${0%/*}/backup_settings.conf"
. "${0%/*}/tools/tools.sh" | tee "$MODDIR/log.txt"
else else
[[ $(echo "${0%/*}" | grep -o 'bin.mt.plus/temp') != "" ]] && echo "你媽沒告訴你腳本要解壓縮嗎?傻逼玩兒" && exit 2 echo "${0%/*}/tools/tools.sh遺失"
echo "${0%/*}/tools/tools.sh遺失" fi
fi

View File

@@ -1,8 +1,8 @@
if [ -f "${0%/*}/tools/tools.sh" ]; then if [ -f "${0%/*}/tools/tools.sh" ]; then
MODDIR="${0%/*}" MODDIR="${0%/*}"
operate="backup_media" operate="backup_media"
. "${0%/*}/tools/tools.sh" | tee "$MODDIR/log.txt" conf_path="${0%/*}/backup_settings.conf"
. "${0%/*}/tools/tools.sh" | tee "$MODDIR/log.txt"
else else
[[ $(echo "${0%/*}" | grep -o 'bin.mt.plus/temp') != "" ]] && echo "你媽沒告訴你腳本要解壓縮嗎?傻逼玩兒" && exit 2 echo "${0%/*}/tools/tools.sh遺失"
echo "${0%/*}/tools/tools.sh遺失" fi
fi

View File

@@ -1,9 +1,8 @@
if [ -f "${0%/*}/tools/tools.sh" ]; then if [ -f "${0%/*}/tools/tools.sh" ]; then
MODDIR="${0%/*}" MODDIR="${0%/*}"
operate="Getlist" operate="Getlist"
#operate="Device_List" conf_path="${0%/*}/backup_settings.conf"
. "${0%/*}/tools/tools.sh" | tee "$MODDIR/log.txt" . "${0%/*}/tools/tools.sh" | tee "$MODDIR/log.txt"
else else
[[ $(echo "${0%/*}" | grep -o 'bin.mt.plus/temp') != "" ]] && echo "你媽沒告訴你腳本要解壓縮嗎?傻逼玩兒" && exit 2 echo "${0%/*}/tools/tools.sh遺失"
echo "${0%/*}/tools/tools.sh遺失" fi
fi