Skip to content

Backup Cover

OTOBO / Znuny Backup & Restore – Obszerny Przewodnik

W tym przewodniku zagłębimy się w strategie tworzenia kopii zapasowych dla OTOBO i omówimy:

  1. Zrzut bazy danych za pomocą mysqldump
  2. Tworzenie kopii zapasowych i przywracanie wolumenów Docker
  3. Własne skrypty OTOBO backup.pl i restore.pl
  4. Automatyzacja za pomocą zadań Cron i obsługi błędów
  5. Archiwizacja długoterminowa (np. AWS S3)

1. Zrzut bazy danych z mysqldump

Zaleta: Szybki, niezależny od platformy, zawiera prawie wszystkie zgłoszenia, użytkowników i ustawienia.

Przykład polecenia

bash
mysqldump \
  --host=${DB_HOST} \
  --user=${DB_USER} \
  --password=${DB_PASS} \
  --column-statistics=0 \
  --single-transaction \
  --databases otobo \
  > /backup/otobo_db_$(date +'%Y%m%d_%H%M').sql
  • --single-transaction: Minimalizuje blokady tabel, OTOBO pozostaje dostępny.
  • Przechowywanie: np. co godzinę, ostatnie 72 zrzuty (3 dni) przez Cron.

Zadanie Cron (co godzinę, retencja 3 dni)

cron
0 * * * * /usr/local/bin/otobo_db_backup.sh

otobo_db_backup.sh tworzy zrzut i usuwa pliki starsze niż 3 dni.

Przykład skryptu: otobo_db_backup.sh

bash
#!/bin/bash
BACKUP_DIR="/backup/db"
mkdir -p "$BACKUP_DIR"
DATE=$(date +'%Y%m%d_%H%M')
FILE="$BACKUP_DIR/otobo_db_${DATE}.sql.gz"

echo "Tworzenie zrzutu bazy danych do $FILE"
mysqldump --host=localhost --user=otobo \
  --password=SecretPass --column-statistics=0 \
  --single-transaction otobo | gzip > "$FILE"

# Usuwanie starych zrzutów (starszych niż 3 dni)
find "$BACKUP_DIR" -type f -name '*.sql.gz' -mtime +3 -delete

2. Backup wolumenów Docker

Wszystkie trwale zapisane pliki (załączniki, konfiguracja, logi) znajdują się w wolumenach Docker.

2.1 Pełny backup wolumenów

bash
#!/bin/bash
date=
DATE=$(date +'%d%m%Y_%H%M%S')
# Zatrzymanie kontenera dla spójnego systemu plików
docker compose -f /opt/otobo-docker/compose.yml down

tar -czf "/tmp/docker_volumes_$DATE.tar.gz" /var/lib/docker/volumes

docker compose -f /opt/otobo-docker/compose.yml up -d --build
  • Down/Up: Gwarantuje czystą kopię.
  • Archiwum: TAR skompresowany GZ w tymczasowym katalogu hosta.

2.2 Przywracanie: Wolumeny i Kontenery

bash
#!/bin/bash
# Użycie: restore_volumes.sh backup_file.tar.gz
tar -xzf "$1" -C /
# Usuwanie starych wolumenów
docker compose -f /opt/otobo-docker/compose.yml down
rm -rf /var/lib/docker/volumes
# Przywracanie i ponowne uruchamianie
tar -xzf "$1" -C /
docker compose -f /opt/otobo-docker/compose.yml up -d

3. Skrypty OTOBO: backup.pl & restore.pl

OTOBO dostarcza własne skrypty CLI w kontenerze:

bash
# Wyświetlanie pomocy
/opt/otobo/scripts/backup.pl -h

Opcje

OpcjaDomyślnieOpis
-d, --backup-dirwymaganeKatalog docelowy dla kopii zapasowych
-c, --compressgzipMetoda kompresji (gzip | bzip2)
-r, --remove-old-backups DAYSbrakUsuwa starsze kopie zapasowe (w dniach)
-t, --backup-typefullbackupfullbackup (wszystko) | nofullbackup | dbonly

fullbackup: Baza danych + katalog domowy (bez cache).
dbonly: Tylko baza danych.

Przykład: Pełny backup w kontenerze Docker

bash
docker run --rm \
  --volume otobo_opt_otobo:/opt/otobo \
  --volume otobo_backup:/otobo_backup \
  rotheross/otobo:latest-10_0 scripts/backup.pl \
    --backup-dir /otobo_backup --compress gzip --remove-old-backups 7

Przywracanie w kontenerze

