
OTOBO / Znuny Backup & Restore – Obszerny Przewodnik
W tym przewodniku zagłębimy się w strategie tworzenia kopii zapasowych dla OTOBO i omówimy:
- Zrzut bazy danych za pomocą
mysqldump - Tworzenie kopii zapasowych i przywracanie wolumenów Docker
- Własne skrypty OTOBO
backup.plirestore.pl - Automatyzacja za pomocą zadań Cron i obsługi błędów
- 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
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)
0 * * * * /usr/local/bin/otobo_db_backup.sh
otobo_db_backup.shtworzy zrzut i usuwa pliki starsze niż 3 dni.
Przykład skryptu: otobo_db_backup.sh
#!/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 -delete2. Backup wolumenów Docker
Wszystkie trwale zapisane pliki (załączniki, konfiguracja, logi) znajdują się w wolumenach Docker.
2.1 Pełny backup wolumenów
#!/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
#!/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 -d3. Skrypty OTOBO: backup.pl & restore.pl
OTOBO dostarcza własne skrypty CLI w kontenerze:
# Wyświetlanie pomocy
/opt/otobo/scripts/backup.pl -hOpcje
| Opcja | Domyślnie | Opis |
|---|---|---|
-d, --backup-dir | wymagane | Katalog docelowy dla kopii zapasowych |
-c, --compress | gzip | Metoda kompresji (gzip | bzip2) |
-r, --remove-old-backups DAYS | brak | Usuwa starsze kopie zapasowe (w dniach) |
-t, --backup-type | fullbackup | fullbackup (wszystko) | nofullbackup | dbonly |
fullbackup: Baza danych + katalog domowy (bez cache).dbonly: Tylko baza danych.
Przykład: Pełny backup w kontenerze Docker
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 7Przywracanie w kontenerze
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/otobo4. Automatyzacja i Obsługa Błędów
Skrypt opakowujący z weryfikacją błędów
#!/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
0 */6 * * * /usr/local/bin/volume_backup.shCzyszczenie starych kopii zapasowych
#!/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.gzi.sql.gzza pomocąaws clilub 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.
- OTOBO: Oficjalny obraz Docker dostarcza preinstalowaną usługę backupu z hakami CLI (
Skrypty CLI OTOBO
- OTOBO:
backup.plirestore.plw 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-backupslub rozszerzonych opcji zrzutu bazy danych; konieczne jest dostosowanie.
- OTOBO:
Optymalizacje zrzutu bazy danych
- OTOBO: Domyślna flaga
--single-transactionjest 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.
- OTOBO: Domyślna flaga
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
rclonelub 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ą.