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
- Tworzy archiwum
tar.gzz zawartości każdego wolumenu - Upload do
gdrive:combo-raport-backup/<nazwa_wolumenu>/ - Usuwa pliki na GDrive starsze niż 30 dni
- Pomija wolumin jeśli nie istnieje (np.
combo_data_87przed pierwszym uruchomieniem prod87) - Loguje każdy krok z timestampem
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
No comments to display
No comments to display