Geänderte Dateien: - root/.ssh/config - root/backup-config/backup-config.sh - root/backup-config/run-backup-and-push.sh - root/backup-config/sources.txt - root/dokuwiki_backup/backup_rsit.sh - root/dokuwiki_backup/backup_wiki.sh
48 lines
1.3 KiB
Bash
Executable File
48 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
# ===== Konfiguration =====
|
|
SOURCE="/root/docker/dokuwiki/data" # Root von DokuWiki (enthält data/)
|
|
BACKUPDIR="/root/dokuwiki_backup"
|
|
REMOTE_USER="backupuser"
|
|
REMOTE_HOST="backupserver"
|
|
REMOTE_PATH="/remote/backup/path"
|
|
RETENTION_DAYS=14
|
|
|
|
DATE=$(date +%F)
|
|
ARCHIVE="dokuwiki-rsit-$DATE.tar.gz"
|
|
HASHFILE="$ARCHIVE.sha256"
|
|
|
|
# Nur diese Teilpfade sichern (relativ zu $SOURCE)
|
|
INCLUDE_PATHS=(
|
|
"data/meta/rsit"
|
|
"data/media/rsit"
|
|
"data/pages/rsit"
|
|
)
|
|
|
|
# ===== Vorbereitung =====
|
|
mkdir -p "$BACKUPDIR"
|
|
|
|
# ===== Prüfen, ob alle Pfade existieren (sonst hart abbrechen) =====
|
|
for p in "${INCLUDE_PATHS[@]}"; do
|
|
if [[ ! -d "$SOURCE/$p" ]]; then
|
|
echo "FEHLER: Verzeichnis fehlt: $SOURCE/$p" >&2
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
# ===== Archiv erstellen (Struktur bleibt erhalten) =====
|
|
tar -czf "$BACKUPDIR/$ARCHIVE" -C "$SOURCE" "${INCLUDE_PATHS[@]}"
|
|
|
|
# ===== Hash erzeugen =====
|
|
cd "$BACKUPDIR"
|
|
sha256sum "$ARCHIVE" > "$HASHFILE"
|
|
|
|
# ===== Upload =====
|
|
#rsync -avz "$ARCHIVE" "$HASHFILE" \
|
|
# "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH}/"
|
|
|
|
# ===== Alte Backups lokal löschen =====
|
|
find "$BACKUPDIR" -type f -mtime +"$RETENTION_DAYS" -name "dokuwiki-rsit-*.tar.gz" -delete
|
|
find "$BACKUPDIR" -type f -mtime +"$RETENTION_DAYS" -name "dokuwiki-rsit-*.sha256" -delete
|