Zum Inhalt

Backup- & Wiederherstellungsstrategie

Dokumentation der automatisierten Sicherungsverfahren für DokuWiki, den Caddy-Container (CT 150) sowie der Restore-Verfahren im Notfall.

Überblick

Dieser Bereich beschreibt, wie wichtige Inhalte, Konfigurationen und Betriebssystemdaten wiederhergestellt werden können. Ziel ist ein nachvollziehbarer, möglichst automatisierter Recovery-Prozess im Fehlerfall.

Verwandte Seiten

1. DokuWiki-Sicherungskonzept

DokuWiki speichert alle Daten dateibasiert (Flat-File). Eine relationale Datenbank ist nicht erforderlich.

Parameter Konfiguration / Wert
Sicherungstyp Intelligentes Vollbackup mit Änderungserkennung
Prüflogik Sichert nur, wenn Dateien seit dem letzten Archiv geändert wurden
Ignorierte Daten Cache (data/cache) und Locks (data/locks)
Sicherungsziel /var/backups/dokuwiki/
Vorhaltezeit 14 Tage (ältere Archive werden automatisch bereinigt)
Ausführungszeit Täglich um 02:30 Uhr per Cronjob

2. Backup-Skript (/usr/local/bin/backup-dokuwiki.sh)

Das Skript liegt auf Container 150 unter /usr/local/bin/backup-dokuwiki.sh (Rechte: chmod 700):

#!/bin/bash
set -e

# Konfiguration
SOURCE_DIR="/var/www/dokuwiki"
BACKUP_DIR="/var/backups/dokuwiki"
TIMESTAMP=$(date +"%Y-%m-%d_%H%M%S")
BACKUP_FILE="${BACKUP_DIR}/dokuwiki-backup-${TIMESTAMP}.tar.gz"
RETENTION_DAYS=14

# Relevante Inhaltsordner (Cache & Locks ignoriert)
WATCH_DIRS=(
    "${SOURCE_DIR}/data/pages"
    "${SOURCE_DIR}/data/media"
    "${SOURCE_DIR}/data/meta"
    "${SOURCE_DIR}/conf"
)

mkdir -p "${BACKUP_DIR}"

# Letztes Archiv ermitteln
LAST_BACKUP=$(ls -t "${BACKUP_DIR}"/dokuwiki-backup-*.tar.gz 2>/dev/null | head -n 1)

# Auf inhaltliche Änderungen prüfen
if [ -n "${LAST_BACKUP}" ]; then
    CHANGES=$(find "${WATCH_DIRS[@]}" -newer "${LAST_BACKUP}" -print -quit 2>/dev/null)
    if [ -z "${CHANGES}" ]; then
        echo "[$(date)] Keine inhaltlichen Änderungen seit ${LAST_BACKUP##*/} – Backup übersprungen."
        exit 0
    fi
fi

# Archivierung durchführen
tar -czf "${BACKUP_FILE}" -C /var/www dokuwiki
chmod 600 "${BACKUP_FILE}"

# Veraltete Archive bereinigen
find "${BACKUP_DIR}" -name "dokuwiki-backup-*.tar.gz" -type f -mtime +${RETENTION_DAYS} -delete

echo "[$(date)] Änderungen erkannt. Neues Backup erstellt: ${BACKUP_FILE}"

3. Installation & Cronjob-Einrichtung

Skript ausführbar machen und Zielordner berechtigen:

chmod +x /usr/local/bin/backup-dokuwiki.sh
mkdir -p /var/backups/dokuwiki

Cronjob in der Crontab von root hinterlegen (crontab -e):

30 2 * * * /usr/local/bin/backup-dokuwiki.sh >> /var/log/dokuwiki-backup.log 2>&1

Manuelle Statuskontrolle der Sicherungen:

# Letzte Backups auflisten
ls -lh /var/backups/dokuwiki/

# Logfile des Cronjobs prüfen
cat /var/log/dokuwiki-backup.log | tail -10

4. Wiederherstellung im Ernstfall (Restore)

Sollte DokuWiki durch ein Fehl-Plugin beschädigt werden oder Seiten versehentlich gelöscht worden sein:

1. Bestehende Installation wegsichern / leeren

systemctl stop caddy
mv /var/www/dokuwiki /var/www/dokuwiki_defekt_$(date +%F)

2. Gewünschtes Archiv entpacken

# Ersetze den Dateinamen durch das gewünschte Datum:
tar -xzf /var/backups/dokuwiki/dokuwiki-backup-JAHR-MONAT-TAG_ZEIT.tar.gz -C /var/www

3. Dateirechte korrigieren & Caddy starten

chown -R www-data:www-data /var/www/dokuwiki
chmod -R 755 /var/www/dokuwiki
systemctl start caddy

5. Host-Ebene (Proxmox VE Sicherung)

Das Skript sichert DokuWiki intern auf dem Dateisystem von CT 150. Um vor Ausfällen des Proxmox-Hosts oder des ZFS-Pools geschützt zu sein, wird der gesamte Container 150 wöchentlich über das Proxmox-Backup (PBS / VZDump) auf ein externes Speicherziel gesichert.


Dokumentationsstand: September 2026