bug fix
This commit is contained in:
64
backup.sh
64
backup.sh
@@ -5,11 +5,15 @@ bin_path="$tools_path/bin"
|
||||
script_path="$tools_path/script"
|
||||
script="${0##*/}"
|
||||
[[ $(echo "$MODDIR" | grep -v 'mt') == "" ]] && echo "我他媽骨灰給你揚了撒了TM不解壓縮?用毛線 憨批" && exit 1
|
||||
[[ ! -d $tools_path ]] && echo "$tools_path目錄遺失" && exit 1
|
||||
[[ ! -d $script_path ]] && echo "$script_path目錄遺失" && exit 1
|
||||
[[ ! -d $tools_path/apk ]] && echo "$tools_path/apk目錄遺失" && exit 1
|
||||
. "$bin_path/bin.sh"
|
||||
[[ ! -d $tools_path ]] && echo "$tools_path二進制目錄遺失" && EXIT="true"
|
||||
[[ ! -d $script_path ]] && echo "$script_path腳本目錄遺失" && EXIT="true"
|
||||
[[ ! -d $tools_path/apk ]] && echo "$tools_path/apk目錄遺失" && EXIT="true"
|
||||
[[ ! -d $bin_path ]] && echo "$bin_path關鍵目錄遺失" && EXIT="true"
|
||||
[[ ! -f $bin_path/bin.sh ]] && echo "$bin_path/bin.sh關鍵腳本遺失" && EXIT="true"
|
||||
[[ ! -f $MODDIR/backup_settings.conf ]] && echo "backup_settings.conf配置遺失" && EXIT="true"
|
||||
[[ $EXIT == true ]] && exit 1
|
||||
. "$MODDIR/backup_settings.conf"
|
||||
. "$bin_path/bin.sh"
|
||||
case $MODDIR in
|
||||
/storage/emulated/0/Android/* | /data/media/0/Android/* | /sdcard/Android/*) echoRgb "請勿在$MODDIR內備份" "0" && exit 2 ;;
|
||||
esac
|
||||
@@ -17,7 +21,6 @@ case $Compression_method in
|
||||
zstd | Zstd | ZSTD | tar | Tar | TAR | lz4 | Lz4 | LZ4) ;;
|
||||
*) echoRgb "$Compression_method為不支持的壓縮算法" "0" && exit 2 ;;
|
||||
esac
|
||||
[[ ! -f $MODDIR/backup_settings.conf ]] && echoRgb "backup_settings.conf遺失" "0" && exit 1
|
||||
#效驗選填是否正確
|
||||
isBoolean "$Lo" && Lo="$nsx"
|
||||
if [[ $Lo == false ]]; then
|
||||
@@ -32,15 +35,6 @@ i=1
|
||||
path="/data/media/0/Android"
|
||||
path2="/data/user/0"
|
||||
txt="$MODDIR/appList.txt"
|
||||
if [[ $Output_path != "" ]]; then
|
||||
echoRgb "使用自定義目錄\n -輸出位置:$Output_path" && Backup="$Output_path/Backup_$Compression_method"
|
||||
else
|
||||
Backup="$MODDIR/Backup_$Compression_method"
|
||||
if [[ $APP_ENV == 1 ]]; then
|
||||
Backup="/data/media/0/Download/Backup_$Compression_method"
|
||||
echoRgb "沒有設定備份目錄 使用默認路徑\n $Backup"
|
||||
fi
|
||||
fi
|
||||
txt="${txt/'/storage/emulated/'/'/data/media/'}"
|
||||
PU="$(ls /dev/block/vold | grep public)"
|
||||
if [[ ! -f $txt ]]; then
|
||||
@@ -49,6 +43,7 @@ else
|
||||
cat "$txt" | grep -v "#" | while read; do
|
||||
name=($REPLY $REPLY)
|
||||
if [[ $REPLY != "" && $(pm path "${name[1]}" | cut -f2 -d ':') == "" ]]; then
|
||||
echo "$REPLY"
|
||||
echoRgb "${name[2]}不存在系統,從列表中刪除"
|
||||
cat "$txt" | sed -e "s/$REPLY//g ; /^$/d" >"$txt.tmp" && mv "$txt.tmp" "$txt"
|
||||
fi
|
||||
@@ -61,6 +56,16 @@ data=/data
|
||||
hx="本地"
|
||||
echoRgb "壓縮方式:$Compression_method"
|
||||
echoRgb "提示 腳本支持後台壓縮 可以直接離開腳本\n -或是關閉終端也能備份 如需終止腳本\n -請再次執行$script即可停止\n -備份結束將發送toast提示語" "2"
|
||||
if [[ $Output_path != "" ]]; then
|
||||
Backup="$Output_path/Backup_$Compression_method"
|
||||
outshow="使用自定義目錄\n -輸出位置↓↓↓\n -$Backup"
|
||||
else
|
||||
Backup="$MODDIR/Backup_$Compression_method"
|
||||
if [[ $APP_ENV == 1 ]]; then
|
||||
Backup="/data/media/0/Download/Backup_$Compression_method"
|
||||
outshow="沒有設定備份目錄 使用默認路徑↓↓↓\n -$Backup"
|
||||
fi
|
||||
fi
|
||||
if [[ $PU != "" ]]; then
|
||||
[[ -f /proc/mounts ]] && PT="$(cat /proc/mounts | grep "$PU" | awk '{print $2}')"
|
||||
if [[ -d $PT ]]; then
|
||||
@@ -76,8 +81,8 @@ if [[ $PU != "" ]]; then
|
||||
data="/dev/block/vold/$PU"
|
||||
mountinfo="$(df -T "$data" | awk 'END{print $1}')"
|
||||
case $mountinfo in
|
||||
fuseblk | exfat | NTFS | ext4)
|
||||
echoRgb "於隨身碟備份 檔案系統:$mountinfo" "1"
|
||||
vfat | fuseblk | exfat | NTFS | ext4)
|
||||
outshow="於隨身碟備份 檔案系統:$mountinfo \n -路徑↓↓↓\n -$Backup"
|
||||
;;
|
||||
*)
|
||||
echoRgb "隨身碟檔案系統$mountinfo不支持超過單檔4GB\n -請格式化為exfat" "0"
|
||||
@@ -89,6 +94,7 @@ if [[ $PU != "" ]]; then
|
||||
else
|
||||
echoRgb "沒有檢測到隨身碟於本地備份" "1"
|
||||
fi
|
||||
echoRgb "$outshow" "1"
|
||||
[[ $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_media == false ]] && echoRgb "當前backup_settings.conf的\n -backup_media為0將不備份自定義資料夾" "0"
|
||||
@@ -142,6 +148,7 @@ Backup_apk() {
|
||||
)
|
||||
echo_log "備份$apk_number個Apk"
|
||||
if [[ $result == 0 ]]; then
|
||||
pm list packages --show-versioncode "$name2"
|
||||
echo "apk_version=\"$(dumpsys package "$name2" | awk '/versionName=/{print $1}' | cut -f2 -d '=' | head -1)\"" >>"$app_details"
|
||||
[[ $PackageName == "" ]] && echo "PackageName=\"$name2\"" >>"$app_details"
|
||||
[[ $ChineseName == "" ]] && echo "ChineseName=\"$name1\"" >>"$app_details"
|
||||
@@ -188,16 +195,16 @@ Backup_data() {
|
||||
case $1 in
|
||||
user)
|
||||
case $Compression_method in
|
||||
tar | Tar | TAR) tar --exclude="${data_path##*/}/.ota" --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/lib" -cpf - -C "${data_path%/*}" "${data_path##*/}" 2>/dev/null | pv -f >"$Backup_folder/$1.tar" ;;
|
||||
zstd | Zstd | ZSTD) tar --exclude="${data_path##*/}/.ota" --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/lib" -cpf - -C "${data_path%/*}" "${data_path##*/}" 2>/dev/null | pv -f | zstd -r -T0 --ultra -6 -q >"$Backup_folder/$1.tar.zst" ;;
|
||||
lz4 | Lz4 | LZ4) tar --exclude="${data_path##*/}/.ota" --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/lib" -cpf - -C "${data_path%/*}" "${data_path##*/}" 2>/dev/null | pv -f | lz4 -1 >"$Backup_folder/$1.tar.lz4" ;;
|
||||
tar | Tar | TAR) tar --exclude="${data_path##*/}/.ota" --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/lib" -cpf - -C "${data_path%/*}" "${data_path##*/}" 2>/dev/null | pv -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f >"$Backup_folder/$1.tar" ;;
|
||||
zstd | Zstd | ZSTD) tar --exclude="${data_path##*/}/.ota" --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/lib" -cpf - -C "${data_path%/*}" "${data_path##*/}" 2>/dev/null | pv -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f | zstd -r -T0 --ultra -6 -q >"$Backup_folder/$1.tar.zst" ;;
|
||||
lz4 | Lz4 | LZ4) tar --exclude="${data_path##*/}/.ota" --exclude="${data_path##*/}/cache" --exclude="${data_path##*/}/lib" -cpf - -C "${data_path%/*}" "${data_path##*/}" 2>/dev/null | pv -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f | lz4 -1 >"$Backup_folder/$1.tar.lz4" ;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
case $Compression_method in
|
||||
tar | Tar | TAR) tar --exclude="Backup_"* --exclude="${data_path##*/}/cache" -cPpf - "$data_path" 2>/dev/null | pv -f >"$Backup_folder/$1.tar" ;;
|
||||
zstd | Zstd | ZSTD) tar --exclude="Backup_"* --exclude="${data_path##*/}/cache" -cPpf - "$data_path" 2>/dev/null | pv -f | zstd -r -T0 --ultra -6 -q >"$Backup_folder/$1.tar.zst" ;;
|
||||
lz4 | Lz4 | LZ4) tar --exclude="Backup_"* --exclude="${data_path##*/}/cache" -cPpf - "$data_path" 2>/dev/null | pv -f | lz4 -1 >"$Backup_folder/$1.tar.lz4" ;;
|
||||
tar | Tar | TAR) tar --exclude="Backup_"* --exclude="${data_path##*/}/cache" -cPpf - "$data_path" 2>/dev/null | pv -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f >"$Backup_folder/$1.tar" ;;
|
||||
zstd | Zstd | ZSTD) tar --exclude="Backup_"* --exclude="${data_path##*/}/cache" -cPpf - "$data_path" 2>/dev/null | pv -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f | zstd -r -T0 --ultra -6 -q >"$Backup_folder/$1.tar.zst" ;;
|
||||
lz4 | Lz4 | LZ4) tar --exclude="Backup_"* --exclude="${data_path##*/}/cache" -cPpf - "$data_path" 2>/dev/null | pv -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f | lz4 -1 >"$Backup_folder/$1.tar.lz4" ;;
|
||||
esac
|
||||
[[ $Compression_method1 != "" ]] && Compression_method="$Compression_method1"
|
||||
unset Compression_method1
|
||||
@@ -266,8 +273,11 @@ en=118
|
||||
[[ -f $app_details ]] && . "$app_details"
|
||||
fi
|
||||
fi
|
||||
Occupation_status="$(df -h "$data" | cut -f3 -d 'use' | cut -f1 -d '%')%"
|
||||
lxj="$(echo "$Occupation_status" | awk '{print $5}' | sed 's/%//g')"
|
||||
#我剛剛寫的
|
||||
#df -h "$data" | cut -d 'Use%' -f4 | cut -f1 -d '%' | cut -f3,4 -d 'G'
|
||||
Occupation_status="$(df -h "$data" | sed -n 's|% /.*|%|p' | awk '{print $(NF-1),$(NF)}')"
|
||||
#Occupation_status="$(echo "$Occupation_status" | cut -f3,4 -d 'G')"
|
||||
lxj="$(echo "$Occupation_status" | awk '{print $2}' | sed 's/%//g')"
|
||||
[[ $hx == USB && $PT == "" ]] && echoRgb "隨身碟意外斷開 請檢查穩定性" "0" && exit 1
|
||||
starttime2="$(date -u "+%s")"
|
||||
echoRgb "備份$name1 ($name2)"
|
||||
@@ -295,7 +305,7 @@ en=118
|
||||
[[ $name2 == github.tornaco.android.thanos ]] && Backup_data "thanox" "$(find "/data/system" -name "thanos*" -maxdepth 1 -type d)"
|
||||
fi
|
||||
endtime 2 "$name1備份"
|
||||
echoRgb "完成$((i * 100 / r))% $hx$(echo "$Occupation_status" | awk 'END{print "剩餘:"$4"使用率:"$5}')"
|
||||
echoRgb "完成$((i * 100 / r))% $hx$(echo "$Occupation_status" | awk 'END{print "剩餘:"$1"使用率:"$2}')"
|
||||
echoRgb "____________________________________" "3"
|
||||
else
|
||||
echoRgb "$name1[$name2]不在安裝列表,備份個寂寞?" "0"
|
||||
@@ -318,7 +328,7 @@ en=118
|
||||
starttime2="$(date -u "+%s")"
|
||||
Backup_data "${REPLY##*/}" "$REPLY"
|
||||
endtime 2 "${REPLY##*/}備份"
|
||||
echoRgb "完成$((A * 100 / B))% $hx$(echo "$Occupation_status" | awk 'END{print "剩餘:"$4"使用率:"$5}')" && echoRgb "____________________________________" "3" && let A++
|
||||
echoRgb "完成$((A * 100 / B))% $hx$(echo "$Occupation_status" | awk 'END{print "剩餘:"$1"使用率:"$2}')" && echoRgb "____________________________________" "3" && let A++
|
||||
done
|
||||
endtime 1 "自定義備份"
|
||||
else
|
||||
@@ -333,7 +343,7 @@ en=118
|
||||
#計算出備份大小跟差異性
|
||||
filesizee="$(du -ks "$Backup" | awk '{print $1}')"
|
||||
dsize="$(($((filesizee - filesize)) / 1024))"
|
||||
echoRgb "備份資料夾路徑:$Backup" "2"
|
||||
echoRgb "備份資料夾路徑↓↓↓\n -$Backup" "2"
|
||||
echoRgb "備份資料夾總體大小$(du -ksh "$Backup" | awk '{print $1}')"
|
||||
if [[ $dsize -gt 0 ]]; then
|
||||
if [[ $((dsize / 1024)) -gt 0 ]]; then
|
||||
|
||||
Reference in New Issue
Block a user