Betriebssysteme, Programme & Web

Synology: Automatisierte Backups von FTP-Servern

Jeder Webseitenbetreiber und Administrator kennt es: Eine auf einem Fremdserver gehostete Webseite funktioniert nicht mehr so, wie sie soll. Gründe dafür können vielseitig sein – ein neues Plugin bei Wordpress, ein Update des Web- oder Datenbankservers oder etwas völlig anderes. Hier ein möglichst aktuelles Backup zu haben, ist Gold wert. Hier kommt deine Synology DiskStation ins Spiel. Offiziell gesehen, unterstützt der aktuelle DSM (Disk Station Manager) 6.2 zwar keine Backupfunktion für FTP-Quellen, aber mit einem kleinen Workaround kannst du zuverlässig und regelmäßig Kopien deines FTP anlegen und diese bei Bedarf wiederherstellen. Wir verraten dir in unserem Tutorial, wie du eine eigene Backup-Aufgabe mittels Kommandozeilenskript erstellst und diese per Aufgabenplaner automatisierst.

Backup-Skript als einfache Lösung

Um eine Backup-Aufgabe im Aufgabenplaner zu erstellen, benötigst du erst einmal das passende Skript dazu, beziehungsweise den Befehlsablauf über die Kommandozeile an deinem NAS. Klingt vorerst kompliziert, ist jedoch nur eine kurze Aneinanderreihung verschiedener Befehle, die wir dir außerdem erklären. Du benötigst dafür keinerlei Programmierkenntnisse.

Zuerst geht es darum, das Skript in einem Text-Editor zu erstellen. Mach’s dir einfach und installiere direkt über das Paket-Zentrum den Text-Editor.

Öffne die App, klicke auf den Button „Datei“ und erstelle über den Punkt „Neu“ ein neues Textdokument. Hier kannst du nun dein Backup-Skript nach Belieben zusammenstellen.

Wir bedienen uns hierfür der Skriptsprache Bash, einer in Linux- und Unix-Umgebungen verbreiteten Sprache. Mit unserem kleinen Skript wollen wir erreichen, dass die auf dem FTP vorhandene Ordnerstruktur inklusive aller Dateien in ein von dir vorgegebenes, lokales Verzeichnis geladen wird. Zudem sollen darin Unterordner mit dem jeweiligen Datum erstellt werden, um deine Backups besser im Überblick zu erhalten. Je nach Wunsch und Setup (funktionierender Mailserver vorausgesetzt) kannst du dich im Anschluss per Mail über den Status informieren lassen.

Beginne dein Skript im Text-Editor mit der Zeile:

#!/bin/bash

Mit diesem sogenannten Hash-Bang signalisierst du dem ausführenden Betriebssystem, dass es sich um ein Skript handelt und jeweils ein Befehl mit allen angefügten Argumenten abgearbeitet wird.

Kopieren per wget-Befehl

Erst jetzt kann der eigentliche Kopiervorgang gestartet werden. Vorerst solltest du dir aber noch ein paar zusätzliche Parameter vor Augen führen, die du vielleicht für dein Vorhaben benötigen wirst und dein Leben als Admin erleichtern werden. Du kannst diese einfach in der Zeile mit dem wget-Befehl anhängen.

-l (kleines L) legt die maximale Verzeichnistiefe fest, die heruntergeladen wird, -l 0 setzt diese auf unendlich

-ftps verwendet SSL anstatt einer unverschlüsselten Verbindung

-b startet den Kopiervorgang im Hintergrund (als Service), wodurch im DSM ein Prozess generiert wird, bei welchem sich zum Beispiel die Übertragungsrate oder Priorität festlegen lässt

-r aktiviert den rekursiven Kopiervorgang und sichert alle Unterverzeichnisse und darin enthaltene Dateien

-q schaltet jegliche Benachrichtigungen des Befehls stumm (und dieser läuft ja ohnehin als unsichtbarer Hintergrundprozess)

–directory-prefix gibt das Zielverzeichnis an und sorgt außerdem dafür, dass der Ordnername nach deinen Kriterien vergeben wird (zum Beispiel mit fortlaufendem Datum)

Im nächsten Schritt geht es darum, das aktuelle Datum dem –directory-prefix-Argument anzufügen.  Dadurch kann beim Backupvorgang immer ein Ordner mit dem Datum des Backups erstellt werden. Du kannst hier folgende Parameter wählen:

%Y für das Jahr, %m für den aktuellen Monat, %d für den jeweiligen Tag sowie %H (Stunde), %M (Minute) und %S (Sekunde) für eine genauere Zeitangabe, sofern du mehrere Backups pro Tag planst. Achte auf die jeweilige Groß- und Kleinschreibung der Parameter. In unserem Skript würde das Argument so aussehen:

