256 Commits

Author SHA1 Message Date
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
Yawasau
8509e3ec2b feat: 新增遠端備份系統 (WebDAV / SMB)
主要功能:
- 遠端上傳:備份完自動上傳到 NAS / 雲端,支援 WebDAV / SMB
- 遠端下載:從遠端拉回備份,可直接執行恢復
- 連線測試:三層測試 (TCP / 認證 / 路徑) 驗證設定
- 區網掃描:啟動時自動掃描區網 SMB 主機
- 單獨上傳:每個 app 子目錄生成 upload.sh,可獨立補傳

優化:
- WebDAV 並行下載 (curl -Z, 4 路同時)
- SMB 批次傳輸 (每目錄一次連線)
- 完整 UTF-8 中文路徑支援

修復:
- 強制 curl HTTP/1.1 避開 nginx PUT 404 問題
- WebDAV 預建初始目錄
- trap EXIT 不再誤觸發上傳
- 失敗檔案完整 log,不再中途中斷

詳見 CHANGELOG.md
2026-05-16 10:59:58 +08:00
RainySY
4cf1e61321 fix: FTP测试用 tools/curl(有FTP支持) 2026-05-14 21:50:18 +08:00
RainySY
43b8886642 fix: FTP改用busybox ftpput(系统curl无FTP支持) 2026-05-14 21:46:43 +08:00
RainySY
ed13786ef3 fix: FTP测试改用列目录+被动模式+超时30s 2026-05-14 21:42:36 +08:00
RainySY
6eb10531a4 fix: 测试入口也用 /system/bin/curl (root DNS可靠) 2026-05-14 21:40:36 +08:00
RainySY
c207998028 fix: FTP 加被动模式和超时延长 2026-05-14 21:37:17 +08:00
RainySY
27d8134ae9 fix: FTP 用退出码判断成功/失败,WebDAV用 stderr 隔离 2026-05-14 21:33:17 +08:00
Yawasau
22982ac1ce feat(remote): 批次上傳、連線預檢、精準範圍、測試入口
- SMB 改批次傳輸,單連線傳完同目錄所有檔
- SCP 改 tar pipeline,失敗自動退回逐檔
- 新增 remote_test 選單入口
- 新增 remote_keep_local 設定項
- 修復中文路徑、smb.conf 警告、無網路卡死等問題
2026-05-14 00:00:07 +08:00
RainySY
7113448bb5 fix: SMB改用smbclient, curl重试, noexec适配, 多项修复 2026-05-12 22:58:15 +08:00
RainySY
b2409700c5 feat: 遠程備份 WebDAV/FTP/SMB/SCP + 內置二進制 + 日誌修復 2026-05-12 21:00:10 +08:00
RainySY
6fb53d7f11 fix: 保留 appList.txt 上传 2026-05-12 15:49:28 +08:00
RainySY
c7920acd0c fix: 远端上传排除 tools/目录及脚本文件,仅上传备份数据 2026-05-12 15:47:12 +08:00
RainySY
384f039f43 fix: SMB改用curl smb://协议上传,合并为统一upload_remote函数 2026-05-12 15:44:34 +08:00
RainySY
7832fd6d8e fix: WebDAV URL编码特殊字符并自动创建远程目录(MKCOL) 2026-05-12 15:43:55 +08:00
RainySY
ad52ebd1a1 fix: 移除 curl stderr 静默,改用 test -x 检测,增加诊断日志 2026-05-12 15:43:55 +08:00
RainySY
6f287f42b8 fix: 改用 curl 替代 wget 进行 WebDAV 上传,自动检测 curl 路径 2026-05-12 15:43:55 +08:00
RainySY
9a1c30a583 fix: 在 update_backup_settings_conf 模板中加入远程配置,防止配置重建时丢失网络设置 2026-05-12 15:43:55 +08:00
YAWAsau
37047dcd8b Merge pull request #113 from sakuradairong/feature/remote-backup
feat: 支援透過 WebDAV 與 SMB 遠程備份
2026-05-12 08:23:10 +08:00
Yawasau
7d9c90cc8c bugfix 2026-05-10 11:40:28 +08:00
RainySY
0e524b407d feat: add remote backup functions 2026-05-09 14:36:06 +08:00
Hermes
304d4d5b57 fix: 替换here-string嵌套语法为标准管道,兼容Android mksh 2026-04-28 22:38:13 -04:00
Hermes
fcd72cc1a0 [optimized] 代码优化:清理死代码、修复竞态条件与空参数安全问题
- 删除 backup() 中的调试 echo 残留
- 删除被注释的死代码行
- 修复 backup_wifi rm -rf 空参数安全问题
- 重写 start.sh 逻辑,优化配置生成流程
- 重构 kill_Serve 使用 mkdir 原子锁替代 PID 文件
2026-04-28 22:22:23 -04:00
Yawasau
dfef750e5c bugfix 2026-04-23 20:00:55 +08:00
Yawasau
2fe35e5a35 bugfix 2026-03-31 08:08:28 +08:00
Yawasau
e64fa5d6b9 bugfix 2026-03-16 21:15:27 +08:00
Yawasau
32b023373f bugfix 2025-12-31 15:01:48 +08:00
Yawasau
656d85a19f bugfix 2025-11-09 17:32:10 +08:00
Yawasau
af803fbebf bugfix 2025-08-16 22:09:24 +08:00
Yawasau
1c6cbfb261 bugfix 2025-08-10 23:36:47 +08:00
Yawasau
cd6c1026a1 bugfix 2025-08-10 17:52:07 +08:00
Yawasau
51726db049 bugfix 2025-08-02 19:51:41 +08:00
Yawasau
b767cd8208 bugfix 2025-07-10 22:49:34 +08:00
Yawasau
f0996ea83f bugfix 2025-07-08 18:59:24 +08:00
Yawasau
4b875842a9 bugfix 2025-07-08 18:57:20 +08:00
Yawasau
bd9b779a5f bugfix 2025-07-07 15:39:57 +08:00
Yawasau
bf58f2f7b2 bugfix 2025-07-06 17:35:19 +08:00
Yawasau
6fb9d0314b bugfix 2025-05-01 20:19:36 +08:00
Yawasau
705f2b67e6 bugfix 2025-04-26 16:32:18 +08:00
Yawasau
c7dd741657 bugfix 2025-04-26 16:07:55 +08:00
Yawasau
c016118af6 bugfix 2025-04-26 00:23:48 +08:00
Yawasau
307db2ae1d bugfix 2025-04-24 15:28:28 +08:00
Yawasau
6248e2262e bugfix 2025-01-19 20:33:20 +08:00
Yawasau
979b828cd9 bugfix 2025-01-11 22:21:10 +08:00
Yawasau
a8c26d334c bugfix 2024-12-28 22:57:47 +08:00
Yawasau
e979cf54d2 bugfix 2024-12-08 18:16:57 +08:00
Yawasau
b5de2d1725 bugfix 2024-12-01 13:46:32 +08:00