mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-06-06 21:24:10 +00:00
1.4 KiB
1.4 KiB
Task Record
Date: 2026-04-26 Related Module: web/service Change Type: Add
Background
Need a BackupService to handle database backup, restore, and retention operations. Supports both SQLite (via sqlite3 .dump) and MariaDB (via mysqldump). Backups are stored as tar.gz archives containing dump.sql and metadata.json.
Changes
- Created web/service/backup.go with BackupService struct
- BackupService.CreateBackup: dumps database and creates tar.gz archive
- BackupService.ListBackups: lists all backup files sorted by time
- BackupService.RestoreBackup: validates dbType match, creates safety backup, restores from dump
- BackupService.DeleteBackup: deletes a backup file
- BackupService.ApplyRetention: keeps max N newest backups, removes older ones
- BackupService.CreateSnapshot: scheduled backup with retention policy
- Internal helper functions: dumpMariaDB, dumpSQLite, restoreDB, createTarGz, extractTarGz
- checkNodeRole enforces master-node-only restriction
- Safety backup (pre-restore-*.tar.gz) created before any restore
Impact
- New file: web/service/backup.go
- No existing files modified
- No API, database, or config changes
Verification
- go build ./... PASS
- gofmt -l -w . PASS (no formatting changes needed)
Risks And Follow-Up
- External dependencies on mysqldump, mysql, and sqlite3 CLI tools must be present on the system
- Not yet wired to any API endpoint or cron scheduler; those will be added in subsequent tasks