feat: 流式備份/恢復、遠端預掃優化、增量邏輯強化
新功能 - 流式備份/恢復: remote_stream=1 支援 SMB+WebDAV 邊壓邊傳不佔本機空間 - 遠端預掃: 單次連線取全部列表 + 批量 json 下載 (120 往返→6 連線) - 主循環增量比對零網路開銷 (讀本地快取) - 最終計數核驗 verify_backup_manifest (三態顯示) - conf 重構: smb_url/webdav_url 按協議分組,切換 remote_type 免重輸 修復 - 流式 staging 以遠端 json 快取為種子,解決權限/SSAID 無變化仍重備 - 上傳 json 前合併遠端版本,防 version 等欄位被部分覆蓋丟失 - 版本比對讀本地同步副本,修復流式模式每輪誤報版本變化 - 清單偵測版本更新強制重備 apk,防 json 被失敗輪汙染後 apk 缺檔 - apk 版本相符仍核對遠端檔存在性,污染數據自動自愈 - 流式失敗不傳 json,確保下輪整體重備不殘留壞數據 - smbclient cd 失敗停留根目錄導致列表/大小統計污染 → 前綴過濾 - WebDAV href URL 編碼改通用 %XX awk 查表解碼 (中文/空格/+ 全解) - json 預掃改全量批量抓,不再靠列表交集 (修 smbclient 中文名轉碼毀名) - 殺舊進程改單次 ps 快照整樹殺 (修 busybox ps 無 PPID / 誤殺自身) - smbclient stdin 命令還原內嵌換行 (修中文多層路徑建目錄失敗) - 連線失敗轉本地備份時補顯本地分區統計 - ms_to_readable 對永不休眠值特判顯示 - 單 app 備份入口補遠端預掃流程 - .changed_apps 去重、TMPDIR 殘留全清、tab 縮排統一 優化 - 遠端預掃: 120 連線→6 連線,主循環零網路開銷 - 殺舊進程: ~15 秒→< 1 秒 (逐 /proc 遞迴→單次 ps 快照 awk) - 批量權限: JVM fork 3N→3
This commit is contained in:
@@ -23,7 +23,7 @@ Output_path=""
|
||||
#支持日期時間變量:%yyyymmdd %hhmmss %yyyymmddhhmmss %yyyy %mm %dd
|
||||
#例:_daily → Backup_zstd_0_daily
|
||||
#例:_%yyyymmdd → Backup_zstd_0_20260522
|
||||
Backup_suffix=\""$Backup_suffix"\"
|
||||
Backup_suffix=""
|
||||
|
||||
#自定義applist.txt位置 支持相對路徑(留空則默認當前路徑)
|
||||
list_location=""
|
||||
@@ -43,7 +43,7 @@ cdn=1
|
||||
mount_point="rannki|0000-1"
|
||||
|
||||
#使用者(如0 999等用戶,如存在多個用戶留空強制選擇,無多個用戶則默認用戶0不詢問)
|
||||
user=
|
||||
user=0
|
||||
|
||||
#備份模式
|
||||
#1包含數據+安裝包,0僅包安裝包
|
||||
@@ -65,20 +65,19 @@ backup_media=0
|
||||
Background_apps_ignore=0
|
||||
|
||||
#添加自定義備份路徑 例:Download DCIM等文件夾 請使用絕對路徑,請勿刪除""
|
||||
Custom_path="
|
||||
/storage/emulated/0/Pictures/
|
||||
/storage/emulated/0/Download/
|
||||
/storage/emulated/0/Music
|
||||
/storage/emulated/0/DCIM/
|
||||
/data/adb
|
||||
"
|
||||
Custom_path=""
|
||||
|
||||
#黑名單模式(1完全忽略,不備份 0僅備份安裝包,注意!此選項Backup_Mode=1時黑名單模式才能使用)
|
||||
blacklist_mode=0
|
||||
|
||||
#備份黑名單(備份策略由「黑名單模式」控制,此處只作為黑名單應用列表)
|
||||
blacklist="
|
||||
#com.esunbank
|
||||
com.facebook.orca
|
||||
com.facebook.katana
|
||||
com.instagram.barcelona
|
||||
com.instagram.android
|
||||
com.esunbank.ESUNWALLET
|
||||
com.esunbank
|
||||
#com.chailease.tw.app.android.ccfappcust"
|
||||
|
||||
#位於data的預裝應用白名單 例:相冊 錄音機 天氣 計算器等(默認屏蔽備份預裝應用,如需備份請添加預裝應用白名單)
|
||||
@@ -130,19 +129,33 @@ rgb_c=213
|
||||
|
||||
#遠程備份類型 (留空不啟用)
|
||||
#推薦 webdav (穩定)
|
||||
#smb 僅支援 SMB1/CIFS,Windows Server 需手動開啟
|
||||
#smb 支援 SMB2/SMB3 (本腳本拒絕 SMB1/CIFS, 會自動協商到伺服器支援的最高版本)
|
||||
remote_type=
|
||||
# 保存原始值, 供連線失敗後 (如中途開 WiFi) 重新檢測用
|
||||
_remote_type_orig=
|
||||
|
||||
#遠程地址
|
||||
#WebDAV例: http://192.168.1.100:8080/dav/
|
||||
#遠程地址 (兩種協議分開設定, 切換 remote_type 免重輸)
|
||||
#SMB例: smb://192.168.1.100/backup/
|
||||
remote_url=
|
||||
smb_url=
|
||||
#認證用戶名
|
||||
smb_remote_user=
|
||||
#認證密碼
|
||||
smb_remote_pass=""
|
||||
#WebDAV例: http://192.168.1.100:8080/dav/
|
||||
webdav_url=
|
||||
#認證用戶名
|
||||
webdav_remote_user=
|
||||
#認證密碼
|
||||
webdav_remote_pass=""
|
||||
|
||||
#遠程認證用戶名
|
||||
remote_user=
|
||||
#流式上傳 (邊壓邊傳, 不佔本機空間)
|
||||
#1 開啟流式: 數據直接壓縮→管道傳到遠端, 本機不留 tar (省空間, 全量上傳, 不做本機校驗/增量)
|
||||
#0 關閉(預設): 先壓到本機→校驗→再上傳 (保留本機檔案, 支援增量)
|
||||
#支援 smb / webdav 兩種 remote_type
|
||||
remote_stream=0
|
||||
|
||||
#遠程認證密碼
|
||||
remote_pass=
|
||||
#流式上傳除錯 (1=失敗時印出 smbclient/curl 的具體錯誤, 用於排查流式失敗原因)
|
||||
_stream_debug=1
|
||||
|
||||
#遠程備份完成後是否保留本地檔案
|
||||
#1保留本地檔案(上傳後不刪除) 0上傳成功後刪除本地檔案
|
||||
@@ -156,5 +169,5 @@ remote_upload_per_app=0
|
||||
|
||||
#log 目錄大小上限 (單位 MB), 達到上限會在啟動時自動清空 log/
|
||||
#留空或設 0 = 關閉自動清理
|
||||
log_max_size_mb=
|
||||
log_max_size_mb=1
|
||||
|
||||
|
||||
Binary file not shown.
1103
tools/tools.sh
1103
tools/tools.sh
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user