Backup

Backup

Automatyczny backup danych produkcyjnych na Google Drive via rclone.


Co jest backupowane?

Wolumin Docker Zawartość Kontener
combo_data auth.json, email.json combo_prod (port 4173)
combo_data_87 auth.json, email.json combo_prod87 (port 87)

Kod źródłowy jest już chroniony przez git (GitHub). Backup dotyczy wyłącznie danych runtime — kont użytkowników i konfiguracji emaila.


Jednorazowy setup

1. Instalacja rclone

sudo apt install rclone
# lub najnowsza wersja:
curl https://rclone.org/install.sh | sudo bash

Weryfikacja:

rclone --version

2. Konfiguracja Google Drive

rclone config

Przejdź przez kreator:

n  → New remote
Name: gdrive
Storage: drive        (wpisz numer odpowiadający "Google Drive")
client_id:            (Enter — zostaw puste)
client_secret:        (Enter — zostaw puste)
scope: 1              (Full access)
root_folder_id:       (Enter — zostaw puste)
service_account_file: (Enter — zostaw puste)
Edit advanced config: n
Use auto config: y    → otworzy przeglądarkę, zaloguj się na konto Google
Configure as a Shared Drive: n
y  → potwierdzenie
q  → wyjście

Weryfikacja dostępu:

rclone lsd gdrive:

Powinny pojawić się foldery z Twojego Google Drive.

3. Test manualny

cd /home/ultrax/Projects/combo-project/combo-raport-app
./scripts/backup-gdrive.sh

Po wykonaniu sprawdź Google Drive — powinien pojawić się folder combo-raport-backup/.


Automatyczny backup — cron

Konfiguracja

Dodaj wpis do crontab:

crontab -e

Wklej linię (backup codziennie o 03:00):

0 3 * * * /home/ultrax/Projects/combo-project/combo-raport-app/scripts/backup-gdrive.sh >> /var/log/combo-backup.log 2>&1

Zapisz i wyjdź. Weryfikacja:

crontab -l

Sprawdzanie logów

# Ostatnie 50 linii logu
tail -50 /var/log/combo-backup.log

# Podgląd na żywo
tail -f /var/log/combo-backup.log

Skrypt backup-gdrive.sh — zachowanie

Uruchomienie manualne

# Backup oba wolumeny
./scripts/backup-gdrive.sh

# Backup tylko jednego wolumenu
./scripts/backup-gdrive.sh combo_data
./scripts/backup-gdrive.sh combo_data_87

Struktura na Google Drive

combo-raport-backup/
├── combo_data/
│   ├── combo_data_20260415_030001.tar.gz
│   ├── combo_data_20260416_030001.tar.gz
│   └── ...
└── combo_data_87/
    ├── combo_data_87_20260415_030001.tar.gz
    └── ...

Odtworzenie danych (disaster recovery)

W przypadku utraty środowiska:

# 1. Pobierz najnowszy backup z Google Drive
rclone copy gdrive:combo-raport-backup/combo_data/ ./restore-tmp/ --include "*.tar.gz"

# 2. Sprawdź pobrane pliki
ls -lh ./restore-tmp/

# 3. Odtwórz wolumin (zastępuje obecną zawartość!)
ARCHIVE=$(ls ./restore-tmp/*.tar.gz | sort | tail -1)
docker run --rm \
  -v combo_data:/data \
  -v "$(pwd)/restore-tmp:/backup:ro" \
  alpine \
  sh -c "cd /data && tar xzf /backup/$(basename ${ARCHIVE})"

# 4. Uruchom aplikację
docker compose --profile prod up -d

# 5. Usuń tymczasowy katalog
rm -rf ./restore-tmp/

Zmiana częstotliwości backupu

Przykładowe harmonogramy cron:

Harmonogram Wyrażenie cron
Codziennie o 03:00 0 3 * * *
Co 12 godzin 0 3,15 * * *
Co poniedziałek o 02:00 0 2 * * 1

Edycja:

crontab -e

Zmiana okresu przechowywania

W pliku scripts/backup-gdrive.sh zmień wartość KEEP_DAYS:

KEEP_DAYS=30   # domyślnie 30 dni

Revision #5
Created 2026-05-28 04:01:00 CEST by matzxp84
Updated 2026-05-28 04:34:05 CEST by matzxp84