Restic Backup Script überarbeitet

This commit is contained in:
2025-05-24 14:04:06 +02:00
parent e2a7770a34
commit c2ab18111c

View File

@@ -1,26 +1,52 @@
#!/bin/bash
# Das Skript funktioniert nur, wenn der restic server authentication deaktiviert hat.
# ======== Bash Einstellungen =======
set -euo pipefail
set +H
# Das Skript braucht unter Umständen root/sudo Rechte.
# Für einen cronjob sollte das Skript desshalb im Crontab des root-Users eingebunden werden
# um crontab zu bearbeiten 'crontab -e' ausführen und Script mit entsprechenden Parametern einfügen
#
# Zuerst muss ein restic Repository erstellt werden:
# restic -r rest:http://<ip>:<port>/target-dest/ init
### Backup-Pfade ###
BACKUP_PATH="/paht/to/local/directory"
# ======== Konfiguration ========
BACKUP_PATH_1="/path/to/local/directory"
BACKUP_PATH_2="/path/to/local/directory"
REPO=""
PW_FILE=""
LOG_FILE=""
RESTIC_BIN="/usr/bin/restic" # ggf. anpassen
### Restic Flags ###
set +H # ?????
# ======= Umgebungsvariablen =======
export RESTIC_REPOSITORY="$REPO"
export RESTIC_PASSWORD_FILE="$PW_FILE"
### Restic Konfiguration ###
export RESTIC_REPOSITORY="rest:http://<ip>:<port>/repository/"
export RESTIC_PASSWORD="1234" # sicheres Passwort setzen
### Alte Backups aufräumen ###
restic forget --keep-last 3 --prune
# ======= Logging =======
exec > >(tee -a "$LOGFILE") 2>&1
trap 'echo "Fehler beim Backup!" >&2; exit 1' ERR
### Backup durchführen ##
restic backup "BACKUP_PATH" --tag "<usefull tag>"
# ======== Backups für 3 Tage behalten ========
"$RESTIC_BIN" forget --keep-last 3 --prune
# ======== ASCII ========
cat << "EOF"
____ _ _
| _ \ ___ ___| |_(_) ___
| |_) / _ \/ __| __| |/ __|
| _ < __/\__ \ |_| | (__
|_| \_\___||___/\__|_|\___|
EOF
# ======== Backup durchführen ========
echo " ==== Backup starten ====="
if [[ -n "$BACKUP_PATH_1" ]]; then
"RESTIC_BIN" backup "$BACKUP_PATH_1" --tag "<usefull tag>"
fi
if [[ -n "$BACKUP_PATH_2" ]]; then
"RESTIC_BIN" backup "$BACKUP_PATH_2" --tag "<usefull tag>"
fi
echo "==== Backup abgeschlossen ====