This commit is contained in:
YAWAsau
2021-11-01 22:53:46 +08:00
parent 6e785549d6
commit 44f22a8e59
9 changed files with 135 additions and 70 deletions

View File

@@ -16,7 +16,7 @@ Splist=0
Backup_user_data=1
#是否備份外部數據 即比如原神的數據包(1備份0不備份)
Backup_obb_data=1
Backup_obb_data=0
#是否在應用數據備份好後備份自定義目錄
backup_media=0

Binary file not shown.

View File

@@ -112,6 +112,8 @@ echoRgb() {
echo -e "\e[38;5;82m -$1\e[0m"
elif [[ $2 = 2 ]]; then
echo -e "\e[38;5;87m -$1\e[0m"
elif [[ $2 = 3 ]]; then
echo -e "\e[38;5;${en}m -$1\e[0m"
else
echo -e "\e[38;5;${bn}m -$1\e[0m"
fi

View File

@@ -0,0 +1,2 @@
#恢復模式 1恢復Apk+數據 0恢復apk不恢復數據
Recovery_mode=1

View File

@@ -2,7 +2,11 @@
MODDIR="${0%/*}"
bin_path="$MODDIR/tools/bin"
[[ ! -d $bin_path ]] && echo "$bin_path目錄遺失" && exit 1
[[ ! -f $MODDIR/recover.conf ]] && echo "recover.conf遺失" && exit 1
. "$bin_path/bin.sh"
. "$MODDIR/recover.conf"
isBoolean "$Recovery_mode" && Recovery_mode="$nsx"
[[ $Recovery_mode = false ]] && echoRgb "當前恢復模式:安裝apk不恢復數據" "0" || echoRgb "當前恢復模式:安裝apk+恢復數據" "1"
path="/data/media/0/Android"
path2="/data/data"
[[ ! -d $TMPDIR ]] && mkdir "$TMPDIR"
@@ -91,10 +95,10 @@ starttime1="$(date -u "+%s")"
TIME="$starttime1"
#記錄error次數起點
ERROR=1
en=118
{
while [[ $i -le $r ]]; do
#let bn++
#[[ $bn -ge 37 ]] && bn=31
[[ $en -ge 229 ]] && en=118
echoRgb "恢複第$i個應用 總共$r個 剩下$((r-i))個應用"
name1="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $1}')"
name2="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $2}')"
@@ -147,16 +151,18 @@ while [[ $i -le $r ]]; do
else
echoRgb "存在當前系統中略過安裝Apk"
fi
if [[ $(pm path "$name2") != "" ]]; then
#停止應用
[[ $name2 != $Open_apps ]] && am force-stop "$name2"
find "$Backup_folder" -maxdepth 1 ! -name "apk.*" -name "*.tar*" -type f | sort | while read; do
Release_data "$REPLY"
done
else
echoRgb "$name1沒有安裝無法恢復數據" "0"
if [[ $Recovery_mode = true ]]; then
if [[ $(pm path "$name2") != "" ]]; then
#停止應用
[[ $name2 != $Open_apps ]] && am force-stop "$name2"
find "$Backup_folder" -maxdepth 1 ! -name "apk.*" -name "*.tar*" -type f | sort | while read; do
Release_data "$REPLY"
done
else
echoRgb "$name1沒有安裝無法恢復數據" "0"
fi
fi
endtime 2 "恢複" && echoRgb "完成$((i*100/r))%" && echoRgb
endtime 2 "恢複" && echoRgb "完成$((i*100/r))%" && echoRgb "____________________________________" "3"
else
echoRgb "$Backup_folder資料夾遺失無法恢複" "0"
fi
@@ -179,7 +185,7 @@ while [[ $i -le $r ]]; do
fi
fi
[[ $ERROR -ge 5 ]] && (echoRgb "錯誤次數達到上限 環境已重設\n -請重新執行腳本" "0" && rm -rf "$filepath" && exit)
let i++
let i++ en++
done
starttime1="$TIME"
echoRgb "批量恢複完成" && endtime 1 "批量恢複開始到結束" && echoRgb "應用閃退請重新開機" "0"

View File

@@ -2,7 +2,11 @@
MODDIR="${0%/*}"
bin_path="${MODDIR%/*}/tools/bin"
[[ ! -d $bin_path ]] && echo "$bin_path目錄遺失" && exit 1
[[ ! -f $MODDIR/recover.conf ]] && echo "recover.conf遺失" && exit 1
. "$MODDIR/recover.conf"
. "$bin_path/bin.sh"
isBoolean "$Recovery_mode" && Recovery_mode="$nsx"
[[ $Recovery_mode = false ]] && echoRgb "當前恢復模式:安裝apk不恢復數據" "0" || echoRgb "當前恢復模式:安裝apk+恢復數據" "1"
path="/data/media/0/Android"
path2="/data/data"
[[ ! -d $TMPDIR ]] && mkdir "$TMPDIR"
@@ -71,63 +75,65 @@ if [[ $(pm path "$name") = "" ]]; then
else
echoRgb "存在當前系統中略過安裝Apk"
fi
if [[ $(pm path "$name") != "" ]]; then
#停止應用
[[ $name != $Open_apps ]] && am force-stop "$name"
find "$Backup_folder" -maxdepth 1 ! -name "apk.*" -name "*.tar*" -type f | sort | while read; do
tar_path="$REPLY"
X="$path2/$name"
FILE_NAME="${tar_path##*/}"
FILE_NAME2="${FILE_NAME%%.*}"
echoRgb "恢復$FILE_NAME2數據" "2"
if [[ $FILE_NAME2 = user ]]; then
if [[ -d $X ]]; then
case ${FILE_NAME##*.} in
lz4) pv "$tar_path" | tar --recursive-unlink -I lz4 -xmpf - -C "$path2" ;;
zst) pv "$tar_path" | tar --recursive-unlink -I zstd -xmpf - -C "$path2" ;;
tar) pv "$tar_path" | tar --recursive-unlink -xmpf - -C "$path2" ;;
*) echoRgb "$FILE_NAME 壓縮包不支持解壓縮" "0" ; Set_back
esac
else
echoRgb "$X不存在 無法恢復$FILE_NAME2數據" "0" ; Set_back
fi
else
case ${FILE_NAME##*.} in
lz4) pv "$tar_path" | tar --recursive-unlink -I lz4 -xmPpf - ;;
zst) pv "$tar_path" | tar --recursive-unlink -I zstd -xmPpf - ;;
tar) pv "$tar_path" | tar --recursive-unlink -xmPpf - ;;
*) echoRgb "$FILE_NAME 壓縮包不支持解壓縮" "0" ; Set_back
esac
fi
echo_log "$FILE_NAME 解壓縮($FILE_NAME2)"
if [[ $result = 0 ]]; then
if [[ $Recovery_mode = true ]]; then
if [[ $(pm path "$name") != "" ]]; then
#停止應用
[[ $name != $Open_apps ]] && am force-stop "$name"
find "$Backup_folder" -maxdepth 1 ! -name "apk.*" -name "*.tar*" -type f | sort | while read; do
tar_path="$REPLY"
X="$path2/$name"
FILE_NAME="${tar_path##*/}"
FILE_NAME2="${FILE_NAME%%.*}"
echoRgb "恢復$FILE_NAME2數據" "2"
if [[ $FILE_NAME2 = user ]]; then
if [[ -d $X ]]; then
if [[ -f /config/sdcardfs/$name/appid ]]; then
G="$(cat "/config/sdcardfs/$name/appid")"
else
G="$(dumpsys package "$name" | awk '/userId=/{print $1}' | cut -f2 -d '=' | head -1)"
fi ; G="$(echo "$G" | grep -Eo '[0-9]+')"
if [[ $G != "" ]]; then
echoRgb "路徑:$X"
Path_details="$(stat -c "%A/%a %U/%G" "$X")"
chown -hR "$G:$G" "$X"
echo_log "設置用戶組:$(echo "$Path_details" | awk '{print $2}')"
restorecon -R "$X" >/dev/null 2>&1
echo_log "selinux上下文設置"
else
echoRgb "uid獲取失敗" "0"
fi
case ${FILE_NAME##*.} in
lz4) pv "$tar_path" | tar --recursive-unlink -I lz4 -xmpf - -C "$path2" ;;
zst) pv "$tar_path" | tar --recursive-unlink -I zstd -xmpf - -C "$path2" ;;
tar) pv "$tar_path" | tar --recursive-unlink -xmpf - -C "$path2" ;;
*) echoRgb "$FILE_NAME 壓縮包不支持解壓縮" "0" ; Set_back
esac
else
echoRgb "路徑$X不存在" "0"
echoRgb "$X不存在 無法恢復$FILE_NAME2數據" "0" ; Set_back
fi
elif [[ $FILE_NAME2 = data ]]; then
chown -R "1023:1078" "$path/data/$name"
else
case ${FILE_NAME##*.} in
lz4) pv "$tar_path" | tar --recursive-unlink -I lz4 -xmPpf - ;;
zst) pv "$tar_path" | tar --recursive-unlink -I zstd -xmPpf - ;;
tar) pv "$tar_path" | tar --recursive-unlink -xmPpf - ;;
*) echoRgb "$FILE_NAME 壓縮包不支持解壓縮" "0" ; Set_back
esac
fi
fi
done
else
echoRgb "$name2沒有安裝無法恢復數據" "0"
echo_log "$FILE_NAME 解壓縮($FILE_NAME2)"
if [[ $result = 0 ]]; then
if [[ $FILE_NAME2 = user ]]; then
if [[ -d $X ]]; then
if [[ -f /config/sdcardfs/$name/appid ]]; then
G="$(cat "/config/sdcardfs/$name/appid")"
else
G="$(dumpsys package "$name" | awk '/userId=/{print $1}' | cut -f2 -d '=' | head -1)"
fi ; G="$(echo "$G" | grep -Eo '[0-9]+')"
if [[ $G != "" ]]; then
echoRgb "路徑:$X"
Path_details="$(stat -c "%A/%a %U/%G" "$X")"
chown -hR "$G:$G" "$X"
echo_log "設置用戶組:$(echo "$Path_details" | awk '{print $2}')"
restorecon -R "$X" >/dev/null 2>&1
echo_log "selinux上下文設置"
else
echoRgb "uid獲取失敗" "0"
fi
else
echoRgb "路徑$X不存在" "0"
fi
elif [[ $FILE_NAME2 = data ]]; then
chown -R "1023:1078" "$path/data/$name"
fi
fi
done
else
echoRgb "$name2沒有安裝無法恢復數據" "0"
fi
fi
} &
wait

