This commit is contained in:
Yawasau
2023-12-28 15:31:34 +08:00
parent 96167d1d51
commit 92f4dbc53a

View File

@@ -244,39 +244,65 @@ else
UFS_MODEL="unknown" UFS_MODEL="unknown"
fi fi
fi fi
Open_apps="$(appinfo -d "(" -ed ")" -o anwb,pn -ta c 2>/dev/null)"
Open_apps2="$(echo "$Open_apps" | cut -f2 -d '(' | sed 's/)//g')"
[[ $(cat "$tools_path/Device_List" 2>/dev/null | egrep -w "$(getprop ro.product.model 2>/dev/null)" | awk -F'"' '{print $4}') != "" ]] && Device_name="$(cat "$tools_path/Device_List" | egrep -w "$(getprop ro.product.model 2>/dev/null)" | awk -F'"' '{print $4}')" || Device_name="$(getprop ro.product.model 2>/dev/null)" [[ $(cat "$tools_path/Device_List" 2>/dev/null | egrep -w "$(getprop ro.product.model 2>/dev/null)" | awk -F'"' '{print $4}') != "" ]] && Device_name="$(cat "$tools_path/Device_List" | egrep -w "$(getprop ro.product.model 2>/dev/null)" | awk -F'"' '{print $4}')" || Device_name="$(getprop ro.product.model 2>/dev/null)"
Manager_version="$(su -v || echo 'null')" Manager_version="$(su -v || echo 'null')"
echoRgb "---------------------SpeedBackup---------------------" echoRgb "---------------------SpeedBackup---------------------"
echoRgb "腳本路徑:$MODDIR\n -已開機:$(Show_boottime)\n -busybox路徑:$(which busybox)\n -busybox版本:$(busybox | head -1 | awk '{print $2}')\n -appinfo版本:$(appinfo --version)\n -腳本版本:$backup_version\n -管理器:$Manager_version\n -設備架構:$abi\n -品牌:$(getprop ro.product.brand 2>/dev/null)\n -型號:$Device_name($(getprop ro.product.device 2>/dev/null))\n -閃存顆粒:$UFS_MODEL($ROM_TYPE)\n -Android版本:$(getprop ro.build.version.release 2>/dev/null) SDK:$(getprop ro.build.version.sdk 2>/dev/null)\n -終端:$Open_apps\n -By@YAWAsau\n -Support: https://jq.qq.com/?_wv=1027&k=f5clPNC3" echoRgb "腳本路徑:$MODDIR\n -已開機:$(Show_boottime)\n -busybox路徑:$(which busybox)\n -busybox版本:$(busybox | head -1 | awk '{print $2}')\n -appinfo版本:$(appinfo --version)\n -腳本版本:$backup_version\n -管理器:$Manager_version\n -設備架構:$abi\n -品牌:$(getprop ro.product.brand 2>/dev/null)\n -型號:$Device_name($(getprop ro.product.device 2>/dev/null))\n -閃存顆粒:$UFS_MODEL($ROM_TYPE)\n -Android版本:$(getprop ro.build.version.release 2>/dev/null) SDK:$(getprop ro.build.version.sdk 2>/dev/null)\n -By@YAWAsau\n -Support: https://jq.qq.com/?_wv=1027&k=f5clPNC3"
case $MODDIR in
*Backup_*)
if [[ -f $MODDIR/app_details ]]; then
path_hierarchy="${MODDIR%/*/*}"
else
[[ -d ${MODDIR%/*}/tools ]] && path_hierarchy="${MODDIR%/*}"
fi ;;
*) [[ -d $MODDIR/tools ]] && path_hierarchy="$MODDIR" ;;
esac
case $LANG in
*-TW | *-tw | *-HK)
echoRgb "系統語系:繁體中文"
Script_target_language="zh-TW" ;;
*-CN | *-cn)
echoRgb "系統語系:簡體中文"
Script_target_language="zh-CN" ;;
esac
find_tools_path="$(find "$path_hierarchy"/* -maxdepth 1 -name "tools" -type d ! -path "$path_hierarchy/tools")"
Rename_script () { Rename_script () {
Replace_file_name () { [[ $HT = "" ]] && HT=0
find "$1" -maxdepth 1 -name "*.sh" -type f | while read ; do find "$path_hierarchy" -maxdepth 3 -name "*.sh" -type f -not -name "tools.sh" | sort | while read ; do
MODDIR_NAME="${REPLY%/*}"
FILE_NAME="${REPLY##*/}"
echo "$MODDIR_NAME/$FILE_NAME"
mv "$REPLY" "$MODDIR_NAME/$(ts "$FILE_NAME")"
done
}
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)"
MODDIR_NAME="${REPLY%/*}"
FILE_NAME="${REPLY##*/}"
case $Script_type in case $Script_type in
backup|Getlist|backup_media|Restore|dumpname|check_file|convert|Restore3) backup|Getlist|backup_media|Restore|dumpname|check_file|convert|Restore3|Restore2)
Script_type2="$(grep -o 'backup_mode="[^"]*"' "$REPLY" 2>/dev/null | awk -F'=' '{print $2}' | tr -d '"' | head -1)" if [[ -f ${REPLY%/*}/app_details ]]; then
if [[ $Script_type = backup && Script_type2 = 1 ]]; then if [[ $FILE_NAME = backup.sh ]]; then
touch_shell "$Script_type" "$REPLY" "backup_mode" touch_shell "$Script_type" "$REPLY" "backup_mode" "backup_mode=\"1\""
else
touch_shell "$Script_type" "$REPLY"
fi
else else
touch_shell "$Script_type" "$REPLY" if [[ -d ${REPLY%/*}/tools ]]; then
touch_shell "$Script_type" "$REPLY"
if [[ $Script_target_language != $shell_language ]]; then
[[ $HT = 0 && $K = "" ]] && echoRgb "腳本語系為$shell_language....轉換為$Script_target_language中,請稍後等待轉換...."
ts -f "$REPLY" -o "$REPLY"
echo_log "$REPLY翻譯"
mv "$REPLY" "$MODDIR_NAME/$(ts "$FILE_NAME")"
fi
fi
let HT++
fi ;; fi ;;
kill_script)
if [[ $Script_target_language != $shell_language ]]; then
[[ $HT = 0 && $K = "" ]] && echoRgb "腳本語系為$shell_language....轉換為$Script_target_language中,請稍後等待轉換...."
ts -f "$REPLY" -o "$REPLY"
echo_log "$REPLY翻譯"
mv "$REPLY" "$MODDIR_NAME/$(ts "$FILE_NAME")"
let HT++
fi ;;
esac esac
done done
case $LANG in unset HT
*-CN | *-cn)
[[ $shell_language = zh-TW ]] && Replace_file_name "$1" ;;
*)
[[ $shell_language != zh-TW ]] && Replace_file_name "$1" ;;
esac
} }
touch_shell () { touch_shell () {
unset conf_path MODDIR_Path unset conf_path MODDIR_Path
@@ -292,7 +318,7 @@ touch_shell () {
conf_path='${0%/*/*/*}/backup_settings.conf' conf_path='${0%/*/*/*}/backup_settings.conf'
fi ;; fi ;;
esac 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" [[ $4 != "" ]] && echo "if [ -f \"$MODDIR_Path/tools/tools.sh\" ]; then\n MODDIR=\"\${0%/*}\"\n operate=\"$1\"\n $4\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() {
[[ $zipFile = "" ]] && zipFile="$(find "$MODDIR" -maxdepth 1 -name "*.zip" -type f 2>/dev/null)" [[ $zipFile = "" ]] && zipFile="$(find "$MODDIR" -maxdepth 1 -name "*.zip" -type f 2>/dev/null)"
@@ -313,74 +339,42 @@ update_script() {
fi ;; fi ;;
esac esac
echoRgb "$zipFile更新" echoRgb "$zipFile更新"
cp -r "$tools_path" "$TMPDIR" && rm -rf "$tools_path" if [[ -d $path_hierarchy/tools ]]; then
unzip -o "$zipFile" tools/* -d "$MODDIR" | sed 's/inflating/釋放/g ; s/creating/創建/g ; s/Archive/解壓縮/g' cp -r "$path_hierarchy/tools" "$TMPDIR"
echo_log "解壓縮${zipFile##*/}" mv "$zipFile" "$path_hierarchy"
if [[ $result = 0 ]]; then zipFile="$path_hierarchy/${zipFile##*/}"
ts -f "$MODDIR/backup_settings.conf" -o "$MODDIR/backup_settings.conf" rm -rf "$path_hierarchy/tools"
case $LANG in unzip -o "$zipFile" tools/* -d "$path_hierarchy" | sed 's/inflating/釋放/g ; s/creating/創建/g ; s/Archive/解壓縮/g'
*-CN | *-cn) echo_log "解壓縮${zipFile##*/}"
if [[ $shell_language = zh-TW ]]; then if [[ $result = 0 ]]; then
ts -f "$MODDIR/tools/Device_List" -o "$MODDIR/tools/Device_List" if [[ $shell_language != $Script_target_language ]]; then
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" echoRgb "腳本語系為$shell_language....轉換為$Script_target_language中,請稍後等待轉換...."
[[ $? = 0 ]] && echoRgb "轉換簡體中文腳本完成" ts -f "$path_hierarchy/backup_settings.conf" -o "$path_hierarchy/backup_settings.conf"
fi ;; echo_log "$path_hierarchy/backup_settings.conf翻譯"
*) ts -f "$path_hierarchy/tools/Device_List" -o "$path_hierarchy/tools/Device_List"
if [[ $shell_language != zh-TW ]]; then echo_log "$path_hierarchy/tools/Device_List翻譯"
ts -f "$MODDIR/tools/Device_List" -o "$MODDIR/tools/Device_List" ts -f "$path_hierarchy/tools/tools.sh" -o "$path_hierarchy/tools/tools.sh" && sed -i 's/shell_language=\"zh-CN\"/shell_language=\"zh-TW\"/g' "$path_hierarchy/tools/tools.sh"
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" echo_log "$path_hierarchy/tools/tools.sh翻譯"
[[ $? = 0 ]] && echoRgb "轉換繁體中文腳本完成" HT=1
fi ;; fi
esac if [[ $find_tools_path != $path_hierarchy/tools ]]; then
case $MODDIR in rm -rf "$find_tools_path"
*Backup_*) cp -r "$path_hierarchy/tools" "${find_tools_path%/*}"
if [[ ! -f $MODDIR/app_details ]]; then cp -r "$path_hierarchy/終止腳本.sh" "${find_tools_path%/*}"
echoRgb "更新當前${MODDIR##*/}/tools" ts -f "${find_tools_path%/*}/backup_settings.conf" -o "${find_tools_path%/*}/backup_settings.conf"
Rename_script "$MODDIR" echo_log "${find_tools_path%/*}/backup_settings.conf翻譯"
if [[ -d ${MODDIR%/*}/tools ]]; then fi
echoRgb "更新${MODDIR%/*}/tools" Rename_script
rm -rf "${MODDIR%/*}/tools" else
cp -r "$tools_path" "${MODDIR%/*}" cp -r "$TMPDIR/tools" "$MODDIR"
Rename_script "${MODDIR%/*}" fi
ts -f "${MODDIR%/*}/backup_settings.conf" -o "${MODDIR%/*}/backup_settings.conf" rm -rf "$TMPDIR"/* "$zipFile" "$MODDIR/tools.sh"
fi echoRgb "更新完成 請重新執行腳本" "2"
find "$MODDIR" -maxdepth 1 -name "app_details" -type f 2>/dev/null | sort | while read; do exit
MODDIR_NAME="${REPLY%/*}"
[[ -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"
done
fi ;;
*)
Rename_script "$MODDIR"
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"
rm -rf "$backup_path/tools"
cp -r "$tools_path" "$backup_path"
cp -r "$MODDIR/終止腳本.sh" "$backup_path"
Rename_script "$backup_path"
ts -f "$backup_path/backup_settings.conf" -o "$backup_path/backup_settings.conf"
find "$backup_path" -maxdepth 2 -name "app_details" -type f 2>/dev/null | sort | while read; do
MODDIR_NAME="${REPLY%/*}"
[[ -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"
done
fi
done
else
echoRgb "更新當前${MODDIR##*/}/tools"
fi ;;
esac
else
cp -r "$TMPDIR/tools" "$MODDIR"
fi fi
rm -rf "$TMPDIR"/* "$zipFile" "$MODDIR/tools.sh"
echoRgb "更新完成 請重新執行腳本" "2"
exit
else else
echoRgb "${zipFile##*/}版本低於當前版本,自動刪除" "0" echoRgb "${zipFile##*/}版本低於當前版本,自動刪除" "0"
rm -rf "$zipFile" "$MODDIR/tools.sh" rm -rf "$zipFile" "$path_hierarchy/tools.sh"
fi fi
else else
rm -rf "$zipFile" rm -rf "$zipFile"
@@ -464,82 +458,40 @@ 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 [[ $path_hierarchy != "" && $Script_target_language != "" ]]; then
Set_script_language() { K=1
if [[ $shell_language != "" ]]; then J="$(find "$path_hierarchy" -maxdepth 3 -name "tools.sh" -type f | wc -l)"
echoRgb "腳本語系為$shell_language....轉換為$LANG中...." for REPLY in $(find "$path_hierarchy" -maxdepth 3 -name "tools.sh" -type f); do
case $MODDIR in if [[ $Script_target_language != $(grep -o 'shell_language="[^"]*"' "$REPLY" 2>/dev/null | awk -F'=' '{print $2}' | tr -d '"' | head -1) ]]; then
*Backup_*) [[ $K = 1 ]] && echoRgb "腳本語系為$shell_language....轉換為$Script_target_language中,請稍後等待轉換...."
if [[ -f $MODDIR/app_details ]]; then ts -f "$REPLY" -o "$REPLY"
Rename_script "${MODDIR%/*}" if [[ $? = 0 ]]; then
ts -f "${MODDIR%/*}/backup_settings.conf" -o "${MODDIR%/*}/backup_settings.conf" CBW="1"
[[ -d ${MODDIR%/*/*}/tools ]] && ts -f "${MODDIR%/*/*}/backup_settings.conf" -o "${MODDIR%/*/*}/backup_settings.conf" && Rename_script "${MODDIR%/*/*}" echo_log "$REPLY翻譯"
else case $Script_target_language in
Rename_script "$MODDIR" zh-TW) sed -i "s/shell_language=\"zh-CN\"/shell_language=\"zh-TW\"/g" "$REPLY" ;;
ts -f "$MODDIR/backup_settings.conf" -o "$MODDIR/backup_settings.conf" zh-CN) sed -i "s/shell_language=\"zh-TW\"/shell_language=\"zh-CN\"/g" "$REPLY" ;;
[[ -d ${MODDIR%/*}/tools ]] && ts -f "${MODDIR%/*}/backup_settings.conf" -o "${MODDIR%/*}/backup_settings.conf" && Rename_script "${MODDIR%/*}" esac
fi ;; ts -f "${REPLY%/*}/Device_List" -o "${REPLY%/*}/Device_List"
*) echo_log "${REPLY%/*}/Device_List翻譯"
Rename_script "$MODDIR" if [[ $shell_language != "" && $K = 1 ]]; then
ts -f "$MODDIR/backup_settings.conf" -o "$MODDIR/backup_settings.conf" Rename_script
if [[ $(find "$MODDIR" -maxdepth 1 -name "Backup_*" -type d) != "" ]]; then if [[ -d $path_hierarchy/tools ]]; then
find "$MODDIR" -maxdepth 1 -name "Backup_*" -type d | while read backup_path; do if [[ $find_tools_path != $path_hierarchy/tools ]]; then
[[ -d $backup_path && $backup_path != $MODDIR ]] && ts -f "$backup_path/backup_settings.conf" -o "$backup_path/backup_settings.conf" && Rename_script "$backup_path" ts -f "${find_tools_path%/*}/backup_settings.conf" -o "${find_tools_path%/*}/backup_settings.conf"
done echo_log "${find_tools_path%/*}/backup_settings.conf翻譯"
else fi
Rename_script "${MODDIR%/*}" ts -f "$path_hierarchy/backup_settings.conf" -o "$path_hierarchy/backup_settings.conf"
ts -f "${MODDIR%/*}/backup_settings.conf" -o "${MODDIR%/*}/backup_settings.conf" echo_log "$path_hierarchy/backup_settings.conf翻譯"
fi ;; fi
esac fi
[[ $? = 0 ]] && echoRgb "轉換腳本完成,退出腳本重新執行即可使用$1" && exit 0 else
fi echoRgb "ts進程出現錯誤" "0"
} fi
case $LANG in let K++
*-TW | *-tw | *-HK) fi
echoRgb "系統語系:繁體中文" done
ts -f "$tools_path/Device_List" -o "$tools_path/Device_List" [[ $CBW = 1 ]] && echoRgb "轉換腳本完成,退出腳本重新執行即可使用" && exit 2
case $MODDIR in
*Backup_*)
if [[ -f $MODDIR/app_details ]]; then
find "${0%/*/*/*}" -maxdepth 3 -name "tools.sh" -type f | while read ; do
ts -f "$REPLY" -o "$REPLY" && sed -i 's/shell_language=\"zh-CN\"/shell_language=\"zh-TW\"/g' "$REPLY"
done
else
find "${0%/*/*}" -maxdepth 3 -name "tools.sh" -type f | while read ; do
ts -f "$REPLY" -o "$REPLY" && sed -i 's/shell_language=\"zh-CN\"/shell_language=\"zh-TW\"/g' "$REPLY"
done
fi ;;
*)
find "${0%/*}" -maxdepth 3 -name "tools.sh" -type f | while read ; do
ts -f "$REPLY" -o "$REPLY" && sed -i 's/shell_language=\"zh-CN\"/shell_language=\"zh-TW\"/g' "$REPLY"
done ;;
esac
[[ $shell_language != zh-TW ]] && Set_script_language "繁體中文"
;;
*-CN | *-cn)
echoRgb "系統語系:簡體中文"
ts -f "$tools_path/Device_List" -o "$tools_path/Device_List"
case $MODDIR in
*Backup_*)
if [[ -f $MODDIR/app_details ]]; then
find "${0%/*/*/*}" -maxdepth 3 -name "tools.sh" -type f | while read ; do
ts -f "$REPLY" -o "$REPLY" && sed -i 's/shell_language=\"zh-TW\"/shell_language=\"zh-CN\"/g' "$REPLY"
done
else
find "${0%/*/*}" -maxdepth 3 -name "tools.sh" -type f | while read ; do
ts -f "$REPLY" -o "$REPLY" && sed -i 's/shell_language=\"zh-TW\"/shell_language=\"zh-CN\"/g' "$REPLY"
done
fi ;;
*)
find "${0%/*}" -maxdepth 3 -name "tools.sh" -type f | while read ; do
ts -f "$REPLY" -o "$REPLY" && sed -i 's/shell_language=\"zh-TW\"/shell_language=\"zh-CN\"/g' "$REPLY"
done ;;
esac
[[ $shell_language = zh-TW ]] && Set_script_language "簡體中文"
;;
esac
else
echoRgb "獲取系統語系失敗" "0"
fi fi
#效驗選填是否正確 #效驗選填是否正確
Lo="$(echo "$Lo" | sed 's/true/1/g ; s/false/0/g')" Lo="$(echo "$Lo" | sed 's/true/1/g ; s/false/0/g')"
@@ -682,8 +634,8 @@ partition_info() {
[[ $lxj -ge 97 ]] && echoRgb "$hx空間不足,達到$lxj%" "0" && exit 2 [[ $lxj -ge 97 ]] && echoRgb "$hx空間不足,達到$lxj%" "0" && exit 2
} }
kill_app() { kill_app() {
[[ $Pause_Freeze = "" ]] && Pause_Freeze="0" if [[ $name2 != bin.mt.plus && $name2 != com.termux && $name2 != bin.mt.plus.canary ]]; then
if [[ $name2 != bin.mt.plus && $name2 != com.termux ]]; then [[ $Pause_Freeze = "" ]] && Pause_Freeze="0"
if [[ $Pause_Freeze = 0 ]]; then if [[ $Pause_Freeze = 0 ]]; then
if [[ $(dumpsys activity processes | grep "packageList" | cut -d '{' -f2 | cut -d '}' -f1 | egrep -w "^$name2$" | sed -n '1p') = $name2 ]]; then if [[ $(dumpsys activity processes | grep "packageList" | cut -d '{' -f2 | cut -d '}' -f1 | egrep -w "^$name2$" | sed -n '1p') = $name2 ]]; then
killall -9 "$name2" &>/dev/null killall -9 "$name2" &>/dev/null
@@ -754,7 +706,7 @@ Backup_apk() {
case $Compression_method in case $Compression_method in
tar | TAR | Tar) tar --checkpoint-action="ttyout=%T\r" -cf "$Backup_folder/apk.tar" *.apk ;; tar | TAR | Tar) tar --checkpoint-action="ttyout=%T\r" -cf "$Backup_folder/apk.tar" *.apk ;;
lz4 | LZ4 | Lz4) tar --checkpoint-action="ttyout=%T\r" -cf - *.apk | lz4 >"$Backup_folder/apk.tar.lz4" ;; lz4 | LZ4 | Lz4) tar --checkpoint-action="ttyout=%T\r" -cf - *.apk | lz4 >"$Backup_folder/apk.tar.lz4" ;;
zstd | Zstd | ZSTD) tar --checkpoint-action="ttyout=%T\r" --ultra -"$Compression_rate" -T0 -q --priority=rt -cf - *.apk | zstd>"$Backup_folder/apk.tar.zst" ;; zstd | Zstd | ZSTD) tar --checkpoint-action="ttyout=%T\r" -cf - *.apk | zstd --ultra -"$Compression_rate" -T0 -q --priority=rt >"$Backup_folder/apk.tar.zst" ;;
esac esac
) )
echo_log "備份$apk_number個Apk" echo_log "備份$apk_number個Apk"
@@ -842,14 +794,14 @@ Backup_data() {
user) user)
case $Compression_method in case $Compression_method in
tar | Tar | TAR) tar --checkpoint-action="ttyout=%T\r" --exclude="${data_path##*/}/.ota" --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/lib" --exclude="${data_path##*/}/code_cache" --exclude="${data_path##*/}/no_backup" --warning=no-file-changed -cpf "$Backup_folder/$1.tar" -C "${data_path%/*}" "${data_path##*/}" 2>/dev/null ;; tar | Tar | TAR) tar --checkpoint-action="ttyout=%T\r" --exclude="${data_path##*/}/.ota" --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/lib" --exclude="${data_path##*/}/code_cache" --exclude="${data_path##*/}/no_backup" --warning=no-file-changed -cpf "$Backup_folder/$1.tar" -C "${data_path%/*}" "${data_path##*/}" 2>/dev/null ;;
zstd | Zstd | ZSTD) tar --checkpoint-action="ttyout=%T\r" --exclude="${data_path##*/}/.ota" --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/lib" --exclude="${data_path##*/}/code_cache" --exclude="${data_path##*/}/no_backup" --warning=no-file-changed --ultra -"$Compression_rate" -T0 -q --priority=rt -cpf - -C "${data_path%/*}" "${data_path##*/}" | zstd>"$Backup_folder/$1.tar.zst" 2>/dev/null ;; zstd | Zstd | ZSTD) tar --checkpoint-action="ttyout=%T\r" --exclude="${data_path##*/}/.ota" --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/lib" --exclude="${data_path##*/}/code_cache" --exclude="${data_path##*/}/no_backup" --warning=no-file-changed -cpf - -C "${data_path%/*}" "${data_path##*/}" | zstd --ultra -"$Compression_rate" -T0 -q --priority=rt >"$Backup_folder/$1.tar.zst" 2>/dev/null ;;
lz4 | Lz4 | LZ4) tar --checkpoint-action="ttyout=%T\r" --exclude="${data_path##*/}/.ota" --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/lib" --exclude="${data_path##*/}/code_cache" --exclude="${data_path##*/}/no_backup" --warning=no-file-changed -cpf - -C "${data_path%/*}" "${data_path##*/}" | lz4 >"$Backup_folder/$1.tar.lz4" 2>/dev/null ;; lz4 | Lz4 | LZ4) tar --checkpoint-action="ttyout=%T\r" --exclude="${data_path##*/}/.ota" --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/lib" --exclude="${data_path##*/}/code_cache" --exclude="${data_path##*/}/no_backup" --warning=no-file-changed -cpf - -C "${data_path%/*}" "${data_path##*/}" | lz4 >"$Backup_folder/$1.tar.lz4" 2>/dev/null ;;
esac esac
;; ;;
*) *)
case $Compression_method in case $Compression_method in
tar | Tar | TAR) tar --checkpoint-action="ttyout=%T\r" --exclude="Backup_"* --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}"/.* --warning=no-file-changed -cpf "$Backup_folder/$1.tar" -C "${data_path%/*}" "${data_path##*/}" ;; tar | Tar | TAR) tar --checkpoint-action="ttyout=%T\r" --exclude="Backup_"* --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}"/.* --warning=no-file-changed -cpf "$Backup_folder/$1.tar" -C "${data_path%/*}" "${data_path##*/}" ;;
zstd | Zstd | ZSTD) tar --checkpoint-action="ttyout=%T\r" --exclude="Backup_"* --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}"/.* --warning=no-file-changed --ultra -"$Compression_rate" -T0 -q --priority=rt -cpf - -C "${data_path%/*}" "${data_path##*/}" | zstd>"$Backup_folder/$1.tar.zst" ;; zstd | Zstd | ZSTD) tar --checkpoint-action="ttyout=%T\r" --exclude="Backup_"* --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}"/.* --warning=no-file-changed -cpf - -C "${data_path%/*}" "${data_path##*/}" | zstd --ultra -"$Compression_rate" -T0 -q --priority=rt >"$Backup_folder/$1.tar.zst" ;;
lz4 | Lz4 | LZ4) tar --checkpoint-action="ttyout=%T\r" --exclude="Backup_"* --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}"/.* --warning=no-file-changed -cpf - -C "${data_path%/*}" "${data_path##*/}" | lz4 >"$Backup_folder/$1.tar.lz4" 2>/dev/null ;; lz4 | Lz4 | LZ4) tar --checkpoint-action="ttyout=%T\r" --exclude="Backup_"* --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}"/.* --warning=no-file-changed -cpf - -C "${data_path%/*}" "${data_path##*/}" | lz4 >"$Backup_folder/$1.tar.lz4" 2>/dev/null ;;
esac esac
;; ;;
@@ -1091,7 +1043,7 @@ get_name(){
Apkname) Apkname)
[[ -f $Folder/${PackageName}.sh ]] && rm -rf "$Folder/${PackageName}.sh" [[ -f $Folder/${PackageName}.sh ]] && rm -rf "$Folder/${PackageName}.sh"
[[ ! -f $Folder/recover.sh ]] && touch_shell "Restore2" "$Folder/recover.sh" [[ ! -f $Folder/recover.sh ]] && touch_shell "Restore2" "$Folder/recover.sh"
[[ ! -f $Folder/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' >"$Folder/backup.sh" [[ ! -f $Folder/backup.sh ]] && touch_shell "backup" "$Folder/backup.sh" "backup_mode" "backup_mode=\"1\""
echoRgb "$ChineseName $PackageName" && echo "$ChineseName $PackageName" >>"$txt" ;; echoRgb "$ChineseName $PackageName" && echo "$ChineseName $PackageName" >>"$txt" ;;
convert) convert)
if [[ ${Folder##*/} = $PackageName ]]; then if [[ ${Folder##*/} = $PackageName ]]; then
@@ -1284,9 +1236,11 @@ backup)
[[ ! -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#使用者\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)" if [[ -f $Backup/tools/tools.sh ]]; then
filesha256_1="$(sha256sum "$Backup/tools/tools.sh" | cut -d" " -f1)" filesha256="$(sha256sum "$tools_path/tools.sh" | cut -d" " -f1)"
[[ $filesha256 != $filesha256_1 ]] && cp -r "$tools_path/tools.sh" "$Backup/tools/tools.sh" filesha256_1="$(sha256sum "$Backup/tools/tools.sh" | cut -d" " -f1)"
[[ $filesha256 != $filesha256_1 ]] && cp -r "$tools_path/tools.sh" "$Backup/tools/tools.sh"
fi
filesize="$(du -s "$Backup" | awk '{print $1}')" filesize="$(du -s "$Backup" | awk '{print $1}')"
Quantity=0 Quantity=0
restore_freeze restore_freeze
@@ -1369,7 +1323,7 @@ backup)
fi fi
[[ -f $Backup_folder/${name2}.sh ]] && rm -rf "$Backup_folder/${name2}.sh" [[ -f $Backup_folder/${name2}.sh ]] && rm -rf "$Backup_folder/${name2}.sh"
[[ ! -f $Backup_folder/recover.sh ]] && touch_shell "Restore2" "$Backup_folder/recover.sh" [[ ! -f $Backup_folder/recover.sh ]] && touch_shell "Restore2" "$Backup_folder/recover.sh"
[[ ! -f $Backup_folder/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' >"$Backup_folder/backup.sh" [[ ! -f $Backup_folder/backup.sh ]] && touch_shell "backup" "$Backup_folder/backup.sh" "backup_mode" "backup_mode=\"1\""
endtime 2 "$name1 備份" "3" endtime 2 "$name1 備份" "3"
Occupation_status="$(df -h "${Backup%/*}" | sed -n 's|% /.*|%|p' | awk '{print $(NF-1),$(NF)}')" Occupation_status="$(df -h "${Backup%/*}" | sed -n 's|% /.*|%|p' | awk '{print $(NF-1),$(NF)}')"
lxj="$(echo "$Occupation_status" | awk '{print $3}' | sed 's/%//g')" lxj="$(echo "$Occupation_status" | awk '{print $3}' | sed 's/%//g')"
@@ -1439,12 +1393,12 @@ backup)
done done
#打開應用 #打開應用
i=1 i=1
am_start="$(echo "$am_start" | head -n 4 | xargs | sed 's/ /\|/g')" am_start="$(echo "$am_start" | xargs | sed 's/ /\n/g')"
while [[ $i -le $r ]]; do while [[ $i -le $r ]]; do
unset pkg name1 unset pkg name1
pkg="$(grep -v "#" "$txt" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $2}')" pkg="$(grep -v "#" "$txt" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $2}')"
name1="$(grep -v "#" "$txt" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $1}')" name1="$(grep -v "#" "$txt" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $1}')"
if [[ $(echo "$pkg" | egrep -wo "^$am_start$") = $pkg ]]; then if [[ $(echo "$am_start" | egrep -wo "$pkg") = $pkg ]]; then
am start -n "$(appinfo -o sa -pn "$pkg" 2>/dev/null)" &>/dev/null am start -n "$(appinfo -o sa -pn "$pkg" 2>/dev/null)" &>/dev/null
echo_log "啟動$name1" echo_log "啟動$name1"
fi fi