bash
docker run --rm \
  --volume otobo_opt_otobo:/opt/otobo \
  --volume otobo_backup:/otobo_backup \
  rotheross/otobo:latest-10_0 scripts/restore.pl \
    --backup-dir /otobo_backup/20231015_123045 --backup-dir /opt/otobo

4. Automatyzacja i Obsługa Błędów

Skrypt opakowujący z weryfikacją błędów

bash
#!/bin/bash
COMPOSE_FILE="/opt/otobo-docker/compose.yml"
# Rozpoczęcie tworzenia kopii zapasowej
docker compose -f "$COMPOSE_FILE" run --rm backup
if [ $? -ne 0 ]; then
  echo "Tworzenie kopii zapasowej nie powiodło się" >&2
  exit 1
fi
echo "Tworzenie kopii zapasowej zakończone sukcesem"

Dawniej: Cron do tworzenia kopii zapasowych wolumenów

cron
0 */6 * * * /usr/local/bin/volume_backup.sh

Czyszczenie starych kopii zapasowych

bash
#!/bin/bash
BACKUP_DIR="/ścieżka/do/kopii/zapasowych"
echo "Usuwanie kopii zapasowych starszych niż 30 dni w $BACKUP_DIR"
find "$BACKUP_DIR" -mindepth 1 -mtime +30 -exec rm -rf {} \\
  \;
echo "Zakończono."

5. Archiwizacja długoterminowa i Chmura

  • AWS S3: Przesyłanie plików .tar.gz i .sql.gz za pomocą aws cli lub skryptu Python.
  • rclone: Obsługa różnych celów (S3, Azure Blob, FTP).
  • Zaleta: Przechowywanie poza siedzibą firmy, nieograniczona skalowalność.

Różnice między OTOBO a Znuny (w kontekście backupu)

W obszarze tworzenia kopii zapasowych i przywracania, OTOBO i Znuny różnią się w następujących aspektach:

  • Kopie zapasowe kontenerów

    • OTOBO: Oficjalny obraz Docker dostarcza preinstalowaną usługę backupu z hakami CLI (docker compose run backup), w tym przygotowane montowania wolumenów i zmienne środowiskowe.
    • Znuny: Społecznościowe konfiguracje Docker wymagają ręcznego dodania kontenera backupu lub dostosowania własnych skryptów.
  • Skrypty CLI OTOBO

    • OTOBO: backup.pl i restore.pl w obrazie obsługują opcje automatycznego czyszczenia (--remove-old-backups), wybór kompresji i flagę single-transaction.
    • Znuny: Podobne skrypty są dostępne, często bez --remove-old-backups lub rozszerzonych opcji zrzutu bazy danych; konieczne jest dostosowanie.
  • Optymalizacje zrzutu bazy danych

    • OTOBO: Domyślna flaga --single-transaction jest zalecana i udokumentowana, aby unikać blokad; CLI zapewnia spójne użycie.
    • Znuny: Społecznościowa dokumentacja zazwyczaj odwołuje się do prostego zrzutu bez ochrony transakcyjnej, co stwarza ryzyko blokad przy dużym obciążeniu.
  • Strategia snapshotów wolumenów

    • OTOBO: Przykładowe skrypty (np. pełny backup i przywracanie) są oficjalnym odniesieniem i przetestowane w środowiskach wielokontenerowych.
    • Znuny: Skrypty snapshotów znacznie się różnią, brakuje oficjalnych najlepszych praktyk; użytkownicy często muszą definiować własne sekwencje Down/Up.
  • Automatyzacja i wtyczki chmurowe

    • OTOBO: Zintegrowane przykłady programów do przesyłania do S3 (skrypt Python) i moduły konfiguracyjne dla Azure, Google Cloud Storage.
    • Znuny: Brak wbudowanych wtyczek do przechowywania w chmurze; rozwiązania zazwyczaj zewnętrzne przez rclone lub oddzielne skrypty przesyłania.

6. Wnioski

Dzięki temu skupieniu na specyficznych dla backupu różnicach możesz świadomie zdecydować, czy wykorzystać gotowe mechanizmy OTOBO, czy indywidualnie rozszerzać konfiguracje Znuny.## 6. Wnioski

Dzięki tym szczegółowym skryptom i strategiom Twoje dane OTOBO będą bezpiecznie przechowywane, możliwe do zautomatyzowania i szybko przywracane. Niezależnie od tego, czy chodzi o zrzut bazy danych, wolumeny Docker, czy standardowe narzędzia OTOBO – masz wszystkie opcje pod kontrolą.