This commit is contained in:
Yawasau
2022-03-29 21:55:32 +08:00
parent 83d5a1411b
commit af8e6ff040
3 changed files with 64 additions and 30 deletions

View File

@@ -41,6 +41,11 @@ Custom_path="
/storage/emulated/0/DCIM /storage/emulated/0/DCIM
" "
#備份黑名單 備份apk不備份任何數據
blacklist="jp.naver.line.android
com.esunbank
com.chailease.tw.app.android.ccfappcust"
#壓縮算法(可用lz4 zstd tar tar為僅打包 有什麼好用的壓縮算法請聯繫我 #壓縮算法(可用lz4 zstd tar tar為僅打包 有什麼好用的壓縮算法請聯繫我
#lz4壓縮最快但是壓縮率略差 zstd擁有良好的壓縮率與速度 當然慢於lz4 #lz4壓縮最快但是壓縮率略差 zstd擁有良好的壓縮率與速度 當然慢於lz4
Compression_method=zstd Compression_method=zstd

View File

@@ -20,7 +20,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="V14.3" backup_version="V14.4"
#設置二進制命令目錄位置 #設置二進制命令目錄位置
[[ $bin_path = "" ]] && echo "未正確指定bin.sh位置" && exit 2 [[ $bin_path = "" ]] && echo "未正確指定bin.sh位置" && exit 2
#bin_path="${bin_path/'/storage/emulated/'/'/data/media/'}" #bin_path="${bin_path/'/storage/emulated/'/'/data/media/'}"

View File

