Restic Backup Script überarbeitet
This commit is contained in:
@@ -1,26 +1,52 @@
|
|||||||
#!/bin/bash
|
#!/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 ###
|
# ======== Konfiguration ========
|
||||||
BACKUP_PATH="/paht/to/local/directory"
|
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 ###
|
# ======= Umgebungsvariablen =======
|
||||||
set +H # ?????
|
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 ###
|
# ======= Logging =======
|
||||||
restic forget --keep-last 3 --prune
|
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 ====
|
||||||
|
Reference in New Issue
Block a user