Repository navigation
th 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 เป็นโมดูล WebUI แบบ root ประกอบด้วยสามชั้น: WebUI (สิ่งที่คุณเห็น), shell backend (สิ่งที่ทำงานจริง ในฐานะ root), และ ไบนารีที่มาพร้อมในตัว (ตัวจัดเก็บถาวรและตัวรับส่ง) ทุกอย่างทำงานเป็น root อยู่แล้ว จึงไม่มี prompt ขออนุญาต และไม่มีแอปคู่หูสำหรับฟีเจอร์หลัก
┌──────────────────────────────────────────────────────────┐
│ 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 ไม่ขัดจังหวะมัน UI จะเชื่อมต่อกลับเข้ามาใหม่โดยอ่านlogs/progress-<opid>.json -
Framework helper (~15%) สิทธิ์แบบละเอียด, AppOps, SSAID, StorageStats,
ไอคอน และ Wi-Fi ที่ต้องใช้สิทธิพิเศษ จำเป็นต้องใช้ Android framework
dexขนาดเล็กที่รันผ่านapp_process(ไม่มีแอปที่ติดตั้ง) จัดการสิ่งเหล่านี้ โดยมี shell fallback - ความพกพาได้ ใช้เฉพาะรูปแบบมาตรฐานเท่านั้น การสำรองข้อมูลเปิดบน PC ได้โดยไม่ต้องมีโมดูลนี้
-
State อยู่ใน
/data/adb/vdbackup/(config, jobs, destinations, ข้อมูลประจำตัว ที่เข้ารหัส, logs, staging) การสำรองข้อมูล ถูกเขียนลงที่เก็บข้อมูลที่ผู้ใช้มองเห็นและ เข้ารหัสด้วยข้อมูลประจำตัวที่/sdcard/VDBackup/(/data/media/<user>/VDBackup, ต่อผู้ใช้) ไม่ใช่ใน/data/adb(ซึ่งเข้ารหัสระดับอุปกรณ์และอ่านได้ก่อนปลดล็อกครั้งแรก)
การสำรองข้อมูลต้องกู้คืนได้ตลอดไป นี่เป็นกฎที่เข้มงวด ไม่ใช่แค่ความพยายามอย่างดีที่สุด
ขอบเขต การรับประกันครอบคลุมการสำรองข้อมูลที่เขียนโดย v1.01 เป็นต้นไป (การเผยแพร่อย่าง เป็นทางการครั้งแรก) และเฉพาะโดยเวอร์ชันที่เผยแพร่อย่างเป็นทางการเท่านั้น v1.00 เป็นบิลด์สำหรับ ทดสอบเท่านั้นและอยู่นอกขอบเขตอย่างชัดเจน; บิลด์ก่อนเผยแพร่และบิลด์สำหรับพัฒนาไม่อยู่ในการคุ้มครอง นับจากการเผยแพร่สู่สาธารณะครั้งแรกเป็นต้นไป คำมั่นด้านล่างนี้เป็นสิ่งสัมบูรณ์:
-
เฉพาะรูปแบบมาตรฐานเท่านั้น ทุกไฟล์เก็บถาวรคือ
tarธรรมดาที่บีบอัดด้วยzstd,gzipหรือlz4โดยอาจห่อด้วยageก็ได้ ไม่มีคอนเทนเนอร์เฉพาะเจ้าของ ดังนั้น การสำรองข้อมูลสามารถเปิดได้บน PC ใด ๆ ด้วยเครื่องมือทั่วไปแม้ไม่มีโมดูลนี้ (ดูetc/RECOVERY.md) เป็นรูปแบบที่เราทิ้งไม่ได้ -
เมทาดาทาแบบเพิ่มได้อย่างเดียว
manifest.jsonพกformat_versionไว้ สคีมา มีแต่จะโตขึ้น: ฟิลด์อาจถูก เพิ่ม ได้ แต่ไม่เคยถูกลบ เปลี่ยนชื่อ หรือเปลี่ยนวัตถุประสงค์ การกู้คืนอ่าน ทุกฟิลด์อย่างระมัดระวัง (ฟิลด์ทางเลือกที่หายไปจะย้อนไปใช้ค่า default) และติดตั้ง APK รวมถึงแตกไฟล์เก็บถาวรตามชื่อไฟล์และนามสกุลของมัน ไม่ใช่โดยการสมมติว่า manifest มีรูปร่างตายตัว - การกู้คืนแบบเข้ากันได้ไปข้างหน้า การกู้คืนไม่เคยปฏิเสธการสำรองข้อมูลเพราะมันเก่า และ VDBackup เวอร์ชันเก่าจะข้ามประเภทรายการที่มันไม่รู้จักอย่างเงียบ ๆ แทนที่จะล้มเหลว ดังนั้น VDBackup เวอร์ชันใหม่กว่าจึงกู้คืนการสำรองข้อมูลเก่าใด ๆ ได้ และไฟล์เก็บถาวรรูปแบบมาตรฐานก็ยังคง กู้คืนได้ด้วยมือไม่ว่าในกรณีใด ๆ
สรุป: อะไรก็ตามที่ VDBackup เคยเขียนไว้ VDBackup ทุกเวอร์ชันในอนาคต (และ PC ธรรมดา)
ยังคงกู้คืนได้ การเปลี่ยนรูปแบบในลักษณะที่ทำให้การสำรองข้อมูลก่อนหน้าใช้ไม่ได้ ไม่
อนุญาต ความสามารถใหม่ถูกเพิ่มไว้เบื้องหลัง format_version และฟิลด์ใหม่แบบเพิ่มเติม
สำหรับการออกแบบทางเทคนิคฉบับเต็ม (รูปแบบไฟล์เก็บถาวร, สคีมาเมทาดาทา, ไปป์ไลน์, คริปโต, destinations, importers) ผู้ดูแลเก็บบันทึกการออกแบบโดยละเอียดไว้ ไฟล์นี้เป็น ภาพรวมที่มุ่งให้ผู้ร่วมพัฒนา