- Implemented a Python script using Paramiko to connect to an SFTP server. - Added functionality to list files in the current directory and check for the existence of a '/backups' directory. - Included error handling for directory listing and creation. - Implemented a test upload feature to verify file upload capabilities. - Added cleanup for uploaded test files and ensured proper connection closure.
2.9 KiB
2.9 KiB
Sikker Test Plan for Backup Restore
✅ SAFETY CHECKLIST
Før test:
- Emergency backup oprettet:
/manual_backup_*/emergency_backup_before_restore_test.dump - DRY_RUN mode aktiveret:
BACKUP_RESTORE_DRY_RUN=true(default) - Test på ikke-kritisk data: Slet eller ændr noget test-data først
Test Fase 1: DRY-RUN (Sikker - ingen ændringer)
# 1. Kør restore i DRY-RUN mode (gør INGENTING - kun logger)
curl -X POST http://localhost:8001/api/v1/backups/restore/17 \
-H "Content-Type: application/json" \
-d '{"confirmation": true}'
# Forventet: "DRY RUN MODE: Would restore..." i logs
docker-compose logs api --tail 20 | grep "DRY RUN"
Test Fase 2: Recovery Test (Valgfri)
# 2. Lav en lille test-ændring i databasen
docker-compose exec postgres psql -U bmc_hub -d bmc_hub -c \
"INSERT INTO backup_jobs (job_type, status, backup_format, started_at)
VALUES ('database', 'completed', 'dump', NOW());"
# 3. Tjek at test-data findes
docker-compose exec postgres psql -U bmc_hub -d bmc_hub -c \
"SELECT COUNT(*) FROM backup_jobs;"
# 4. Restore fra backup (DISABLED indtil du er klar)
# echo "BACKUP_RESTORE_DRY_RUN=false" >> .env
# docker-compose restart api
# curl -X POST http://localhost:8001/api/v1/backups/restore/16 -H "Content-Type: application/json" -d '{"confirmation": true}'
# 5. Verificer at test-data er væk (restore virkede)
docker-compose exec postgres psql -U bmc_hub -d bmc_hub -c \
"SELECT COUNT(*) FROM backup_jobs;"
Emergency Recovery (hvis noget går galt)
# Restore fra emergency backup
docker-compose exec postgres dropdb -U bmc_hub --if-exists bmc_hub
docker-compose exec postgres createdb -U bmc_hub bmc_hub
docker-compose exec postgres pg_restore -U bmc_hub -d bmc_hub -Fc < \
manual_backup_*/emergency_backup_before_restore_test.dump
# Genstart API
docker-compose restart api
🛡️ SAFETY FEATURES I KODEN
- BACKUP_RESTORE_DRY_RUN=true (default) - blokerer alle restores
- BACKUP_READ_ONLY=true - blokerer restores hvis sat
- Checksum verification - verificerer fil integritet før restore
- File lock - forhindrer concurrent restores
- Maintenance mode - sætter system i maintenance under restore
⚠️ VIGTIG ADVARSEL
RESTORE OVERSKRIVER AL DATA I DATABASEN!
Før du deaktiverer DRY-RUN mode:
- Tag ALTID en emergency backup først (allerede gjort ✅)
- Test på en development/staging server først
- Sørg for at backup filen er den rigtige
- Kommuniker med brugere hvis på produktion
🚀 Når du er klar til rigtig restore:
-
Tilføj i
.env:BACKUP_RESTORE_DRY_RUN=false -
Genstart API:
docker-compose restart api -
Test restore via UI eller curl
Oprettet: 2. januar 2026 Emergency Backup: manual_backup_20260102_103605/emergency_backup_before_restore_test.dump (2.8MB)