View File

@@ -0,0 +1,30 @@
#不需要恢復還原的應用請在開頭注釋# 比如#xxxxxxxx 酷安
1DM+ idm.internet.download.manager.plus /data/app/~~QklTSdQI36T815gQ2nlIGQ==/idm.internet.download.manager.plus-h2wEzjxEsuHP7_5UAkoJsA==
AIDA64 com.finalwire.aida64 /data/app/~~aeSfdlS6spLz--43Ilw10g==/com.finalwire.aida64-NZYjvk6JlmT_YOgIkauAvw==
APK編輯器 com.gmail.heagoo.apkeditor.pro /data/app/~~zKIUYzTyGnTq_Sr8GoMGSA==/com.gmail.heagoo.apkeditor.pro-Qgtgtloy1JJcsqrUPT3gjQ==
AccuBattery com.digibites.accubattery /data/app/~~BRsxwFECQ7F2r3SosZ565Q==/com.digibites.accubattery-tgziG4x2ajr_WUgFvNCXTw==
AndroBench com.andromeda.androbench2 /data/app/~~KEGSrfzhJqUGImOxX_t8Cg==/com.andromeda.androbench2-8OFxb_CvIJpQeOOmVIyf2g==
ApktoolM ru.maximoff.apktool /data/app/~~8Qc2W-eoC2hEcZJ8lpe0_Q==/ru.maximoff.apktool-TaSufbX-NUk_XfL33ipKdg==
AuroraStore com.aurora.store /data/app/~~QJyqy00qCjAoNVD81AIheQ==/com.aurora.store-a-cKIG0Om54mEXV96qHCRg==
Chrome com.android.chrome /data/app/~~7_cO2H93KBwhxfjyVCU11Q==/com.android.chrome-ndB94UCIxupWIk3uMFc06g==
Cleaner me.gm.cleaner /data/app/~~yd9fJA05v1z6OBTmUKCLxw==/me.gm.cleaner-UaHaAxEybAPZZ0s0U_FWzg==
DevCheck flar2.devcheck /data/app/~~O5U3ZY3ST6lj_em548tBgw==/flar2.devcheck-oedQjS_9dnjaZcu3_YuQtw==
EXKernelManager flar2.exkernelmanager /data/app/~~MUFH6t_3mgeHfSq_IM8RaQ==/flar2.exkernelmanager-P5tY0AconuDyWCBK7MvPkQ==
Facebook com.facebook.katana /data/app/~~wsC4SQCTsJzVn_eckQVqvg==/com.facebook.katana-LZydcGoXoSk71SplTLbxVw==
GSamBatteryMonitorPro com.gsamlabs.bbm.pro /data/app/~~0agvaH8fpB4aXgxnaMRCYw==/com.gsamlabs.bbm.pro--jOEcv9N324cvJp0kYgkYA==
Gboard com.google.android.inputmethod.latin /data/app/~~1pgBWJMQPv75Ltn8afzDfg==/com.google.android.inputmethod.latin-nFkxIhujetdDxWfxoz08tA==
Gmail com.google.android.gm /data/app/~~cxTL9t_oIK1F_mX3F-OpYA==/com.google.android.gm-JiLNoK0EGF96EEpUyH_Skg==
Google com.google.android.googlequicksearchbox /data/app/~~9r6F2U4JBix5MRuPhcmNbw==/com.google.android.googlequicksearchbox-2P_72XAaZ0evB6DxJpQVww==
Instagram com.instagram.android /data/app/~~BZhzSH2ghrjvCdTHP8-KmA==/com.instagram.android-BcInLzUYdiwlbO2Xmaj-Vw==
JBLPortable com.harman.ble.jbllink /data/app/~~XWN1xyF6MXxAWi9VXztCVQ==/com.harman.ble.jbllink-RwRStVmeqiTS54EtoA_ChA==
LINE jp.naver.line.android /data/app/~~UmPCanbWFixitjBOsa1viw==/jp.naver.line.android-Q2BTlls7Gy-RV6LU6U_WLQ==
LSPosed org.lsposed.manager /data/app/~~M6AeaHvd4nFQ2woSNbkTow==/org.lsposed.manager-gJ0virsXCDTd_2zU7lDQkg==
LibChecker com.absinthe.libchecker /data/app/~~GvmzdfoVqxjh5MBIfjdmVg==/com.absinthe.libchecker-t6LSBuWPg8IWObz5Aa4vUQ==
MT管理器 bin.mt.plus /data/app/~~J2iozDL97Frv1Iqf4Zh1RA==/bin.mt.plus-Doy4vYjhJnwjNGOYD0ZiLQ==
Magisk com.topjohnwu.magisk /data/app/~~YAQU1Qsahwu0v8K1w3ROnA==/com.topjohnwu.magisk-4lGqNC9PctV4BUC9Z-23eQ==
Messenger com.facebook.orca /data/app/~~js5IBml5aYMJhovUYt7DzQ==/com.facebook.orca-GSOaGu0lc-5yjCf7CLUSbA==
NekogramX nekox.messenger /data/app/~~sD6Ko1GIAgBXyMzcr1zUfg==/nekox.messenger-3SEkTuodUPA-N0YrD-qmSw==
NetMonster cz.mroczis.netmonster /data/app/~~rTzF-bi4QlcmzP_Ml4vJOQ==/cz.mroczis.netmonster-4V8_8CaZH87aRpz6unm31Q==
NewPipe org.schabi.newpipe /data/app/~~DUMs2VgIfJmo2YWYrotMog==/org.schabi.newpipe-X_DpF_PbZn9NcB2eF0qa_w==
Phonograph com.kabouzeid.gramophone /data/app/~~jy_1uChaF9d9DPknvJINFw==/com.kabouzeid.gramophone-1qx3U7uf530gft9vTdsfzQ==
Polarr photo.editor.polarr /data/app/~~e91UFarXQZQiZQNBzA6t9g==/photo.editor.polarr-hJ8r834rZ9qpEA6YnBSyAQ==

