5 Commits

Author SHA1 Message Date
YAWAsau
63037d9e5a Update README.md 2026-06-13 12:43:11 +08:00
Yawasau
05130a9898 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
2026-06-13 12:29:18 +08:00
Yawasau
debf83a88c perf: 備份提速近3倍, dex調用批量化, 修復數個bug
性能優化:
- 並行目錄大小預掃(8並發), 主迴圈查表免重複遍歷, 提速約3倍
- 零fork查表: 權限/版本/UID/安裝來源/後台狀態改載入動態變量純記憶體查詢
- _dir_size改寫全域變量返回, 消除子shell fork
- 內建glob取代ls檢查tar存在性
- 備份權限預掃批量(getRuntimePermissions 1次+awk分組生成JSON)
- 恢復權限批量設置, JVM啟動3N→3
- appops reset集中執行

新增功能:
- 恢復後權限驗證(讀回比對授予/拒絕, _perm_verify=0可關)
- dex調用計數器(_dex_debug=1)
- 批量權限進度提示

問題修復:
- 權限JSON以包名為鍵導致多權限互相覆蓋只存1個(改為權限名為鍵), 舊備份需重備
- 自定義資料夾含點名稱(service.d)恢復時被誤截斷, 改為只去.tar/.tar.zst後綴
- _dir_size處理非應用名稱的bad substitution, 加變量名防呆
- grep -qFx改精確awk比對
2026-06-07 16:27:12 +08:00
Yawasau
e31c31515c feat: 權限預掃/JSON驗證/遠端比對/互動統一及多項修復
功能新增:
- ask_yn helper 統一 Lo=0/1/2 互動邏輯
- prepare_permissions_map 備份前預掃 runtime permissions,取代逐 app fork dex
- 備份完成後自動驗證本次變動應用的 JSON 結構
- remote_list_backups 加入本地/遠端差異比對,支援直接補上傳/補下載
- show_conf/remote_conf_line 各功能執行前顯示對應 conf
- get_backup_dirname/per_app_upload_and_cleanup 邏輯抽成獨立函數

邏輯修復:
- Backup_Permissions/Backup_ssaid 移出 size 判斷,size 無變化時也偵測變更
- 權限變更列出具體項目 (permName: false→true)
- .changed_apps 去重從 grep -qFx 改為 awk /data/data/com.termux/files/usr/bin/push==n,避免特殊字元誤判
- 僅上傳變更應用訊息加 remote_type 守衛,未設遠端時不顯示
- 遠端斷線保存 _remote_type_orig,支援中途開 WiFi 後重連
- 遠端缺檔本地無變化時免重壓直接上傳
- Lo=2 恢復未安裝應用選項順序顛倒 bug
- Lo=2 更新腳本誤設 update 變數(應為 choose)bug
- Media 備份無內容不留空殼
- 全腳本去除 bc 依賴改用 awk