–directory-prefix=/volume1/testbenutzer/backups/Backup_-$(date +%Y_%m_%d)

Backup-Quelle und -Ziel wählen

Solltest du noch keinen Ordner für die Ablage der Backups erstellt haben, kannst du dies einfach über die File Station nachholen. Je nachdem, auf welchem Volume du diesen erstellst, musst du selbiges auch im wget-Befehl verwenden. In unserem Fall würden wir gerne den Inhalt eines passwortgeschützten FTP-Servers täglich auf unsere DiskStation in /volume1/testbenutzer/backups kopieren – vollautomatisch natürlich, inklusive dem aktuellen Datum als Ordnername. Bisher sieht unser Kommando ungefähr so aus, es fehlen jedoch noch die Zugangsdaten.

wget -l inf -b -r -q --directory-prefix=/volume1/testbenutzer/backups/Backup_-$(date +%Y_%m_%d)

Im nächsten Schritt ist es notwendig, dass du deine Zugangsdaten sowie die FTP-Adresse eingibst. Optimalerweise nutzt du hier Benutzeraccount ohne jegliche Schreibrechte auf deinem Server, da die Zugangsdaten hier als Klartext im Skript vorliegen. Zwar kannst du dieses an einem geschützten Ort ablegen, aber ein wenig zusätzliche Sicherheit schadet nie. Die Argumente sollten hier wie folgend aussehen, wobei Benutzername, Passwort und Serveradresse natürlich durch die tatsächlichen Werte getauscht werden:

--ftp-user=benutzername --ftp-password=passwort ftp://serveradresse

Jetzt sollte dein Kopierbefehl komplett sein. Speichere die Datei idealerweise in einem nicht freigegebenen Ordner und notiere dir den Pfad inklusive Volume. Diesen benötigst du, sobald du eine wiederkehrende Aufgabe erstellst. Achte darauf, dass du die Dateiendung .sh verwendest und nicht .txt. Schließe den Editor und öffne die Datei erneut. Sollten sich hier Sonderzeichen verändert haben, wähle eine andere Codierung im Menü „Datei“ unter dem Punkt „Codierung“, wie etwa „Westlich“.

Aufgabe erstellen und ausführen

Um eine zeitgesteuerte Backupaufgabe zu erstellen, wechsle in der Systemsteuerung zum Aufgabenplaner. Klicke auf den Erstellen-Button, wähle „Geplante Aufgabe“ und im Aufklappmenü „Benutzerdefiniertes Skript“.

Gib der Aufgabe im Feld „Vorgang“ einen Namen. Du kannst ebenso einen bestimmten Benutzer für das Skript festlegen, sofern dir eine Ausführung mit Root-Rechten zu heikel ist.

Im Reiter „Zeitplan“ kannst du im Anschluss die Ausführungszeit und -häufigkeit wählen. Bedenke, dass eine höhere Frequenz zu massivem Traffic-Anstieg führen kann, da immer die komplette Verzeichnisstruktur übertragen wird.

Klicke nun auf „Aufgabeneinstellungen“ und füge den Pfad zu deinem Skript im Feld „Benutzerdefiniertes Skript“ ein – mit dem Befehl bash davor.

Bestätige deine Einstellungen mit dem OK-Button. Die neue Aufgabe sollte jetzt in der Liste erscheinen. Du kannst diese gleich starten, wenn du darauf rechtsklickst und den Punkt „Ausführen“ wählst. Das Backup-Skript läuft im Hintergrund, sodass du keinen Status angezeigt bekommst, jedoch sollte sich der Backupordner bereits jetzt mit den Dateien des FTP-Servers füllen.

Simon Lüthje

Ich bin der Gründer dieses Blogs und interessiere mich für alles was mit Technik zu tun hat, bin jedoch auch dem Zocken nicht abgeneigt. Geboren wurde ich in Hamburg, wohne nun jedoch in Bad Segeberg.

Ähnliche Artikel

Neue Antworten laden...

t
tux

Neues Mitglied

1 Beiträge 0 Likes

Danke Simon für die hilfreiche Anleitung :-) Habe ich gleich ausprobiert und funktioniert bestens.
Der nächste Schritt: eine Versionskontrolle mit Begrenzung auf x backups einzubauen.
Da bin ich noch dran.
cu :-) chris

Antworten Like

Avatar of Simon
Simon

Administrator

5,391 Beiträge 3,932 Likes

Moin Chris,
schauen wir uns mal an. Da brauche ich mich zum Glück nicht drum kümmern, das übernimmt bei mir Plesk :)

Antworten Like

Schaltfläche "Zurück zum Anfang"