Backup Skript
Wie bereits im Backup-Plan erwähnt basierd meine Backup-Strategie auf einem Bash-Skript, welches die Daten der Docker-Container auf das Backup-System kopiert.
Backup Skript
Das Skript basiert auf RSYNC, um die Ordner in effektiver und fehlerfreier Weise zu synchronisieren. Im Oberen Teil werden die Pfade zu den Quell-Ordnern und den gemounteten Netzwerklaufwerken angegeben. Das Skript setzt voraus, das alle Volumes in einem Verzeichnis gespeichert sind.
#!/bin/bash
# Quell- und Zielordner
Docker_SOURCE="/etc/docker_vol/"
Docker_DESTINATION="/etc/backup/Docker"
Immich_SOURCE="/etc/mnt/sda1/"
Immich_DESTINATION="/etc/backup/Immich"
Main_SOURCE="/root/main/"
Main_DESTINATION="/etc/backup/main"
BACKUP_DIR="/etc/backup/4cows"
REPO_NAME="4Cows-Db"
MARIADB_ROOT_PASSWORD="4cows"
BACKUP_SERVER="192.168.50.225:84/Backup"
echo "Docker Backup gestartet..."
# Docker-Backup
sudo rsync -rltDv --delete --copy-links "$Docker_SOURCE" "$Docker_DESTINATION"
if [ $? -eq 0 ]; then
curl -H "Title: Docker-Backup gelungen" -H "Priority: urgent" -H "Markdown: yes" -H "Tags: heavy_check_mark" -d "Backup erfolgreich ausgeführt." 192.168.50.225:84/Backup
else
echo "Fehler bei Docker-Backup!"
curl -H "Title: Docker-Backup fehlgeschlagen" -H "Priority: urgent" -H "Markdown: yes" -H "Tags: triangular_flag_on_post,rotating_light" -d "Fehler beim Docker-Backup. Siehe Konsolenausgabe." 192.168.50.225:84/Backup
fi
echo "Docker Backup beendet"
echo "Immich wird gestoppt..."
# Stop Immich
docker stop immich_redis
docker stop immich_machine_learning
docker stop immich_postgres
docker stop immich_server
echo "Immich Backup gestartet..."
# Immich-Backup
sudo rsync -rltDv --delete --copy-links "$Immich_SOURCE" "$Immich_DESTINATION"
if [ $? -eq 0 ]; then
curl -H "Title: Immich-Backup gelungen" -H "Priority: urgent" -H "Markdown: yes" -H "Tags: heavy_check_mark" -d "Backup erfolgreich ausgeführt." 192.168.50.225:84/Backup
else
echo "Fehler bei Immich-Backup!"
curl -H "Title: Immich-Backup fehlgeschlagen" -H "Priority: urgent" -H "Markdown: yes" -H "Tags: triangular_flag_on_post,rotating_light" -d "Fehler beim Immich-Backup. Siehe Konsolenausgabe." 192.168.50.225:84/Backup
fi
echo "Immich Backup beendet"
echo "Main Backup gestartet..."
# Main-Backup
sudo rsync -rltDv --delete --copy-links "$Main_SOURCE" "$Main_DESTINATION"
if [ $? -eq 0 ]; then
curl -H "Title: Main-Backup gelungen" -H "Priority: urgent" -H "Markdown: yes" -H "Tags: heavy_check_mark" -d "Backup erfolgreich ausgeführt." 192.168.50.225:84/Backup
else
echo "Fehler bei Main-Backup!"
curl -H "Title: Main-Backup fehlgeschlagen" -H "Priority: urgent" -H "Markdown: yes" -H "Tags: triangular_flag_on_post,rotating_light" -d "Fehler beim Main-Backup. Siehe Konsolenausgabe." 192.168.50.225:84/Backup
fi
echo "Main Backup beendet"
echo "4Cows Backup gestartet..."
# 4Cows-Backup
DATE=$(date +\%F)
BACKUP_FILE="$BACKUP_DIR/4Cows-DB-$DATE.sql"
if ! docker exec 4Cows-DB mariadb-dump --all-databases -u root -p"$MARIADB_ROOT_PASSWORD" > "$BACKUP_FILE"; then
echo "Fehler bei 4Cows-Backup!"
curl -H "Title: 4Cows-Backup fehlgeschlagen" -H "Priority: urgent" -H "Markdown: yes" -H "Tags: triangular_flag_on_post,rotating_light" -d "Datenbank-Dump fehlgeschlagen." 192.168.50.225:84/Backup
fi
# Start Immich
if cd /root/main; then
docker compose up -d
else
echo "Fehler: Verzeichnis /root/main nicht gefunden."
exit 1
fi
Backup Samba Compose Datei
version: '3.8'
Installation
- RSYNC installieren
sudo apt update
sudp apt install rsync
- Verzeichnis für das Skript erstellen
sudo mkdir /root/backup
- In das Verzeichnis navigieren
cd /root/backup
- Backup-Skript erstellen und befüllen
sudo vim backup.sh
- Backup-Skript ausführbar machen
chmod +x backup.sh
- Automatische Ausführung Einrichten (Crontab)
# Crontab Datei Öffnen
crontab -e
# Diese Zeile anfügen
0 1 * * * /root/backup/backup.sh
# Prüfen der aktiven Jobs
crontab -l
Table of Contents