@@ -172,12 +172,18 @@ backup)
if [[ ! -f $txt ]]; then if [[ ! -f $txt ]]; then
echoRgb "請執行\"Getlist.sh\"獲取應用列表再來備份" "0" && exit 1 echoRgb "請執行\"Getlist.sh\"獲取應用列表再來備份" "0" && exit 1
else else
cat "$txt" | grep -v "#" | while read; do D="1"
name=($REPLY $REPLY) C="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n '$=')"
if [[ $REPLY != "" && ${name[1]} != "" && $(pm path "${name[1]}" | cut -f2 -d ':') = "" ]]; then while [[ $D -le $C ]]; do
echoRgb "${name[2]}不存在系統,從列表中刪除" "0" name1="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n "${D}p" | awk '{print $1}')"
echo "$(sed -e "s/$REPLY//g ; /^$/d" "$txt")" >"$txt" name2="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n "${D}p" | awk '{print $2}')"
{
if [[ $name2 != "" && $(pm path "$name2" | cut -f2 -d ':') = "" ]]; then
echoRgb "$name1不存在系統,從列表中刪除" "0"
echo "$(sed -e "s/$name1 $name2//g ; /^$/d" "$txt")" >"$txt"
fi fi
} &
let D++
done done
echo "$(sed -e '/^$/d' "$txt")" >"$txt" echo "$(sed -e '/^$/d' "$txt")" >"$txt"
fi fi
@@ -273,6 +279,12 @@ backup)
;; ;;
esac esac
if [[ $nobackup != true ]]; then if [[ $nobackup != true ]]; then
apk_version2="$(dumpsys package "$name2" | awk '/versionName=/{print $1}' | cut -f2 -d '=' | head -1)"
if [[ $apk_version != "" ]]; then
echoRgb "版本:$apk_version>$apk_version2"
else
echoRgb "版本:$apk_version2"
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
[[ $lxj -ge 95 ]] && echoRgb "$hx空間不足,達到$lxj%" "0" && exit 2 [[ $lxj -ge 95 ]] && echoRgb "$hx空間不足,達到$lxj%" "0" && exit 2
@@ -297,8 +309,12 @@ backup)
) )
echo_log "備份$apk_number個Apk" echo_log "備份$apk_number個Apk"
if [[ $result = 0 ]]; then if [[ $result = 0 ]]; then
#pm list packages --show-versioncode "$name2" #pm list packages --show-versioncode "com.facebook.katana"
echo "apk_version=\"$(dumpsys package "$name2" | awk '/versionName=/{print $1}' | cut -f2 -d '=' | head -1)\"" >>"$app_details" if [[ $apk_version = "" ]]; then
echo "apk_version=\"$apk_version2\"" >>"$app_details"
else
echo "$(cat "$app_details" | sed "s/"${apk_version}"/"${apk_version2}"/g")">"$app_details"
fi
[[ $PackageName = "" ]] && echo "PackageName=\"$name2\"" >>"$app_details" [[ $PackageName = "" ]] && echo "PackageName=\"$name2\"" >>"$app_details"
[[ $ChineseName = "" ]] && echo "ChineseName=\"$name1\"" >>"$app_details" [[ $ChineseName = "" ]] && echo "ChineseName=\"$name1\"" >>"$app_details"
[[ ! -f $Backup_folder/Restorebackup.sh ]] && cp -r "$script_path/restore2" "$Backup_folder/Restorebackup.sh" [[ ! -f $Backup_folder/Restorebackup.sh ]] && cp -r "$script_path/restore2" "$Backup_folder/Restorebackup.sh"
@@ -363,10 +379,15 @@ backup)
echo_log "備份$1數據" echo_log "備份$1數據"
if [[ $result = 0 ]]; then if [[ $result = 0 ]]; then
if [[ $zsize != "" ]]; then if [[ $zsize != "" ]]; then
#cat "$app_details" | sed "s/$apk_version/$apk_version2/g"
echo "#$1Size=\"$(du -ks "$data_path" | awk '{print $1}')\"" >>"$app_details" echo "#$1Size=\"$(du -ks "$data_path" | awk '{print $1}')\"" >>"$app_details"
[[ $2 != $(cat "$app_details" | awk "/$1path/"'{print $1}' | cut -f2 -d '=' | tail -n1 | sed 's/\"//g') ]] && echo "#$1path=\"$2\"" >>"$app_details" [[ $2 != $(cat "$app_details" | awk "/$1path/"'{print $1}' | cut -f2 -d '=' | tail -n1 | sed 's/\"//g') ]] && echo "#$1path=\"$2\"" >>"$app_details"
else else
echo "$1Size=\"$(du -ks "$data_path" | awk '{print $1}')\"" >>"$app_details" if [[ $Size != "" ]]; then
echo "$(cat "$app_details" | sed "s/"$Size"/"$(du -ks "$data_path" | awk '{print $1}')"/g")">"$app_details"
else
echo "$1Size=\"$(du -ks "$data_path" | awk '{print $1}')\"" >>"$app_details"
fi
fi fi
fi fi
else else
@@ -398,10 +419,15 @@ 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"
unset ChineseName PackageName nobackup No_backupdata result type echoRgb "備份$name1 ($name2)"
unset ChineseName PackageName nobackup No_backupdata result
if [[ $name1 = *! || $name1 = * ]]; then if [[ $name1 = *! || $name1 = * ]]; then
name1="$(echo "$name1" | sed 's/!//g ; s///g')" name1="$(echo "$name1" | sed 's/!//g ; s///g')"
echoRgb "跳過備份$name1 所有數據" "0" echoRgb "跳過備份所有數據" "0"
No_backupdata=1
fi
if [[ $(echo "$blacklist" | egrep -w "$name2") = $name2 ]]; then
echoRgb "黑名單應用跳過備份所有數據" "0"
No_backupdata=1 No_backupdata=1
fi fi
Backup_folder="$Backup/$name1" Backup_folder="$Backup/$name1"
@@ -409,7 +435,7 @@ backup)
if [[ -f $app_details ]]; then if [[ -f $app_details ]]; then
. "$app_details" . "$app_details"
if [[ $PackageName != $name2 ]]; then if [[ $PackageName != $name2 ]]; then
unset userSize ChineseName PackageName apk_version type result unset userSize ChineseName PackageName apk_version apk_version2 result
Backup_folder="$Backup/${name1}[${name2}]" Backup_folder="$Backup/${name1}[${name2}]"
app_details="$Backup_folder/app_details" app_details="$Backup_folder/app_details"
[[ -f $app_details ]] && . "$app_details" [[ -f $app_details ]] && . "$app_details"
@@ -418,7 +444,6 @@ backup)
[[ -f $Backup/STOP ]] && echoRgb "離開腳本" "0" && exit 1 [[ -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")"
echoRgb "備份$name1 ($name2)"
[[ $name2 = com.tencent.mobileqq ]] && echoRgb "QQ可能恢復備份失敗或是丟失聊天記錄請自行用你信賴的應用備份" "0" [[ $name2 = com.tencent.mobileqq ]] && echoRgb "QQ可能恢復備份失敗或是丟失聊天記錄請自行用你信賴的應用備份" "0"
[[ $name2 = com.tencent.mm ]] && echoRgb "WX可能恢復備份失敗或是丟失聊天記錄請自行用你信賴的應用備份" "0" [[ $name2 = com.tencent.mm ]] && echoRgb "WX可能恢復備份失敗或是丟失聊天記錄請自行用你信賴的應用備份" "0"
apk_number="$(echo "$apk_path" | wc -l)" apk_number="$(echo "$apk_path" | wc -l)"
@@ -536,7 +561,7 @@ dumpname)
. "$REPLY/app_details" . "$REPLY/app_details"
if [[ $PackageName != "" ]]; then if [[ $PackageName != "" ]]; then
[[ ! -f $txt ]] && echo "#不需要恢復還原的應用請在開頭注釋# 比如#xxxxxxxx 酷安" >"$txt" [[ ! -f $txt ]] && echo "#不需要恢復還原的應用請在開頭注釋# 比如#xxxxxxxx 酷安" >"$txt"
echo "${REPLY##*/} $PackageName $type" >>"$txt" echo "${REPLY##*/} $PackageName" >>"$txt"
fi fi
fi fi
done done
@@ -553,13 +578,13 @@ Restore)
fi fi
update_script update_script
#禁用apk驗證 #禁用apk驗證
settings put global verifier_verify_adb_installs 0 settings put global verifier_verify_adb_installs 0 2>/dev/null
#禁用安裝包驗證 #禁用安裝包驗證
settings put global package_verifier_enable 0 settings put global package_verifier_enable 0 2>/dev/null
#關閉play安全效驗 #關閉play安全效驗
if [[ $(settings get global package_verifier_user_consent) != "" && $(settings get global package_verifier_user_consent) != -1 ]]; then if [[ $(settings get global package_verifier_user_consent 2>/dev/null) != -1 ]]; then
settings put global package_verifier_user_consent -1 settings put global package_verifier_user_consent -1 2>/dev/null
settings put global upload_apk_enable 0 settings put global upload_apk_enable 0 2>/dev/null
echoRgb "PLAY安全驗證為開啟狀態已被腳本關閉防止apk安裝失敗" "3" echoRgb "PLAY安全驗證為開啟狀態已被腳本關閉防止apk安裝失敗" "3"
fi fi
[[ ! -d $path2 ]] && echoRgb "設備不存在user目錄" "0" && exit 1 [[ ! -d $path2 ]] && echoRgb "設備不存在user目錄" "0" && exit 1
@@ -777,13 +802,13 @@ Restore2)
fi fi
update_script update_script
#禁用apk驗證 #禁用apk驗證
settings put global verifier_verify_adb_installs 0 settings put global verifier_verify_adb_installs 0 2>/dev/null
#禁用安裝包驗證 #禁用安裝包驗證
settings put global package_verifier_enable 0 settings put global package_verifier_enable 0 2>/dev/null
#關閉play安全效驗 #關閉play安全效驗
if [[ $(settings get global package_verifier_user_consent) != "" && $(settings get global package_verifier_user_consent) != -1 ]]; then if [[ $(settings get global package_verifier_user_consent 2>/dev/null) != -1 ]]; then
settings put global package_verifier_user_consent -1 settings put global package_verifier_user_consent -1 2>/dev/null
settings put global upload_apk_enable 0 settings put global upload_apk_enable 0 2>/dev/null
echoRgb "PLAY安全驗證為開啟狀態已被腳本關閉防止apk安裝失敗" "3" echoRgb "PLAY安全驗證為開啟狀態已被腳本關閉防止apk安裝失敗" "3"
fi fi
[[ ! -d $path2 ]] && echoRgb "設備不存在user目錄" "0" && exit 1 [[ ! -d $path2 ]] && echoRgb "設備不存在user目錄" "0" && exit 1
@@ -1079,14 +1104,18 @@ com.android.chrome"
let bn++ LR++ let bn++ LR++
done done
if [[ -f $nametxt ]]; then if [[ -f $nametxt ]]; then
cat "$nametxt" | grep -v "#" | while read; do D="1"
name=($REPLY $REPLY) C="$(cat "$nametxt" | grep -v "#" | sed -e '/^$/d' | sed -n '$=')"
while [[ $D -le $C ]]; do
name1="$(cat "$nametxt" | grep -v "#" | sed -e '/^$/d' | sed -n "${D}p" | awk '{print $1}')"
name2="$(cat "$nametxt" | grep -v "#" | sed -e '/^$/d' | sed -n "${D}p" | awk '{print $2}')"
{ {
if [[ $REPLY != "" && $(pm path "${name[1]}" | cut -f2 -d ':') = "" ]]; then if [[ $name2 != "" && $(pm path "$name2" | cut -f2 -d ':') = "" ]]; then
echoRgb "${name[2]}不存在系統,從列表中刪除" echoRgb "$name1不存在系統,從列表中刪除" "0"
echo "$(sed -e "s/$REPLY//g ; /^$/d" "$nametxt")" >"$nametxt" echo "$(sed -e "s/$name1 $name2//g ; /^$/d" "$nametxt")" >"$nametxt"
fi fi
} & } &
let D++
done done
echo "$(sort "$nametxt" | sed -e '/^$/d')" >"$nametxt" echo "$(sort "$nametxt" | sed -e '/^$/d')" >"$nametxt"
fi fi