Repository navigation
uk ARCHITECTURE
Languages: English · العربية · Čeština · Deutsch · Español · فارسی · Français · हिन्दी · Bahasa Indonesia · Italiano · 日本語 · 한국어 · Nederlands · Polski · Português · Русский · Svenska · ไทย · Türkçe · Українська · Tiếng Việt · 中文
VDBackup: це root WebUI-модуль. Він має три шари: WebUI (те, що ви бачите), shell-бекенд (те, що виконує роботу, з правами root) і вбудовані бінарники (архіватори й транспорти). Усе працює вже з правами root, тож немає запиту дозволу й немає застосунку-компаньйона для основних функцій.
┌──────────────────────────────────────────────────────────┐
│ WebUI (module/webroot, vanilla JS) │
│ index.html · scripts.js · i18n.js · styles.css │
│ lang/en.js + 21 languages · config.json (CSP, no net) │
└───────────────┬──────────────────────────────────────────┘
│ ksu.exec("sh scripts/helper.sh <verb> <b64json>")
▼
┌──────────────────────────────────────────────────────────┐
│ scripts/helper.sh (dispatcher, returns JSON) │
│ list-apps · config · dests · backup/restore/import ... │
│ long ops -> setsid nohup scripts/worker.sh (detached) │
└───────────────┬───────────────────────────────┬──────────┘
│ │ progress-<opid>.json (poll)
▼ ▼
┌────────────────────────────────────┐ ┌──────────────────────────┐
│ scripts/worker.sh (root, detached)│ │ framework helper (opt.) │
│ force-stop · tar|zstd|age │ │ app_process + dex │
│ pm install · chown/chcon │ │ perms/appops/ssaid/... │
│ transfer · notify │ │ (dex primary, shell fb) │
└───────────────┬────────────────────┘ └──────────────────────────┘
▼
┌──────────────────────────────────────────────────────────┐
│ bin/<abi>/ tar · zstd · lz4 · rclone · rsync · ssh · restic │
└──────────────────────────────────────────────────────────┘
▼
Destinations: local · SFTP/SCP · SMB · WebDAV · FTP · S3 · 70+ (rclone)
rsync · restic repos · Google Drive (opt-in companion)
-
Уже root. Процес модуля має права root, тож рушій: це звичайний shell. ~85%
роботи: це чистий shell (
tar/zstd/age/pm/am/chown/chcon/rclone/...). -
Відокремлене виконання. Резервне копіювання/відновлення працюють через
setsid nohup, як незалежний root-процес. Закриття WebUI не перериває їх; інтерфейс знову приєднується, читаючиlogs/progress-<opid>.json. -
Framework-помічник (~15%). Точні дозволи, AppOps, SSAID, StorageStats,
піктограми й привілейований Wi-Fi потребують фреймворку Android. Невеликий
dex, запущений черезapp_process(без встановленого застосунку), обробляє їх, із запасним варіантом на shell. - Портативність. Лише стандартні формати; резервні копії відкриваються на ПК без цього модуля.
-
Стан лежить у
/data/adb/vdbackup/(конфігурація, завдання, призначення, зашифровані облікові дані, журнали, проміжна зона). Резервні копії записуються у видиме користувачеві, зашифроване обліковими даними сховище за адресою/sdcard/VDBackup/(/data/media/<user>/VDBackup, на користувача), а не в/data/adb(яке зашифроване на рівні пристрою й читається до першого розблокування).
Резервна копія має залишатися відновлюваною назавжди. Це жорстке правило, а не найкраще зусилля.
Обсяг. Гарантія охоплює резервні копії, записані починаючи з v1.01 (перший офіційно опублікований реліз) і лише офіційно опублікованими, випущеними версіями. v1.00 був збіркою лише для тестування і явно поза обсягом; передрелізні та розробницькі збірки не охоплюються. Починаючи з першого публічного релізу, обіцянка нижче абсолютна:
-
Лише стандартні формати. Кожен архів: це звичайний
tar, стисненийzstd,gzipабоlz4, за бажанням загорнутий уage. Немає пропрієтарного контейнера, тож резервну копію можна відкрити на будь-якому ПК звичайними інструментами навіть без цього модуля (див.etc/RECOVERY.md). Формат, від якого ми не можемо відмовитися. -
Метадані лише з доповненням.
manifest.jsonнесеformat_version. Схема лише зростає: поля можна додавати, ніколи не видаляти, не перейменовувати й не перепризначувати. Відновлення читає кожне поле захисно (відсутні опційні поля повертаються до значення за замовчуванням) і встановлює APK та видобуває архіви за їхнім ім'ям файлу й розширенням, а не припускаючи фіксовану форму маніфесту. - Прямосумісне відновлення. Відновлення ніколи не відхиляє резервну копію за те, що вона стара, а старіший VDBackup тихо пропускає типи елементів, яких не знає, замість того щоб зазнати невдачі. Новіший VDBackup тому відновлює будь-яку старішу резервну копію, а архіви стандартного формату лишаються відновлюваними вручну в будь-якому разі.
Коротко: усе, що VDBackup коли-небудь записав, кожен майбутній VDBackup (і звичайний ПК)
усе ще може відновити. Змінювати формат так, щоб це зламало попередню резервну копію, не
дозволено; нові можливості додаються за format_version і новими полями з доповненням.
Повний технічний дизайн (формат архіву, схему метаданих, конвеєри, криптографію, призначення, імпортери) супровідники тримають у детальних нотатках з дизайну; цей файл: це оглядовий матеріал для учасників.
Ця документація створена за допомогою Claude (Anthropic) і підтримується VD171. Виправлення та покращення вітаються; див. CONTRIBUTING.md.