其他:
- 單獨備份模式只預掃該 app 權限
- 頂部加區塊索引,各分區加分隔標題
- 縮排統一為 Tab
- 掛載路徑顯示從 mount:[...] 改為 └─ 掛載於:
2026-06-02 00:42:04 +08:00
Yawasau
3dc8bbdb2b feat: 合併遠端增量備份相關功能 (基於 PR #123) 2026-05-29 08:40:20 +08:00
6 changed files with 5152 additions and 2015 deletions

176
README.md
View File

@@ -14,7 +14,7 @@
一款專為 Android 設計的完整應用數據備份/恢復 Shell 腳本,支援 SSAID、運行時權限、OBB 數據包、WiFi 設定等完整備份,讓你換機換系統後能無縫還原所有應用狀態。
新版增加**完整的遠端備份系統**,支援 WebDAV / SMB 上傳到 NAS / 雲端 / 區網電腦,並可從遠端下載備份回手機直接恢復。
新版增加**完整的遠端備份系統**,支援 WebDAV / SMB 上傳到 NAS / 雲端 / 區網電腦,並可從遠端下載備份回手機直接恢復。支援**流式備份模式**,邊壓縮邊傳輸,數據完全不佔用本機空間。
> 作者為台灣人,預設發布繁體版本。CN 系統環境下腳本將自動翻譯為簡體中文。
@@ -36,7 +36,8 @@
| 🗜️ 多種壓縮算法 | 支援 `tar`(僅打包)與 `zstd`(高壓縮率高速度) |
| ⚡ 高速壓縮 | zstd 壓縮速率快速,優於鈦備份、Swift Backup |
| 🔒 完整性校驗 | 內建 tools SHA-256 校驗與壓縮包完整性驗證 |
| 🔄 增量備份 | 比對上次備份大小,無變化則跳過,節省時間 |
| 🔄 增量備份 | 多維度比對(版本/大小/權限/SSAID),無變化則跳過 |
| ✅ 最終計數核驗 | 備份結束後逐檔核對存在性,三態顯示結果 |
| 🖥️ 後台執行 | 支援後台執行模式,可完全關閉終端,log 持續刷新 |
| 💡 偽裝亮屏 | 備份/恢復期間可偽裝亮屏,避免 IO 因息屏降速 |
| 🌐 自動更新 | 聯網偵測最新版本,支援 CDN 節點(適合中國大陸用戶) |
@@ -45,7 +46,8 @@
| ⬛ 黑名單模式 | 黑名單應用可選「完全忽略」或「僅備份安裝包」 |
| ⬜ 白名單支援 | 支援預裝應用白名單與系統應用白名單,可指定備份範圍 |
| 📱 進程偵測 | 可設定忽略正在運行中的應用,避免備份數據不一致 |
| ☁️ 遠程備份上傳 | 支援 WebDAV / SMB 兩種協議,備份完成自動上傳,智能範圍與失敗重試 |
| ☁️ 遠程備份上傳 | 支援 WebDAV / SMB 兩種協議,備份完成自動上傳,智能增量 |
| 🚀 流式備份 | 邊壓縮邊傳輸,數據不落本機,節省本地空間 |
| 📥 遠程下載恢復 | 可從遠端直接下載備份回手機,點 start.sh 即可恢復 |
| 🔍 區網掃描 | 自動掃描區網內所有 SMB 主機,免去手動找 IP |
| 🧪 連線測試 | 三層測試(TCP / 認證 / 路徑),設定不需備份就能驗證 |
@@ -67,7 +69,7 @@
| 單獨上傳當前備份 | 上傳現有本地備份到遠端,不重新跑備份流程 |
| 列出遠端備份 | 連線遠端、產生 `appList_network.txt` 讓你勾選要下載哪些 app |
| 從遠端下載備份 | 依清單下載備份到本地,可直接執行恢復 |
| 殺死運行中腳本 | 安全終止正在執行的備份腳本 |
| 殺死運行中腳本 | 安全終止正在執行的備份腳本(整棵進程樹) |
### 恢復模式
@@ -97,7 +99,6 @@ backup_script.zip
│ ├── curl # 遠程傳輸工具 (WebDAV)
│ ├── smbclient # SMB 遠程傳輸
│ ├── jq # JSON 處理
│ ├── bc # 數學計算
│ ├── find # 文件搜索
│ ├── keycheck # 音量鍵監聽
│ ├── cmd # 系統指令橋接
@@ -112,7 +113,7 @@ backup_script.zip
> ⚠️ **重要:** 無論備份或恢復,都必須確保 `tools/` 目錄完整存在,否則腳本將無法正常運作。
備份完成後,每個 app 子目錄會額外生成 `upload.sh`,可單獨上傳該 app 到遠端,不需要重新備份
備份完成後,每個 app 子目錄會額外生成 `backup.sh` / `recover.sh` / `upload.sh`,可單獨備份、恢復或上傳單一應用
---
@@ -124,11 +125,11 @@ backup_script.zip
| `background_execution` | 後台執行:`1` 可關閉終端 / `0` 需保持終端開啟 | `0` |
| `setDisplayPowerMode` | 備份期間偽裝亮屏防止 IO 降速 | `0` |
| `Shell_LANG` | 語言:`0` 繁體中文 / `1` 簡體中文(留空自動偵測) | 自動 |
| `Output_path` | 自定義備份輸出路徑,支援相對路徑(留空使用當前目錄) | 空 |
| `Output_path` | 自定義備份輸出路徑(留空使用當前目錄) | 空 |
| `list_location` | 自定義 appList.txt 位置(留空使用當前目錄) | 空 |
| `update` | 自動更新:`1` 開啟 / `0` 關閉 | `1` |
| `cdn` | 更新 CDN 節點:`0` 直連 / `1` ghfast.top / `2` workers.dev | `1` |
| `mount_point` | 屏蔽外部掛載點(OTG、虛擬 SD 等),多個用 `\|` 分隔 | `rannki\|0000-1` |
| `mount_point` | 屏蔽外部掛載點,多個用 `\|` 分隔 | `rannki\|0000-1` |
| `user` | 指定用戶 ID(留空自動選擇) | 空 |
| `Backup_Mode` | 備份模式:`1` 應用+數據 / `0` 僅安裝包 | `1` |
| `Backup_user_data` | 備份 user 數據:`1` 是 / `0` 否 | `1` |
@@ -143,10 +144,14 @@ backup_script.zip
| `Compression_method` | 壓縮算法:`zstd``tar` | `zstd` |
| `rgb_a` / `rgb_b` / `rgb_c` | 終端輸出主色/輔色1/輔色2(256 色代碼) | `220` / `51` / `213` |
| `remote_type` | 遠程備份協議:`webdav` / `smb`(留空不啟用) | 空 |
| `remote_url` | 遠程伺服器地址(見下方格式說明) | 空 |
| `remote_user` | 遠程認證用戶名 | 空 |
| `remote_pass` | 遠程認證密碼 | 空 |
| `smb_url` | SMB 伺服器地址 | 空 |
| `smb_remote_user` | SMB 認證用戶名 | 空 |
| `smb_remote_pass` | SMB 認證密碼 | 空 |
| `webdav_url` | WebDAV 伺服器地址 | 空 |
| `webdav_remote_user` | WebDAV 認證用戶名 | 空 |
| `webdav_remote_pass` | WebDAV 認證密碼 | 空 |
| `remote_keep_local` | 上傳成功後本地檔案:`1` 保留 / `0` 刪除 | `0` |
| `remote_stream` | 流式備份:`1` 開啟(邊壓邊傳,不佔本機) / `0` 關閉 | `0` |
---
@@ -158,7 +163,7 @@ backup_script.zip
**Step 1 — 生成應用列表**
解壓腳本後執行 `start.sh`,選擇「**生成應用列表**」。執行完畢後,當前目錄會生成 `appList.txt`,內含所有已安裝的第三方應用(預裝應用預設屏蔽,可於 `backup_settings.conf` 加入白名單)
解壓腳本後執行 `start.sh`,選擇「**生成應用列表**」。執行完畢後,當前目錄會生成 `appList.txt`
**Step 2 — 編輯應用列表**
@@ -172,7 +177,7 @@ backup_script.zip
**Step 4 — 執行備份**
執行 `start.sh`,選擇「**備份應用**」。備份完成後,當前目錄會生成 `Backup_<壓縮算法>_<用戶ID>/` 資料夾,將此資料夾完整保存至安全位置
執行 `start.sh`,選擇「**備份應用**」。備份完成後生成 `Backup_<壓縮算法>_<用戶ID>/` 資料夾。
---
@@ -190,76 +195,96 @@ backup_script.zip
若恢復結束後提示應用存在 SSAID,請**立刻重啟**後再開啟應用。若先開啟應用,Android 會生成新的 SSAID,導致應用白屏或需要重新登入。
> 💡 備份資料夾內每個應用子目錄都有獨立的 `backup.sh`、`recover.sh`、`upload.sh`,可單獨備份、恢復或上傳單一應用。
> 💡 備份資料夾內每個應用子目錄都有獨立的 `backup.sh`、`recover.sh`、`upload.sh`,可單獨操作單一應用。
---
## ☁️ 遠程備份
備份完成後自動將備份檔案上傳到遠端伺服器,支援 WebDAV 與 SMB:
### 設定方式
| 協議 | `remote_url` 格式 | 適用場景 |
|------|-------------------|---------|
| WebDAV | `http://192.168.1.100:8080/dav/backup/` | NAS / Nextcloud / 雲端 / rclone serve |
| SMB | `smb://192.168.1.100/share/` | Windows 共享 / Samba 伺服器 / NAS |
**設定方式:** 編輯 `backup_settings.conf`:
編輯 `backup_settings.conf`,SMB 與 WebDAV 地址分開設定,切換協議免重輸:
```conf
remote_type=smb
remote_url=smb://192.168.1.100/Backup
remote_user=用戶名
remote_pass=密碼
smb_url=smb://192.168.1.100/Backup
smb_remote_user=用戶名
smb_remote_pass=密碼
webdav_url=http://192.168.1.100:8080/dav/
webdav_remote_user=用戶名
webdav_remote_pass=密碼
remote_keep_local=0
remote_stream=0
```
**遠端目錄結構:**
| 協議 | 地址格式 | 適用場景 |
|------|----------|---------|
| SMB | `smb://192.168.1.100/share/` | Windows 共享 / Samba / NAS |
| WebDAV | `http://192.168.1.100:8080/dav/` | NAS / Nextcloud / rclone serve |
腳本會自動在 `remote_url` 後加 `Backup_<壓縮算法>_<用戶ID>/` 一層,結構與本地完全鏡像。例如 conf 設 `smb://NAS/Backup`,實際上傳到:
### 遠端目錄結構
腳本在 `remote_url` 下自動建立 `Backup_<壓縮算法>_<用戶ID>/`,與本地結構完全鏡像:
```
smb://NAS/Backup/
Backup_zstd_0/
8591遊戲交易/...
Animeko/...
1DM+/
LINE/
Keep記事/
wifi/wifi.json
tools/
start.sh
restore_settings.conf
appList.txt
MT管理器.apk
```
不同用戶(0、999)自動分開到 `Backup_zstd_0/``Backup_zstd_999/`,互不衝突。
不同用戶(0、999)自動分開到 `Backup_zstd_0/``Backup_zstd_999/`,互不衝突。
**特性:**
- **智能範圍上傳** — 只上傳本次備份的 app,不是整個資料夾
- **進度與速度** — 每個目錄完成印「完成 X% (12.5 MB/s)」與總耗時
- **失敗處理** — 累積失敗清單,完整成功才會刪本地,部分失敗則本地全保留
### 特性
- **智能增量** — 多維度比對(版本/大小/權限/SSAID),只上傳本次有變更的 app
- **遠端預掃** — 單次連線取全部列表 + 批量下載 json,主循環零網路開銷
- **流式備份** — `remote_stream=1` 邊壓縮邊傳輸,數據完全不佔本機空間
- **最終核驗** — 備份結束後逐檔核對存在性,缺失檔案列出清單
- **連線預檢** — 沒網路時 3 秒內判斷並停用上傳,不卡死腳本
- **HTTP code 顯示** — WebDAV 失敗時顯示具體狀態(401 / 403 / 404 / 423 等)
- **失敗保護** — 流式上傳失敗不更新遠端 json,確保下輪整體重備
---
### 流式備份模式
`remote_stream=1` 啟用流式備份,數據直接 `tar | zstd | 傳輸`,本機不產生任何備份檔案:
```conf
remote_type=smb
smb_url=smb://192.168.1.100/Backup
smb_remote_user=用戶名
smb_remote_pass=密碼
remote_stream=1
```
> ⚠️ 流式模式為全量上傳(無本機校驗),建議搭配穩定的區網環境使用。
---
### 從遠端下載備份
從 NAS / 雲端拉回備份,直接執行恢復:
**Step 1** — 主選單選「**列出遠端備份**」,產生 `appList_network.txt`
**Step 1 — 列出遠端備份**
**Step 2** — 打開 `appList_network.txt`,用 `#` 註解掉不要下載的 app
主選單選「**列出遠端備份**」。腳本會連線遠端,檢查必要檔案(`tools/``start.sh``restore_settings.conf`),產生 `appList_network.txt` 列出所有可下載的 app。
**Step 2 — 編輯下載清單**
打開 `appList_network.txt`,用 `#` 註解掉不要下載的 app。
**Step 3 — 下載**
主選單選「**從遠端下載備份**」。下載完成後會在當前目錄產生 `Backup_<壓縮算法>_<用戶ID>/`,可直接執行內附的 `start.sh` 恢復。
**Step 3** — 主選單選「**從遠端下載備份**」,下載完成後直接執行內附 `start.sh` 恢復
---
### 連線測試
設定完 `backup_settings.conf` 後,主選單選「**測試遠端連線**」可驗證設定:
設定完 `backup_settings.conf` 後,主選單選「**測試遠端連線**」:
```
—————— TCP 連線測試 ——————
@@ -270,28 +295,14 @@ SMB 認證通過, share 可存取
全部測試通過, 可以開始備份
```
每個失敗階段都有對應錯誤訊息(認證失敗 / share 不存在 / 路徑不存在等)。
---
### 上傳範圍
每次備份自動上傳:
- 本次備份的 app(智能比對 appList.txt)
- WiFi 配置(若有)
- 自定義資料夾 Media/(若有設 Custom_path)
- 固定 3 項:`tools/``start.sh``restore_settings.conf`(讓遠端能獨立恢復)
---
## 🔄 腳本更新方式
支援以下四種更新方式:
1. **ZIP 放置更新**:將下載的 `.zip` 不解壓,直接放到腳本任意目錄(`tools/` 除外),執行任何腳本自動更新
2. **聯網自動更新**:腳本執行時自動連線 GitHub API 檢查版本,發現新版本時提示下載(需設置 `update=1`)。
3. **Download 目錄**:將 `.zip` 放置於 `/storage/emulated/0/Download/`,腳本自動偵測並更新。
4. **QQ 群下載**:從 QQ 群下載的腳本不解壓,直接放置後執行即可自動更新。
1. **ZIP 放置更新**:將下載的 `.zip` 不解壓,直接放到腳本任意目錄(`tools/` 除外),執行任何腳本即自動更新
2. **聯網自動更新**:腳本執行時自動連線 GitHub API 檢查版本(需設置 `update=1`)
3. **Download 目錄**:將 `.zip` 放置於 `/storage/emulated/0/Download/`,腳本自動偵測並更新
4. **QQ 群下載**:從 QQ 群下載的腳本不解壓,直接放置後執行即可自動更新
> 🔒 腳本聯網**僅用於檢查更新**,無任何資料收集或非法操作。
@@ -314,22 +325,22 @@ SMB 認證通過, share 可存取
<details>
<summary><b>Q3:為什麼部分應用備份很久?</b></summary>
腳本會一同備份應用的 OBB 數據包,例如原神數據包超過 9GB,備份與恢復時間自然較長。可在 `backup_settings.conf` 設置 `Backup_obb_data=0` 跳過 OBB 備份。
腳本會一同備份應用的 OBB 數據包,例如原神數據包超過 9GB。可在 `backup_settings.conf` 設置 `Backup_obb_data=0` 跳過 OBB 備份。
</details>
<details>
<summary><b>Q4:腳本每次都是全量備份嗎?</b></summary>
否。腳本比對上次備份的檔案大小,若無差異則跳過該應用,節省時間與空間。
否。腳本多維度比對上次備份(版本號/數據大小/權限/SSAID),無差異則跳過,節省時間與空間。
</details>
<details>
<summary><b>Q5:為什麼腳本內包含 .dex 檔案?</b></summary>
`classes.dex` 用於實現 Shell 腳本難以達成的功能,包含:
`classes.dex` 用於實現 Shell 腳本難以達成的功能:
- SSAID 備份與恢復
- 運行時權限(Runtime Permission)與 ops 權限備份恢復
- 運行時權限(Runtime Permission)與 ops 權限批量備份恢復
- GitHub API 更新版本檢查與下載
- 應用名稱與包名查詢
- 繁體中文 ↔ 簡體中文自動翻譯
@@ -341,7 +352,7 @@ SMB 認證通過, share 可存取
<details>
<summary><b>Q6:息屏後備份速度變慢?</b></summary>
這是 Android 內核的 IO 節能機制導致的。建議在 `backup_settings.conf` 設置 `setDisplayPowerMode=1` 開啟偽裝亮屏,或備份期間保持螢幕常亮。
這是 Android 內核的 IO 節能機制。建議在 `backup_settings.conf` 設置 `setDisplayPowerMode=1` 開啟偽裝亮屏,或備份期間保持螢幕常亮。
</details>
<details>
@@ -350,23 +361,23 @@ SMB 認證通過, share 可存取
進入備份資料夾內對應的應用子目錄,直接執行:
- `backup.sh` — 單獨備份該 app
- `recover.sh` — 單獨恢復該 app
- `upload.sh` — 單獨上傳該 app 到遠端(新)
- `upload.sh` — 單獨上傳該 app 到遠端
</details>
<details>
<summary><b>Q8:WebDAV 上傳顯示 HTTP 423 Locked?</b></summary>
某些雲端網盤(例如 123 網盤)的 WebDAV 對大檔有單檔大小限制,失敗會把路徑標記為 locked。建議改用以下方案:
- 自家 NAS / Windows SMB(無限制)
- rclone serve webdav(無限制)
- 群暉 / Nextcloud(無限制)
某些雲端網盤的 WebDAV 對大檔有大小限制。建議改用:
- 自家 NAS / Windows SMB
- rclone serve webdav
- 群暉 / Nextcloud
</details>
<details>
<summary><b>Q9:WebDAV 上傳顯示 HTTP 404?</b></summary>
腳本已強制 curl 使用 HTTP/1.1(`--http1.1`),避開部分 openresty / nginx 對 HTTP/2 PUT 的相容問題。如果仍 404,請檢查:
- `remote_url` 路徑是否含正確的 webdav 端點(例如 `/dav/``/remote.php/webdav/`)
請檢查:
- `webdav_url` 路徑是否含正確的 webdav 端點(例如 `/dav/``/remote.php/webdav/`)
- 帳號是否有寫入權限
</details>
@@ -381,7 +392,18 @@ SMB 認證通過, share 可存取
<details>
<summary><b>Q11:沒網路會影響備份嗎?</b></summary>
不會。腳本啟動時做 TCP 預檢(3 秒內判斷),沒網路時自動停用遠端上傳但**完整保留本地備份**,流程繼續跑完。
不會。腳本啟動時做 TCP 預檢(3 秒內判斷),沒網路時自動停用遠端上傳但**完整保留本地備份**,流程繼續跑完。
</details>
<details>
<summary><b>Q12:流式備份和一般備份有什麼差別?</b></summary>
| | 一般備份 | 流式備份 |
|---|---|---|
| 本機空間佔用 | 先壓縮到本機再上傳 | 不佔用(直接傳輸) |
| 增量比對 | ✅ 支援 | ✅ 支援 |
| 本機完整性校驗 | ✅ 支援 | ❌ 不支援(信任傳輸) |
| 適合場景 | 本機空間充足 | 本機空間有限 |
</details>
---

View File

@@ -19,6 +19,12 @@ setDisplayPowerMode=0
#自定義備份文件輸出位置 支持相對路徑(留空則默認當前路徑)
Output_path=""
#自定義備份目錄後綴(留空則不添加後綴)
#支持日期時間變量:%yyyymmdd %hhmmss %yyyymmddhhmmss %yyyy %mm %dd
#例_daily → Backup_zstd_0_daily
#例_%yyyymmdd → Backup_zstd_0_20260522
Backup_suffix=""
#自定義applist.txt位置 支持相對路徑(留空則默認當前路徑)
list_location=""
@@ -37,7 +43,7 @@ cdn=1
mount_point="rannki|0000-1"
#使用者(如0 999等用戶如存在多個用戶留空強制選擇無多個用戶則默認用戶0不詢問)
user=
user=0
#備份模式
#1包含數據+安裝包0僅包安裝包
@@ -59,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的預裝應用白名單 例:相冊 錄音機 天氣 計算器等(默認屏蔽備份預裝應用,如需備份請添加預裝應用白名單)
@@ -124,21 +129,45 @@ rgb_c=213
#遠程備份類型 (留空不啟用)
#推薦 webdav (穩定)
#smb 支援 SMB1/CIFSWindows 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上傳成功後刪除本地檔案
remote_keep_local=0
#邊備份邊上傳 (每備份完一個應用立即上傳,然後刪除本機檔案再備份下一個,以節省本機空間)
#1 開啟 0 關閉
#開啟後:每個應用備份完成 → 立即上傳遠端 → 上傳成功後刪除本機檔案 → 繼續備份下一個
#關閉後:先備份所有應用 → 全部備份完再統一上傳
remote_upload_per_app=0
#log 目錄大小上限 (單位 MB), 達到上限會在啟動時自動清空 log/
#留空或設 0 = 關閉自動清理
log_max_size_mb=1

View File

@@ -158,7 +158,11 @@
"2512BPNDAI" "Xiaomi 17 Ultra 印度版"
"25128PNA1C" "Xiaomi 17 Ultra by Leica 國行版 (衛星通訊)"
"25128PNA1G" "Leica Leitzphone powered by Xiaomi 國際版"
"2605EPN8EC" "Xiaomi 17 Max"
"M531DA" "Xiaomi 17T 國行版"
"2602DPT53G" "Xiaomi 17T 國際版"
"2602DPT53I" "Xiaomi 17T 印度版"
"M025EC" "Xiaomi 17T Pro 國行版"
"2602EPTC0G" "Xiaomi 17T Pro 國際版"
"2602EPTC0R" "Xiaomi 17T Pro 日本版 (無鎖)"
"2014616" "小米 Note 雙網通版"
@@ -634,7 +638,8 @@
"24069RA21C" "Redmi Turbo 3"
"24129RT7CC" "REDMI Turbo 4"
"25053RT47C" "REDMI Turbo 4 Pro"
"2511FRT34C" "REDMI Turbo 5"
"2511FRT34C" "REDMI Turbo 5 國行版"
"2606FRT34I" "REDMI Turbo 5 印度版"
"2602BRT18C" "REDMI Turbo 5 Max"
"M1903F10A" "Redmi K20 全網通版"
"M1903F10C" "Redmi K20 運營商全網通版"
@@ -851,7 +856,7 @@
"2410FPCC5G" "POCO C75 國際版"
"2410FPCC5I" "POCO C75 印度版"
"24116PCC1I" "POCO C75 5G 印度版"
"25128PC17G" "POCO C81 Pro 國際版"
"25128PC17Y" "POCO C81 Pro 國際版"
"25128PC17L" "POCO C81 Pro 拉美版"
"25128PC17I" "POCO C81 印度版"
"26020PCB4I" "POCO C81x 印度版"
@@ -863,11 +868,12 @@
"24074PCD2I" "POCO Pad 5G 印度版"
"25099RP08G" "POCO Pad X1 國際版"
"2509ARPBDG" "POCO Pad M1 國際版"
"2603APC14G" "POCO Pad C1 國際版"
"FYJ01QP" "小米米家翻譯機"
"21051191C" "CyberDog 仿生四足機器人"
"2405AVPB7C" "小米澎湃智能座艙 (第一代 SU7/SU7 Ultra)"
"25033VP3FC" "小米澎湃智能座艙 (YU7/新一代 SU7)"
"2503CVPC6C" "Xiaomi YU7 後排移動控制屏"
"2503CVPC6C" "小米汽車後排移動控制屏"
"MI-ONE" "Mi 1 Lite"
"2109119BC" "Xiaomi Civi China"
"2109119BC" "Xiaomi Civi 1S China"
@@ -2899,6 +2905,7 @@
"RMX5171" "realme 16 5G"
"RMX5120" "realme 16 Pro 5G"
"RMX5131" "realme 16 Pro+ 5G"
"RMX5268" "realme 16T 5G"
"RMX1921" "realme XT Global"
"RMX1922" "realme XT India"
"RMX1992" "realme X2 India"
@@ -3128,6 +3135,8 @@
"V2465A" "vivo S30 Pro mini"
"V2528A" "vivo S50 / vivo S50t"
"V2527A" "vivo S50 Pro mini"
"V2571A" "vivo S60"
"V2572A" "vivo S60 元氣版"
"V1901A" "vivo Y3 全網通版"
"V1901T" "vivo Y3 移動全網通版"
"V1930A" "vivo Y3 標準版 全網通版"
@@ -3173,6 +3182,7 @@
"V2164A" "vivo Y55s 5G"
"V2559A" "vivo Y60 5G / vivo Y6t 5G"
"V2559BA" "vivo Y60m 5G"
"V2532BA" "vivo Y6m"
"V1731CA" "vivo Y71s"
"V2102A" "vivo Y71t 5G"
"V2164PA" "vivo Y73t 5G"
@@ -3209,6 +3219,7 @@
"V2516A" "vivo Y500 Pro"
"V2531A" "vivo Y500i / vivo Y500s / vivo Y6"
"V2561A" "vivo Y600 Pro"
"V2553A" "vivo Y600 Turbo"
"V2115A" "vivo T1"
"V2199GA" "vivo T2"
"V2188A" "vivo T2x"
@@ -3416,7 +3427,6 @@
"V2418" "vivo V40 Lite 5G Indonesia"
"V2337" "vivo V40 SE 5G"
"V2451" "vivo V50"
"V2504" "vivo V50 Pro"
"V2428" "vivo V50e"
"V2441" "vivo V50 Lite"
"V2453" "vivo V50 Lite 5G"
@@ -3427,6 +3437,7 @@
"V2540" "vivo V70"
"V2548" "vivo V70 Elite"
"V2558" "vivo V70 FE"
"V2637" "vivo V70 Lite 5G"
"vivo 1920_20" "vivo S1 Pro"
"V2168" "vivo T1"
"V2157" "vivo T1 5G"
@@ -3446,6 +3457,7 @@
"V2509" "vivo T4 Lite 5G"
"V2518" "vivo T4R 5G"
"V2510" "vivo T4 Pro"
"V2504" "vivo T4 Ultra"
"V2568" "vivo T5 Pro"
"V2545" "vivo T5x 5G"
"V2603" "vivo T5 Lite 5G"
@@ -3527,7 +3539,8 @@
"V2036_21" "vivo Y31"
"V2521" "vivo Y31 5G"
"V2534" "vivo Y31 Pro 5G"
"V2611" "vivo Y31d"
"V2636" "vivo Y31d"
"V2543" "vivo Y31d Pro"
"V2533" "vivo Y31e 5G"
"V2057" "vivo Y33"
"V2109-EG" "vivo Y33A"
@@ -3718,6 +3731,8 @@
"PLW110" "OPPO Reno15"
"PLV110" "OPPO Reno15 Pro"
"PMD110" "OPPO Reno15c"
"PMM110" "OPPO Reno16"
"PMK110" "OPPO Reno16 Pro"
"PCLM10" "OPPO Reno Ace"
"PDHM00" "OPPO Ace2"
"PACM00" "OPPO R15 全網通版"
@@ -3802,7 +3817,7 @@
"PLT120" "OPPO A6s / OPPO A6i+ / OPPO A6k"
"PMT110" "OPPO A6s Pro"
"PLT130" "OPPO A6v"
"PLT140" "OPPO A6x"
"PLT140" "OPPO A6x / OPPO A6m"
"PMC110" "OPPO A6c"
"PBCM30" "OPPO K1"
"PCGM00" "OPPO K3 全網通版"
@@ -3839,6 +3854,7 @@
"OPD2501" "OPPO Pad Air5"
"OPD2511" "OPPO Pad 5 Pro"
"OPD2515" "OPPO Pad Mini"
"OPD2601" "OPPO Pad 6"
"OB19O1" "OPPO Band 運動版"
"OB19O3" "OPPO Band 運動版 (國際版)"
"OB19O7" "OPPO Band 活力版"

BIN
tools/bc

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff