This commit is contained in:
Yawasau
2022-05-09 23:47:58 +08:00
parent 4dd4b85fce
commit 7acfab3187
2 changed files with 168 additions and 215 deletions

View File

@@ -31,7 +31,7 @@ Backup_user_data=1
Backup_obb_data=1 Backup_obb_data=1
#是否在應用數據備份好後備份自定義目錄 #是否在應用數據備份好後備份自定義目錄
backup_media=0 backup_media=1
#假設你遇到列表輸出異常問題請將此設為1 #假設你遇到列表輸出異常問題請將此設為1
debug_list=0 debug_list=0
@@ -79,3 +79,9 @@ com.dede.nativetools
#壓縮算法(可用lz4 zstd tar tar為僅打包 有什麼好用的壓縮算法請聯繫我 #壓縮算法(可用lz4 zstd tar tar為僅打包 有什麼好用的壓縮算法請聯繫我
#lz4壓縮最快但是壓縮率略差 zstd擁有良好的壓縮率與速度 當然慢於lz4 #lz4壓縮最快但是壓縮率略差 zstd擁有良好的壓縮率與速度 當然慢於lz4
Compression_method=zstd Compression_method=zstd
#主色
rgb_a=190
#輔色
rgb_b=123
rgb_c=177

View File

@@ -39,7 +39,6 @@ if [[ $toast_info = true ]]; then
else else
pm disable "ice.message" &>/dev/null pm disable "ice.message" &>/dev/null
fi fi
update_script() {
cdn=2 cdn=2
#settings get system system_locales #settings get system system_locales
LANG="$(getprop "persist.sys.locale")" LANG="$(getprop "persist.sys.locale")"
@@ -123,6 +122,59 @@ update_script() {
else else
echoRgb "更新獲取失敗" "0" echoRgb "更新獲取失敗" "0"
fi fi
backup_path() {
if [[ $Output_path != "" ]]; then
[[ ${Output_path: -1} = / ]] && Output_path="${Output_path%?}"
Backup="$Output_path/Backup_$Compression_method"
outshow="使用自定義目錄"
else
Backup="$MODDIR/Backup_$Compression_method"
outshow="使用當前路徑作為備份目錄"
fi
PU="$(ls /dev/block/vold 2>/dev/null | grep public)"
if [[ $PU != "" ]]; then
[[ -f /proc/mounts ]] && PT="$(cat /proc/mounts | grep "$PU" | awk '{print $2}')"
if [[ -d $PT ]]; then
if [[ $(echo "$MODDIR" | grep -oE "^${PT}") != "" || $USBdefault = true ]]; then
hx="USB"
else
echoRgb "檢測到隨身碟 是否在隨身碟備份\n -音量上是,音量下不是" "2"
get_version "選擇了隨身碟備份" "選擇了本地備份"
[[ $branch = true ]] && hx="USB"
fi
if [[ $hx = USB ]]; then
Backup="$PT/Backup_$Compression_method"
data="/dev/block/vold/$PU"
mountinfo="$(df -T "${Backup%/*}" | sed -n 's|% /.*|%|p' | awk '{print $(NF-4)}')"
case $mountinfo in
fuseblk | exfat | NTFS | ext4 | f2fs)
outshow="於隨身碟備份"
;;
*)
echoRgb "隨身碟檔案系統$mountinfo不支持超過單檔4GB\n -請格式化為exfat" "0"
exit 1
;;
esac
fi
fi
else
echoRgb "沒有檢測到隨身碟於本地備份" "0"
fi
#分區詳細
if [[ $(echo "$Backup" | egrep -o "^/storage/emulated") != "" ]]; then
Backup_path="/data"
else
Backup_path="${Backup%/*}"
fi
echoRgb "$hx備份資料夾所使用分區統計如下↓\n -$(df -h "${Backup%/*}" | sed -n 's|% /.*|%|p' | awk '{print $(NF-3),$(NF-2),$(NF-1),$(NF)}' | sed 's/G//g' | awk 'END{print "總共:"$1"G已用:"$2"G剩餘:"$3"G使用率:"$4}')檔案系統:$(df -T "$Backup_path" | sed -n 's|% /.*|%|p' | awk '{print $(NF-4)}')\n -備份目錄輸出位置↓\n -$Backup"
echoRgb "$outshow" "2"
}
#分區佔用信息
partition_info() {
stopscript
Occupation_status="$(df -h "${1%/*}" | sed -n 's|% /.*|%|p' | awk '{print $(NF-1),$(NF)}')"
lxj="$(echo "$Occupation_status" | awk '{print $2}' | sed 's/%//g')"
[[ $lxj -ge 97 ]] && echoRgb "$hx空間不足,達到$lxj%" "0" && exit 2
} }
case $operate in case $operate in
backup) backup)
@@ -166,59 +218,16 @@ backup)
echoRgb "全部應用備份結束後是否備份自定義目錄\n -音量上備份,音量下不備份" "2" echoRgb "全部應用備份結束後是否備份自定義目錄\n -音量上備份,音量下不備份" "2"
get_version "備份" "不備份" && backup_media="$branch" get_version "備份" "不備份" && backup_media="$branch"
fi fi
update_script
i=1 i=1
#數據目錄 #數據目錄
txt="$MODDIR/appList.txt" txt="$MODDIR/appList.txt"
txt="${txt/'/storage/emulated/'/'/data/media/'}" txt="${txt/'/storage/emulated/'/'/data/media/'}"
PU="$(ls /dev/block/vold | grep public)"
[[ ! -f $txt ]] && echoRgb "請執行\"生成應用列表.sh\"獲取應用列表再來備份" "0" && exit 1 [[ ! -f $txt ]] && echoRgb "請執行\"生成應用列表.sh\"獲取應用列表再來備份" "0" && exit 1
data="$MODDIR" data="$MODDIR"
hx="本地" hx="本地"
echoRgb "壓縮方式:$Compression_method" echoRgb "壓縮方式:$Compression_method"
echoRgb "提示 腳本支持後台壓縮 可以直接離開腳本\n -或是關閉終端也能備份 如需終止腳本\n -請執行終止腳本.sh即可停止\n -備份結束將發送toast提示語" "3" echoRgb "提示 腳本支持後台壓縮 可以直接離開腳本\n -或是關閉終端也能備份 如需終止腳本\n -請執行終止腳本.sh即可停止\n -備份結束將發送toast提示語" "3"
if [[ $Output_path != "" ]]; then backup_path
[[ ${Output_path: -1} = / ]] && Output_path="${Output_path%?}"
Backup="$Output_path/Backup_$Compression_method"
outshow="使用自定義目錄"
else
if [[ $APP_ENV = 1 ]]; then
Backup="/storage/emulated/0/Backup_$Compression_method"
outshow="沒有設定備份目錄 使用默認路徑"
else
Backup="$MODDIR/Backup_$Compression_method"
outshow="使用當前路徑作為備份目錄"
fi
fi
PU="$(ls /dev/block/vold | grep public)"
if [[ $PU != "" ]]; then
[[ -f /proc/mounts ]] && PT="$(cat /proc/mounts | grep "$PU" | awk '{print $2}')"
if [[ -d $PT ]]; then
if [[ $(echo "$MODDIR" | grep -oE "^${PT}") != "" || $USBdefault = true ]]; then
hx="USB"
else
echoRgb "檢測到隨身碟 是否在隨身碟備份\n -音量上是,音量下不是" "2"
get_version "選擇了隨身碟備份" "選擇了本地備份"
[[ $branch = true ]] && hx="USB"
fi
if [[ $hx = USB ]]; then
Backup="$PT/Backup_$Compression_method"
data="/dev/block/vold/$PU"
mountinfo="$(df -T "${Backup%/*}" | sed -n 's|% /.*|%|p' | awk '{print $(NF-4)}')"
case $mountinfo in
fuseblk | exfat | NTFS | ext4 | f2fs)
outshow="於隨身碟備份"
;;
*)
echoRgb "隨身碟檔案系統$mountinfo不支持超過單檔4GB\n -請格式化為exfat" "0"
exit 1
;;
esac
fi
fi
else
echoRgb "沒有檢測到隨身碟於本地備份" "0"
fi
D="1" D="1"
C="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n '$=')" C="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n '$=')"
if [[ $delete_folder = true ]]; then if [[ $delete_folder = true ]]; then
@@ -274,15 +283,6 @@ backup)
r="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n '$=')" r="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n '$=')"
[[ $1 != "" ]] && r=1 [[ $1 != "" ]] && r=1
[[ $r = "" ]] && echoRgb "爬..appList.txt是空的或是包名被注釋了這樣備份個鬼" "0" && exit 1 [[ $r = "" ]] && echoRgb "爬..appList.txt是空的或是包名被注釋了這樣備份個鬼" "0" && exit 1
rm -rf "$Backup/STOP"
#分區詳細
if [[ $(echo "$Backup" | egrep -o "^/storage/emulated") != "" ]]; then
Backup_path="/data"
else
Backup_path="${Backup%/*}"
fi
echoRgb "$hx備份資料夾所使用分區統計如下↓\n -$(df -h "${Backup%/*}" | sed -n 's|% /.*|%|p' | awk '{print $(NF-3),$(NF-2),$(NF-1),$(NF)}' | sed 's/G//g' | awk 'END{print "總共:"$1"G已用:"$2"G剩餘:"$3"G使用率:"$4}')檔案系統:$(df -T "$Backup_path" | sed -n 's|% /.*|%|p' | awk '{print $(NF-4)}')\n -備份目錄輸出位置↓\n -$Backup"
echoRgb "$outshow" "2"
[[ $Backup_user_data = false ]] && echoRgb "當前backup_settings.conf的\n -Backup_user_data為0將不備份user數據" "0" [[ $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" [[ $Backup_obb_data = false ]] && echoRgb "當前backup_settings.conf的\n -Backup_obb_data為0將不備份外部數據" "0"
[[ $backup_media = false ]] && echoRgb "當前backup_settings.conf的\n -backup_media為0將不備份自定義資料夾" "0" [[ $backup_media = false ]] && echoRgb "當前backup_settings.conf的\n -backup_media為0將不備份自定義資料夾" "0"
@@ -293,16 +293,12 @@ backup)
[[ ! -f $Backup/恢復備份.sh ]] && cp -r "$script_path/restore" "$Backup/恢復備份.sh" [[ ! -f $Backup/恢復備份.sh ]] && cp -r "$script_path/restore" "$Backup/恢復備份.sh"
[[ ! -f $Backup/終止腳本.sh ]] && cp -r "$MODDIR/終止腳本.sh" "$Backup/終止腳本.sh" [[ ! -f $Backup/終止腳本.sh ]] && cp -r "$MODDIR/終止腳本.sh" "$Backup/終止腳本.sh"
[[ ! -f $Backup/重新生成應用列表.sh ]] && cp -r "$script_path/Get_DirName" "$Backup/重新生成應用列表.sh" [[ ! -f $Backup/重新生成應用列表.sh ]] && cp -r "$script_path/Get_DirName" "$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#檢測到更新後的行為(1跳轉瀏覽器 0不跳轉瀏覽器但是複製連結到剪裁版)\nupdate_behavior=$update_behavior">"$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#備份與恢復遭遇異常或是結束後發送通知(toast與狀態欄提示)\ntoast_info=$toast_info\n\n#腳本檢測更新後進行跳轉瀏覽器或是複製連結?\nupdate=$update\n\n#檢測到更新後的行為(1跳轉瀏覽器 0不跳轉瀏覽器但是複製連結到剪裁版)\nupdate_behavior=$update_behavior\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"
filesize="$(du -ks "$Backup" | awk '{print $1}')" filesize="$(du -ks "$Backup" | awk '{print $1}')"
Quantity=0 Quantity=0
#分區佔用信息
partition_info() {
Occupation_status="$(df -h "${Backup%/*}" | sed -n 's|% /.*|%|p' | awk '{print $(NF-1),$(NF)}')"
lxj="$(echo "$Occupation_status" | awk '{print $2}' | sed 's/%//g')"
}
#檢測apk狀態進行備份 #檢測apk狀態進行備份
Backup_apk() { Backup_apk() {
stopscript
#創建APP備份文件夾 #創建APP備份文件夾
[[ ! -d $Backup_folder ]] && mkdir -p "$Backup_folder" [[ ! -d $Backup_folder ]] && mkdir -p "$Backup_folder"
apk_version2="$(pm list packages --show-versioncode "$name2" | cut -f3 -d ':')" apk_version2="$(pm list packages --show-versioncode "$name2" | cut -f3 -d ':')"
@@ -329,8 +325,7 @@ backup)
echoRgb "版本:$apk_version2" echoRgb "版本:$apk_version2"
fi fi
[[ $(cat "$txt2" | grep -v "#" | sed -e '/^$/d' | awk '{print $2}' | grep -w "^${name2}$" | head -1) = "" ]] && echo "${Backup_folder##*/} $name2" >>"$txt2" [[ $(cat "$txt2" | grep -v "#" | sed -e '/^$/d' | awk '{print $2}' | grep -w "^${name2}$" | head -1) = "" ]] && echo "${Backup_folder##*/} $name2" >>"$txt2"
partition_info partition_info "$Backup"
[[ $lxj -ge 95 ]] && echoRgb "$hx空間不足,達到$lxj%" "0" && exit 2
rm -rf "$Backup_folder"/*.apk rm -rf "$Backup_folder"/*.apk
#備份apk #備份apk
echoRgb "$1" echoRgb "$1"
@@ -388,6 +383,7 @@ backup)
#檢測數據位置進行備份 #檢測數據位置進行備份
Backup_data() { Backup_data() {
unset zsize Size unset zsize Size
stopscript
case $1 in case $1 in
user) Size="$userSize" && data_path="$path2/$name2" ;; user) Size="$userSize" && data_path="$path2/$name2" ;;
data) Size="$dataSize" && data_path="$path/$1/$name2" ;; data) Size="$dataSize" && data_path="$path/$1/$name2" ;;
@@ -402,9 +398,8 @@ backup)
esac esac
if [[ -d $data_path ]]; then if [[ -d $data_path ]]; then
if [[ $Size != $(du -ks "$data_path" | awk '{print $1}') ]]; then if [[ $Size != $(du -ks "$data_path" | awk '{print $1}') ]]; then
partition_info partition_info "$Backup"
[[ $name2 != $Open_apps2 ]] && am force-stop "$name2" [[ $name2 != $Open_apps2 ]] && am force-stop "$name2"
[[ $lxj -ge 95 ]] && echoRgb "$hx空間不足,達到$lxj%" "0" && exit 2
echoRgb "備份$1數據" echoRgb "備份$1數據"
case $1 in case $1 in
user) user)
@@ -457,7 +452,7 @@ backup)
echoRgb "$1數據不存在跳過備份" "2" echoRgb "$1數據不存在跳過備份" "2"
fi fi
fi fi
partition_info partition_info "$Backup"
} }
#開始循環$txt內的資料進行備份 #開始循環$txt內的資料進行備份
#記錄開始時間 #記錄開始時間
@@ -488,7 +483,7 @@ backup)
apk_path2="${apk_path2%/*}" apk_path2="${apk_path2%/*}"
if [[ -d $apk_path2 ]]; then if [[ -d $apk_path2 ]]; then
echoRgb "備份第$i/$r個應用 剩下$((r - i))" "3" echoRgb "備份第$i/$r個應用 剩下$((r - i))" "3"
echoRgb "備份$name1 ($name2)" echoRgb "備份$name1 ($name2)" "2"
unset ChineseName PackageName nobackup No_backupdata result apk_version versionName apk_version2 apk_version3 userSize dataSize obbSize unset ChineseName PackageName nobackup No_backupdata result apk_version versionName apk_version2 apk_version3 userSize dataSize obbSize
if [[ $name1 = *! || $name1 = * ]]; then if [[ $name1 = *! || $name1 = * ]]; then
name1="$(echo "$name1" | sed 's/!//g ; s///g')" name1="$(echo "$name1" | sed 's/!//g ; s///g')"
@@ -510,7 +505,6 @@ backup)
[[ -f $app_details ]] && . "$app_details" [[ -f $app_details ]] && . "$app_details"
fi fi
fi fi
[[ -f $Backup/STOP ]] && echoRgb "離開腳本" "0" && exit 1
[[ $hx = USB && $PT = "" ]] && echoRgb "隨身碟意外斷開 請檢查穩定性" "0" && exit 1 [[ $hx = USB && $PT = "" ]] && echoRgb "隨身碟意外斷開 請檢查穩定性" "0" && exit 1
starttime2="$(date -u "+%s")" starttime2="$(date -u "+%s")"
[[ $name2 = com.tencent.mobileqq ]] && echoRgb "QQ可能恢復備份失敗或是丟失聊天記錄請自行用你信賴的應用備份" "0" [[ $name2 = com.tencent.mobileqq ]] && echoRgb "QQ可能恢復備份失敗或是丟失聊天記錄請自行用你信賴的應用備份" "0"
@@ -541,7 +535,10 @@ backup)
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')"
echoRgb "完成$((i * 100 / r))% $hx$(echo "$Occupation_status" | awk 'END{print "剩餘:"$1"使用率:"$2}')" "3" echoRgb "完成$((i * 100 / r))% $hx$(echo "$Occupation_status" | awk 'END{print "剩餘:"$1"使用率:"$2}')" "3"
rgb_d="$rgb_a"
rgb_a=188
echoRgb "_________________$(endtime 1 "已經")___________________" echoRgb "_________________$(endtime 1 "已經")___________________"
rgb_a="$rgb_d"
else else
echoRgb "$name1[$name2]不在安裝列表,備份個寂寞?" "0" echoRgb "$name1[$name2]不在安裝列表,備份個寂寞?" "0"
fi fi
@@ -563,7 +560,7 @@ backup)
settings put secure default_input_method "$keyboard" >/dev/null 2>&1 settings put secure default_input_method "$keyboard" >/dev/null 2>&1
echo_log "設置鍵盤$(appinfo -d "(" -ed ")" -o ands,pn -pn "${keyboard%/*}" 2>/dev/null)" echo_log "設置鍵盤$(appinfo -d "(" -ed ")" -o ands,pn -pn "${keyboard%/*}" 2>/dev/null)"
fi fi
echoRgb "\n -已更新的apk=\"$osn\"\n -apk版本號無變化=\"$osj\"\n -user數據已備份=\"$osx\"\n -data數據已備份=\"$osb\"\n -obb數據已備份=\"$osg\"\n -user數據不存在=\"$osz\"\n -obb數據不存在=\"$osd\"\n -obb數據不存在=\"$ose\"" echoRgb "\n -已更新的apk=\"$osn\"\n -apk版本號無變化=\"$osj\"\n -user數據已備份=\"$osx\"\n -data數據已備份=\"$osb\"\n -obb數據已備份=\"$osg\"\n -user數據不存在=\"$osz\"\n -obb數據不存在=\"$osd\"\n -obb數據不存在=\"$ose\"" "3"
if [[ $backup_media = true ]]; then if [[ $backup_media = true ]]; then
A=1 A=1
B="$(echo "$Custom_path" | grep -v "#" | sed -e '/^$/d' | sed -n '$=')" B="$(echo "$Custom_path" | grep -v "#" | sed -e '/^$/d' | sed -n '$=')"
@@ -584,7 +581,11 @@ backup)
Backup_data "${REPLY##*/}" "$REPLY" Backup_data "${REPLY##*/}" "$REPLY"
[[ $result = 0 ]] && [[ $(cat "$mediatxt" | grep -v "#" | sed -e '/^$/d' | grep -w "^${REPLY##*/}.tar$" | head -1) = "" ]] && echo "${REPLY##*/}.tar" >> "$mediatxt" [[ $result = 0 ]] && [[ $(cat "$mediatxt" | grep -v "#" | sed -e '/^$/d' | grep -w "^${REPLY##*/}.tar$" | head -1) = "" ]] && echo "${REPLY##*/}.tar" >> "$mediatxt"
endtime 2 "${REPLY##*/}備份" "1" endtime 2 "${REPLY##*/}備份" "1"
echoRgb "完成$((A * 100 / B))% $hx$(echo "$Occupation_status" | awk 'END{print "剩餘:"$1"使用率:"$2}')" "2" && echoRgb "_________________$(endtime 1 "已經")___________________" && let A++ echoRgb "完成$((A * 100 / B))% $hx$(echo "$Occupation_status" | awk 'END{print "剩餘:"$1"使用率:"$2}')" "2"
rgb_d="$rgb_a"
rgb_a=188
echoRgb "_________________$(endtime 1 "已經")___________________"
rgb_a="$rgb_d" && let A++
done done
echoRgb "目錄↓↓↓\n -$Backup_folder" echoRgb "目錄↓↓↓\n -$Backup_folder"
endtime 1 "自定義備份" endtime 1 "自定義備份"
@@ -634,7 +635,6 @@ dumpname)
echoRgb "如果檢測到更新後跳轉瀏覽器下載?\n -音量上跳轉,下不跳轉" echoRgb "如果檢測到更新後跳轉瀏覽器下載?\n -音量上跳轉,下不跳轉"
get_version "跳轉" "不跳轉" && update="$branch" get_version "跳轉" "不跳轉" && update="$branch"
fi fi
update_script
txt="$MODDIR/appList.txt" txt="$MODDIR/appList.txt"
txt2="$MODDIR/mediaList.txt" txt2="$MODDIR/mediaList.txt"
rm -rf *.txt rm -rf *.txt
@@ -670,7 +670,6 @@ Restore)
echoRgb "如果檢測到更新後跳轉瀏覽器下載?\n -音量上跳轉,下不跳轉" echoRgb "如果檢測到更新後跳轉瀏覽器下載?\n -音量上跳轉,下不跳轉"
get_version "跳轉" "不跳轉" && update="$branch" get_version "跳轉" "不跳轉" && update="$branch"
fi fi
update_script
#禁用apk驗證 #禁用apk驗證
settings put global verifier_verify_adb_installs 0 2>/dev/null settings put global verifier_verify_adb_installs 0 2>/dev/null
#禁用安裝包驗證 #禁用安裝包驗證
@@ -690,6 +689,7 @@ Restore)
[[ $(which restorecon) = "" ]] && echoRgb "restorecon命令不存在" "0" && exit 1 [[ $(which restorecon) = "" ]] && echoRgb "restorecon命令不存在" "0" && exit 1
#顯示執行結果 #顯示執行結果
Release_data() { Release_data() {
stopscript
tar_path="$1" tar_path="$1"
X="$path2/$name2" X="$path2/$name2"
FILE_NAME="${tar_path##*/}" FILE_NAME="${tar_path##*/}"
@@ -778,6 +778,7 @@ Restore)
fi fi
} }
installapk() { installapk() {
stopscript
apkfile="$(find "$Backup_folder" -maxdepth 1 -name "apk.*" -type f 2>/dev/null)" apkfile="$(find "$Backup_folder" -maxdepth 1 -name "apk.*" -type f 2>/dev/null)"
if [[ $apkfile != "" ]]; then if [[ $apkfile != "" ]]; then
rm -rf "$TMPDIR"/* rm -rf "$TMPDIR"/*
@@ -842,7 +843,7 @@ Restore)
Backup_folder2="$MODDIR/Media" Backup_folder2="$MODDIR/Media"
[[ $name2 = "" ]] && echoRgb "應用包名獲取失敗" "0" && exit 1 [[ $name2 = "" ]] && echoRgb "應用包名獲取失敗" "0" && exit 1
if [[ -d $Backup_folder ]]; then if [[ -d $Backup_folder ]]; then
echoRgb "恢複$name1 ($name2)" echoRgb "恢複$name1 ($name2)" "2"
starttime2="$(date -u "+%s")" starttime2="$(date -u "+%s")"
if [[ $(pm path "$name2") = "" ]]; then if [[ $(pm path "$name2") = "" ]]; then
installapk installapk
@@ -867,7 +868,11 @@ Restore)
echoRgb "$name1沒有安裝無法恢復數據" "0" echoRgb "$name1沒有安裝無法恢復數據" "0"
fi fi
fi fi
endtime 2 "$name1恢複" "2" && echoRgb "完成$((i * 100 / r))%" "3" && echoRgb "____________________________________" endtime 2 "$name1恢複" "2" && echoRgb "完成$((i * 100 / r))%" "3"
rgb_d="$rgb_a"
rgb_a=188
echoRgb "_________________$(endtime 1 "已經")___________________"
rgb_a="$rgb_d"
else else
echoRgb "$Backup_folder資料夾遺失,無法恢複" "0" echoRgb "$Backup_folder資料夾遺失,無法恢複" "0"
fi fi
@@ -910,7 +915,6 @@ Restore2)
echoRgb "如果檢測到更新後跳轉瀏覽器下載?\n -音量上跳轉,下不跳轉" echoRgb "如果檢測到更新後跳轉瀏覽器下載?\n -音量上跳轉,下不跳轉"
get_version "跳轉" "不跳轉" && update="$branch" get_version "跳轉" "不跳轉" && update="$branch"
fi fi
update_script
#禁用apk驗證 #禁用apk驗證
settings put global verifier_verify_adb_installs 0 2>/dev/null settings put global verifier_verify_adb_installs 0 2>/dev/null
#禁用安裝包驗證 #禁用安裝包驗證
@@ -1089,7 +1093,6 @@ Restore3)
echoRgb "如果檢測到更新後跳轉瀏覽器下載?\n -音量上跳轉,下不跳轉" echoRgb "如果檢測到更新後跳轉瀏覽器下載?\n -音量上跳轉,下不跳轉"
get_version "跳轉" "不跳轉" && update="$branch" get_version "跳轉" "不跳轉" && update="$branch"
fi fi
update_script
#記錄開始時間 #記錄開始時間
starttime1="$(date -u "+%s")" starttime1="$(date -u "+%s")"
echo_log() { echo_log() {
@@ -1100,6 +1103,7 @@ Restore3)
fi fi
} }
Release_data() { Release_data() {
stopscript
tar_path="$1" tar_path="$1"
if [[ -f $tar_path ]]; then if [[ -f $tar_path ]]; then
FILE_NAME="${tar_path##*/}" FILE_NAME="${tar_path##*/}"
@@ -1152,7 +1156,6 @@ Getlist)
[[ $debug_list = true ]] && txtpath="${txtpath/'/storage/emulated/'/'/data/media/'}" [[ $debug_list = true ]] && txtpath="${txtpath/'/storage/emulated/'/'/data/media/'}"
nametxt="$txtpath/appList.txt" nametxt="$txtpath/appList.txt"
[[ ! -e $nametxt ]] && echo '#不需要備份的應用請在開頭注釋# 比如#酷安 xxxxxxxx\n#不需要備份數據比如酷安! xxxxxxxx應用名後方加一個驚嘆號即可 注意是應用名不是包名' >"$nametxt" [[ ! -e $nametxt ]] && echo '#不需要備份的應用請在開頭注釋# 比如#酷安 xxxxxxxx\n#不需要備份數據比如酷安! xxxxxxxx應用名後方加一個驚嘆號即可 注意是應用名不是包名' >"$nametxt"
update_script
echoRgb "請勿關閉腳本,等待提示結束" echoRgb "請勿關閉腳本,等待提示結束"
rgb_a=118 rgb_a=118
rm -rf "$MODDIR/tmp" rm -rf "$MODDIR/tmp"
@@ -1237,7 +1240,6 @@ backup_media)
done done
fi fi
} & } &
PU="$(ls /dev/block/vold | grep public)"
#效驗選填是否正確 #效驗選填是否正確
isBoolean "$Lo" "LO" && Lo="$nsx" isBoolean "$Lo" "LO" && Lo="$nsx"
if [[ $Lo = false ]]; then if [[ $Lo = false ]]; then
@@ -1246,70 +1248,15 @@ backup_media)
echoRgb "如果檢測到更新後跳轉瀏覽器下載?\n -音量上跳轉,下不跳轉" echoRgb "如果檢測到更新後跳轉瀏覽器下載?\n -音量上跳轉,下不跳轉"
get_version "跳轉" "不跳轉" && update="$branch" get_version "跳轉" "不跳轉" && update="$branch"
fi fi
update_script backup_path
if [[ $Output_path != "" ]]; then
[[ ${Output_path: -1} = / ]] && Output_path="${Output_path%?}"
Backup="$Output_path/Backup_$Compression_method"
outshow="使用自定義目錄"
else
if [[ $APP_ENV = 1 ]]; then
Backup="/storage/emulated/0/Backup_$Compression_method"
outshow="沒有設定備份目錄 使用默認路徑"
else
Backup="$MODDIR/Backup_$Compression_method"
outshow="使用當前路徑作為備份目錄"
fi
fi
if [[ $PU != "" ]]; then
[[ -f /proc/mounts ]] && PT="$(cat /proc/mounts | grep "$PU" | awk '{print $2}')"
if [[ -d $PT ]]; then
if [[ $(echo "$MODDIR" | grep -oE "^${PT}") != "" || $USBdefault = true ]]; then
hx="USB"
else
echoRgb "檢測到隨身碟 是否在隨身碟備份\n -音量上是,音量下不是" "2"
get_version "選擇了隨身碟備份" "選擇了本地備份"
[[ $branch = true ]] && hx="USB"
fi
if [[ $hx = USB ]]; then
Backup="$PT/Backup_$Compression_method"
data="/dev/block/vold/$PU"
mountinfo="$(df -T "${Backup%/*}" | sed -n 's|% /.*|%|p' | awk '{print $(NF-4)}')"
case $mountinfo in
fuseblk | exfat | NTFS | ext4 | f2fs)
outshow="於隨身碟備份"
;;
*)
echoRgb "隨身碟檔案系統$mountinfo不支持超過單檔4GB\n -請格式化為exfat" "0"
exit 1
;;
esac
fi
fi
else
echoRgb "沒有檢測到隨身碟於本地備份" "0"
fi
rm -rf "$Backup/STOP"
#分區詳細
if [[ $(echo "$Backup" | egrep -o "^/storage/emulated") != "" ]]; then
Backup_path="/data"
else
Backup_path="${Backup%/*}"
fi
echoRgb "$hx備份資料夾所使用分區統計如下↓\n -$(df -h "${Backup%/*}" | sed -n 's|% /.*|%|p' | awk '{print $(NF-3),$(NF-2),$(NF-1),$(NF)}' | sed 's/G//g' | awk 'END{print "總共:"$1"G已用:"$2"G剩餘:"$3"G使用率:"$4}')檔案系統:$(df -T "$Backup_path" | sed -n 's|% /.*|%|p' | awk '{print $(NF-4)}')\n -備份目錄輸出位置↓\n -$Backup"
echoRgb "$outshow" "2"
#分區佔用信息
partition_info() {
Occupation_status="$(df -h "${Backup%/*}" | sed -n 's|% /.*|%|p' | awk '{print $(NF-1),$(NF)}')"
lxj="$(echo "$Occupation_status" | awk '{print $2}' | sed 's/%//g')"
}
Backup_data() { Backup_data() {
unset zsize unset zsize
stopscript
[[ -f $app_details ]] && Size="$(cat "$app_details" | awk "/$1Size/"'{print $1}' | cut -f2 -d '=' | tail -n1 | sed 's/\"//g')" [[ -f $app_details ]] && Size="$(cat "$app_details" | awk "/$1Size/"'{print $1}' | cut -f2 -d '=' | tail -n1 | sed 's/\"//g')"
data_path="$2" data_path="$2"
if [[ -d $data_path ]]; then if [[ -d $data_path ]]; then
if [[ $Size != $(du -ks "$data_path" | awk '{print $1}') ]]; then if [[ $Size != $(du -ks "$data_path" | awk '{print $1}') ]]; then
partition_info partition_info "$Backup"
[[ $lxj -ge 95 ]] && echoRgb "$hx空間不足,達到$lxj%" "0" && exit 2
echoRgb "備份$1數據" echoRgb "備份$1數據"
tar --exclude="Backup_"* --exclude="${data_path##*/}/cache" -cPpf - "$data_path" 2>/dev/null | pv >"$Backup_folder/$1.tar" tar --exclude="Backup_"* --exclude="${data_path##*/}/cache" -cPpf - "$data_path" 2>/dev/null | pv >"$Backup_folder/$1.tar"
echo_log "備份$1數據" echo_log "備份$1數據"
@@ -1327,7 +1274,7 @@ backup_media)
echoRgb "$1數據不存在跳過備份" "2" echoRgb "$1數據不存在跳過備份" "2"
fi fi
fi fi
partition_info partition_info "$Backup"
} }
echoRgb "假設反悔了要終止腳本請儘速離開此腳本點擊終止腳本.sh,否則腳本將繼續執行直到結束" "0" echoRgb "假設反悔了要終止腳本請儘速離開此腳本點擊終止腳本.sh,否則腳本將繼續執行直到結束" "0"
A=1 A=1