View File

@@ -85,6 +85,8 @@ fi
[[ $Hybrid_backup = true ]] && echoRgb "當前backup_settings.conf的\n -Hybrid_backup為1將不備份任何應用" "0"
[[ ! -d $Backup ]] && mkdir -p "$Backup"
[[ ! -f $Backup/應用列表.txt ]] && echo "#不需要恢復還原的應用請在開頭注釋# 比如#xxxxxxxx 酷安" >"$Backup/應用列表.txt"
[[ ! -f $Backup/本地一鍵更新腳本.sh ]] && cp -r "$MODDIR/本地一鍵更新腳本.sh" "$Backup"
[[ ! -f $Backup/recover.conf ]] && cp -r "$script_path/recover.conf" "$Backup"
[[ ! -d $Backup/tools ]] && cp -r "$tools_path" "$Backup" && rm -rf "$Backup/tools/bin/zip" "$Backup/tools/META-INF" "$Backup/tools/script"
[[ ! -f $Backup/還原備份.sh ]] && cp -r "$script_path/restore" "$Backup/還原備份.sh"
[[ ! -f $Backup/掃描資料夾名.sh ]] && cp -r "$script_path/Get_DirName" "$Backup/掃描資料夾名.sh"
@@ -132,6 +134,7 @@ Backup_apk() {
[[ $PackageName = "" ]] && echo "PackageName=\"$name2\"" >>"$app_details"
[[ $ChineseName = "" ]] && echo "ChineseName=\"$name1\"" >>"$app_details"
[[ ! -f $Backup_folder/還原備份.sh ]] && cp -r "$script_path/restore2" "$Backup_folder/還原備份.sh"
[[ ! -f $Backup_folder/recover.conf ]] && cp -r "$script_path/recover.conf" "$Backup_folder"
fi
if [[ $name2 = com.android.chrome ]]; then
#刪除所有舊apk ,保留一個最新apk進行備份
@@ -224,8 +227,10 @@ starttime1="$(date -u "+%s")"
TIME="$starttime1"
#記錄error次數起點
ERROR=1
en=118
{
while [[ $i -le $r ]]; do
[[ $en -ge 229 ]] && en=118
name1="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $1}')"
name2="$(cat "$txt" | grep -v "#" | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $2}')"
[[ $name2 = "" ]] && echoRgb "警告! 應用列表.txt應用包名獲取失敗可能修改有問題" "0" && exit 1
@@ -279,7 +284,7 @@ while [[ $i -le $r ]]; do
fi
endtime 2 "$name1備份"
echoRgb "完成$((i*100/r))% $hx$(df -h "$data" | awk 'END{print "剩餘:"$3"使用率:"$4}')"
echoRgb
echoRgb "____________________________________" "3"
recovery_backup
else
recovery_backup
@@ -308,7 +313,7 @@ while [[ $i -le $r ]]; do
fi
fi
[[ $ERROR -ge 5 ]] && echoRgb "錯誤次數達到上限 環境已重設\n -請重新執行腳本" "0" && rm -rf "$filepath" && exit 2
let i++
let i++ en++
done
echoRgb "你要備份跑路祝你卡米9008" "2"

View File

@@ -28,12 +28,26 @@ i=1
bn=118
rm -rf "$MODDIR/tmp"
starttime1="$(date -u "+%s")"
appinfo -d " " -o ands,pn -pn $system $launcher_app -3 2>/dev/null | sort | sed 's/\///g ; s/\://g ; s/(//g ; s/)//g ; s/\[//g ; s/\]//g ; s/\-//g' | egrep -v 'ice.message|oneplus|miui|xiaomi|oppo|flyme|meizu|com.android.soundrecorder' | while read; do
appinfo -sort-i -d " " -o ands,pn -pn $system $launcher_app -3 2>/dev/null | sed 's/\///g ; s/\://g ; s/(//g ; s/)//g ; s/\[//g ; s/\]//g ; s/\-//g' | grep -v 'ice.message' | while read; do
[[ $bn -ge 229 ]] && bn=118
app_1=($REPLY $REPLY)
if [[ $(cat "$nametxt" | grep -oE "${app_1[1]}$") = "" ]]; then
echo "$REPLY" >>"$nametxt" && xz=1 && [[ ! -e $MODDIR/tmp ]] && touch "$MODDIR/tmp"
echoRgb "$i.$REPLY"
case ${app_1[1]} in
oneplus|miui|xiaomi|oppo|flyme|meizu|com.android.soundrecorder|com.mfashiongallery.emag|com.mi.health)
echoRgb "$REPLY 可能是廠商自帶應用 比對中....." "0"
if [[ $(appinfo -sort-i -d " " -o ands,pn -xm | grep -w "$REPLY") = $REPLY ]]; then
echoRgb "為Xposed模塊 進行添加" "1"
echo "$REPLY" >>"$nametxt" && xz=1 && [[ ! -e $MODDIR/tmp ]] && touch "$MODDIR/tmp"
echoRgb "$i.$REPLY"
else
echoRgb "非Xposed模塊 忽略輸出" "0"
fi
;;
*)
echo "$REPLY" >>"$nametxt" && xz=1 && [[ ! -e $MODDIR/tmp ]] && touch "$MODDIR/tmp"
echoRgb "$i.$REPLY"
;;
esac
else
unset xz
fi