Teilen

Backup von einem Linux Server zu einem Synology NAS

Schwierigkeit: Mittel
Zeitaufwand: 20-25 Minuten

Neulich bin ich zufällig auf ein kleines Problem gestoßen: Ich wollte einen Linux-Server als Quelle für eine Sicherung auf meinem Synology NAS einrichten, aber das ist scheinbar nicht direkt möglich. Da es bei Proxmox-VMs nicht ohne Weiteres möglich ist, den „Active Backup for Business Agent“ zu installieren, blieb mir nur noch Rsync über SSH. Da ich mehrere V-Server habe, die ich regelmäßig und ohne viel Aufwand automatisiert sichern möchte, habe ich folgende Lösung gefunden. In diesem Beitrag erkläre ich dir, wie ich das umgesetzt habe und wie du es ebenfalls umsetzen kannst!

Voraussetzungen:
– Synology NAS
– Linux Server mit SSH Zugang

Zunächst einmal muss man sich mit dem Synology NAS per SSH verbinden, wenn du das schon einmal gemacht hast kannst du den ersten Schritt einfach überspringen:

1. SSH auf dem NAS aktivieren

Gehe in die Systemsteuerung > Terminal und setze den Haken bei „SSH-Dienst aktivieren“

2. SSH Verbindung herstellen und als root anmelden

Verbinde dich nun mit einem SSH-Programm deiner Wahl mit deinem NAS
In dem du deinen Synology Benutzer als Nutzernamen und dein Accountpasswort als Passwort verwendest.
Gebe anschließend folgenden Befehl ein um dich als root anzumelden:

sudo -i

Wenn du dass das erste Mal machst erhältst du folgende Meldung und musst erneut dein Passwort eingeben:

Anschließend bist du als root angemeldet:

3. SSH Key erstellen

Erstelle nun auf dem NAS einen SSH Key ohne Passphrase, drücke hierfür bei der Passphrase einfach ENTER:

ssh-keygen -t rsa

Kopiere dir nun den PublicKey mit folgendem Befehl in die Zwischenablage:

cat ~/.ssh/id_rsa.pub

4. Auf dem Remote Server anmelden und SSH Key hinzufügen

Melde dich nun wie gewohnt auf deinem Remote Server an und gib folgenden Befehl an und ersetze dabei den Text in den Anführungszeichen mit deinem eben kopierten Schlüssel:

echo "dein-kopierter-öffentlicher-ssh-schlüssel" >> ~/.ssh/authorized_keys

5. Verbindung überprüfen

Gehe nun zurück auf dein NAS und stelle eine SSH Verbindung zum Remote Server her. Wenn alles geklappt hat sollte keine Passwortabfrage stattfinden:

6. Skript auf dem NAS erstellen

Erstelle nun mit folgendem Befehl einen Skript Ordner, falls er noch nicht existiert:

mkdir /volume1/scripts

Dort erstellen wir nun ein neues Shellskript, da standardmäßig kein Nano installiert ist empfehle ich dir dies einmal zu installieren, eine Anleitung dazu findest du hier: Nano auf Synology NAS installieren
VIM hingegen ist bereits installiert, ich beziehe mich jedoch im weiteren Verlauf auf Nano:

nano backup-server-name.sh

In diese Datei fügst du nun folgendes ein, achte dabei darauf alle Variablen am Anfang auf dich anzupassen. Wichtig ist das dein lokales Verzeichnis in dem das Backup gespeichert werden soll existiert:

#!/bin/bash
# SFTP-Daten auf das NAS spiegeln

# Variablen
SFTP_HOST="mc.derjordy.dev"  # Die IP oder Domain des Remote-Servers
SFTP_USER="root"                # Dein Benutzername für den Remote-Server
REMOTE_DIR="/var/www/html/Beispiel"    # Das Verzeichnis auf dem Remote-Server
LOCAL_DIR="/volume2/backups/Server/Beispiel"    # Das lokale Verzeichnis auf dem NAS

# Sicherstellen, dass das Zielverzeichnis existiert
mkdir -p $LOCAL_DIR

# Rsync Befehl (SFTP-Verbindung über SSH mit Schlüssel)
rsync -avz -update --checksum -e "ssh -i /root/.ssh/id_rsa -o StrictHostKeyChecking=no" \
    $SFTP_USER@$SFTP_HOST:$REMOTE_DIR/ $LOCAL_DIR

# Abschluss
echo "Backup abgeschlossen am $(date)" >> /var/log/sftp_backup.log

Dieses Skript sorg dafür das sich dein NAS mit deinem Remoteserver verbindet und per rsync die Daten an das NAS sendet.

Dafür stehen die Variablen:
-update: Überträgt nur Dateien, die auf dem Ziel neueren Zeit Stempel haben oder noch nicht existieren, um unnötige Überschreibungen zu vermeiden.
–checksum: Verwendet Prüfziffern (Checksums) anstelle von Zeitstempeln und Dateigrößen, um festzustellen, ob Dateien geändert wurden.
-e: Gibt das Remote-Verbindungsprotokoll an (z. B. ssh), das für die Übertragung verwendet wird.

Wenn du möchtest das immer alle Dateien übertragen werden, kannst du die „checksum“ und „update“ Variabel einfach weglassen.

Nach dem du mit STRG + O das Skript geschlossen und gespeichert hast, muss das Skript noch ausführbar gemacht werden:

chmod +x backup-server-name.sh

Anschließend kannst du es einmal manuell ausführen um es zu testen:

./backup-server-name.sh

Nun werden die Dateien einmal synchronisiert, wenn das erfolgreich war siehst du folgendes:

7. Skript automatisch ausführen

Damit die Dateien auch automatisiert abgerufen werden, muss noch eine Aufgabe im Aufgabenplaner erstellt werden. Gehe dazu in Systemsteuerung > Aufgabenplaner und klicke auf „Erstellen“ und anschließend auf Geplante Aufgabe > Benutzerdefiniertes Skript

In diesem Kontextmenü wählen wir nun als Benutzer root aus

Anschließend klicken wir auf Aufgabeneinstellungen

Im Feld Benutzerdefiniertes Skript fügst du einfach folgendes ein:

/bin/bash /volume1/scripts/backup-server-name.sh

Unter dem Reiter Zeitplan lässt nun noch einstellen wann dieses Job laufen soll, wähle hier das für die passende Aus und klicke anschließend auf OK

Und das war’s auch schon! Jetzt kannst du deinen Remote-Server ganz einfach auf deinem Synology NAS sichern – ganz ohne zusätzliche Dienste oder komplizierte Tools. Einfach, effektiv und direkt über SSH und Rsync.

You may also like