nordabiz/.claude/commands/backup.md
Maciej Pienczyn 110d971dca
Some checks are pending
NordaBiz Tests / Unit & Integration Tests (push) Waiting to run
NordaBiz Tests / E2E Tests (Playwright) (push) Blocked by required conditions
NordaBiz Tests / Smoke Tests (Production) (push) Blocked by required conditions
NordaBiz Tests / Send Failure Notification (push) Blocked by required conditions
feat: migrate prod docs to OVH VPS + UTC→Warsaw timezone in all templates
Production moved from on-prem VM 249 (10.22.68.249) to OVH VPS
(57.128.200.27, inpi-vps-waw01). Updated ALL documentation, slash
commands, memory files, architecture docs, and deploy procedures.

Added |local_time Jinja filter (UTC→Europe/Warsaw) and converted
155 .strftime() calls across 71 templates so timestamps display
in Polish timezone regardless of server timezone.

Also includes: created_by_id tracking, abort import fix, ICS
calendar fix for missing end times, Pros Poland data cleanup.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 13:41:53 +02:00

5.0 KiB

NordaBiz Backup Operations

Wykonaj backup bazy danych i konfiguracji projektu NordaBiz.

Argument: $ARGUMENTS

Opcjonalny argument określa typ backupu:

  • /backup - pełny backup (DB + pliki)
  • /backup db - tylko baza danych
  • /backup snapshot - snapshot VM w Proxmox
  • /backup restore - przywracanie (interaktywne)
  • /backup status - sprawdź status automatycznych backupów

System automatycznych backupów

Harmonogram (cron na OVH VPS inpi-vps-waw01)

Typ Częstotliwość Godzina Retencja Lokalizacja
Hourly Co godzinę :00 24h /var/backups/nordabiz/hourly/
Daily Codziennie 02:00 30 dni /var/backups/nordabiz/daily/
Offsite Codziennie 04:00 30 dni PBS (10.22.68.127)
Config Tygodniowo Niedziela 03:00 4 tyg /var/backups/nordabiz/config/

Sprawdzenie statusu backupów

# Ostatnie backupy hourly
ssh maciejpi@57.128.200.27 "ls -lt /var/backups/nordabiz/hourly/ | head -5"

# Ostatnie backupy daily
ssh maciejpi@57.128.200.27 "ls -lt /var/backups/nordabiz/daily/ | head -5"

# Sprawdź offsite (PBS)
ssh maciejpi@10.22.68.127 "ls -lt /backup/nordabiz/daily/ | head -5"

# Rozmiar backupów
ssh maciejpi@57.128.200.27 "du -sh /var/backups/nordabiz/*"

Kroki do wykonania:

1. Backup lokalnej bazy PostgreSQL (DEV via Docker)

mkdir -p backups
docker exec nordabiz-postgres pg_dump -U nordabiz_app nordabiz > "backups/dev_$(date +%Y%m%d_%H%M%S).sql"

2. Backup produkcyjnej bazy PostgreSQL

Eksport do lokalnego:

ssh maciejpi@57.128.200.27 "sudo -u postgres pg_dump nordabiz" > "backups/prod_$(date +%Y%m%d_%H%M%S).sql"

Lub backup na serwerze:

ssh maciejpi@57.128.200.27 "sudo -u postgres pg_dump -Fc nordabiz > /tmp/backup_$(date +%Y%m%d_%H%M%S).dump"

3. Backup plików konfiguracyjnych

mkdir -p backups/config_$(date +%Y%m%d)
cp .env backups/config_$(date +%Y%m%d)/dev.env
ssh maciejpi@57.128.200.27 "cat /var/www/nordabiznes/.env" > backups/config_$(date +%Y%m%d)/prod.env
ssh maciejpi@57.128.200.27 "cat /etc/nginx/sites-available/nordabiznes" > backups/config_$(date +%Y%m%d)/nginx.conf

4. Snapshot VM w Proxmox

Użyj skill proxmox-manager:

Utwórz snapshot VM OVH VPS inpi-vps-waw01 (OVH VPS) z opisem "Backup przed [operacja]"

Lub ręcznie:

ssh root@10.22.68.10 "qm snapshot 249 backup_$(date +%Y%m%d) --description 'Automatyczny backup'"

5. Lista istniejących backupów

Lokalne:

ls -la backups/*.sql 2>/dev/null

Snapshoty VM (użyj skill proxmox-manager):

Pokaż snapshoty OVH VPS

6. Przywracanie z backupu

Szybkie przywracanie (skrypt DR)

ssh maciejpi@57.128.200.27 "sudo /var/www/nordabiznes/scripts/dr-restore.sh /var/backups/nordabiz/hourly/nordabiz_YYYYMMDD_HH.dump"

DEV (Docker PostgreSQL):

docker exec -i nordabiz-postgres psql -U nordabiz_app -d nordabiz < backups/dev_YYYYMMDD_HHMMSS.sql

PROD (PostgreSQL):

cat backups/prod_YYYYMMDD_HHMMSS.sql | ssh maciejpi@57.128.200.27 "sudo -u postgres psql nordabiz"

Rollback VM:

Użyj skill proxmox-manager:

Przywróć OVH VPS ze snapshotu backup_YYYYMMDD

Konfiguracja cron (na serwerze PROD)

Plik: /etc/cron.d/nordabiz-backup

# Backup co godzinę (retencja 24h)
0 * * * * postgres pg_dump -Fc nordabiz > /var/backups/nordabiz/hourly/nordabiz_$(date +\%Y\%m\%d_\%H).dump 2>> /var/log/nordabiznes/backup.log

# Backup dzienny o 2:00 (retencja 30 dni)
0 2 * * * postgres pg_dump -Fc nordabiz > /var/backups/nordabiz/daily/nordabiz_$(date +\%Y\%m\%d).dump 2>> /var/log/nordabiznes/backup.log

# Cleanup starych hourly (24h)
0 3 * * * root find /var/backups/nordabiz/hourly -name "*.dump" -mtime +1 -delete

# Cleanup starych daily (30 dni)
0 3 * * * root find /var/backups/nordabiz/daily -name "*.dump" -mtime +30 -delete

Plik: /etc/cron.d/nordabiz-offsite

# Sync daily backups do PBS o 4:00
0 4 * * * root rsync -avz --delete /var/backups/nordabiz/daily/ maciejpi@10.22.68.127:/backup/nordabiz/daily/ 2>> /var/log/nordabiznes/backup.log

# Sync config do PBS o 4:30
30 4 * * * root rsync -avz /var/backups/nordabiz/config/ maciejpi@10.22.68.127:/backup/nordabiz/config/ 2>> /var/log/nordabiznes/backup.log

Disaster Recovery

Pełna dokumentacja: docs/DR-PLAYBOOK.md

Metryki SLA

  • RTO: 30-60 min
  • RPO: 1 godzina

Skrypt restore

sudo /var/www/nordabiznes/scripts/dr-restore.sh /path/to/backup.dump

Przechowywanie:

  • Lokalne DEV: ./backups/ (dodane do .gitignore)
  • Lokalne PROD: /var/backups/nordabiz/
  • Offsite: PBS (10.22.68.127:/backup/nordabiz/)
  • Proxmox: snapshoty VM

Uwagi:

  • ZAWSZE rób backup przed większymi zmianami
  • Testuj przywracanie okresowo (co kwartał)
  • Snapshoty VM są najszybsze do rollbacku
  • PostgreSQL dump jest przenośny między środowiskami
  • DEV używa Docker PostgreSQL na localhost:5433
  • PROD używa PostgreSQL na 57.128.200.27:5432

Data aktualizacji: 2026-02-02