Website Backup mit wget

Das obligatorische Website Backup mit FTP gehört zu den absoluten Standardaufgaben, die jeder Website-Administrator regelmäßig durchführen muss. Gerade CMS wie WordPress erfahren häufig inkrementelle Updates, die nicht selten in einem whitescreen münden. War der Admin nur wieder zu faul, das Root-Verzeichnis vor Beginn der Updates zu sichern, muss der vorherige Stand mühsam wiederhergestellt werden, damit die (In)Kompatibilität von veralteten Plugins nicht zum Problem wird. Umso smarter ist es, wenn man die das Website Backup mit wget bash Skript auf einer NAS von Synology und Co. einfach automatisch downloaden kann.

Diese Anleitung zeigt dir, wie du in wenigen Schritten eine Backup Routine über den Aufgabenplaner deiner Synology NAS einrichten kannst, um damit jegliche Backups von einem FTP Server zu ziehen. Dabei ist es unerheblich, ob es um eine Website oder andere Webverzeichnisse geht, solange sich die Daten via wget downloaden lassen.

1: wget und Bash installieren

Während die Bash Shell auf Unix-Systemen zum elementaren Kern gehört und i.d.R. nicht installiert werden muss, müssen Windows-Systeme zunächst eine Linux-Bash installieren. Wget ist im werkseitig installierten Packet Manager von Synology ab DS 7.x bereits vorinstalliert. Zum Testen der Bash Skripte mit wget auf MacOS-Geräten muss zunächst wget installiert werden.

Am einfachsten lässt sich das über die Installation des Homebrew Package Managers erledigen.

Homebrew installieren (im Terminal ausführen)

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

wget installieren:

$ brew install wget

Damit ist macOS nun einsatzbereit für die Erstellung der Bash Skripte, die für ein Website Backup mit wget eingesetzt werden können.

2: Skript erstellen

Unser Bash Skript zum automatischen Download von FTP Servern soll im Wesentlichen drei Aufgaben erledigen:

  • Die Verbindung zum FTP Server herstellen und das angeforderte Verzeichnis mit wget herunterladen
  • Den Download in ein eigenes Verzeichnis auf der Synology NAS speichern, das mit dem aktuellen Backup-Datum versehen ist
  • Die Prozedur in einem Log File speichern und optional eine Benachrichtigung an uns versenden

Hinweis: wget ermöglicht eine Vielzahl an unterschiedlichen Konfigurationsmöglichkeiten für das Skript. Für die vollständige Parameterliste einfach wget -help im Terminal aufrufen, um die Übersichtsseite zu wget zu erhalten.

wget Bash Skript

#!/bin/bash
datum=`date +%y-%m-%d`
wget -b -q -r -l inf -S --directory-prefix=/path/to/backup/backup-$datum ftp://[FTP_USER_EINFUEGEN]:[FTP_PASSWORD_EINFUEGEN]@[FTP_HOST EINFUEGEN]/website_verzeichnis/*

Die Parameter in der Übersicht:

-b: wget läuft als Prozess im Hintergrund (für Prozessmanagement der Synology NAS wichtig)

-q: Unterbindet die Ausgabe von Informationen von wget auf der Konsole/Shell

-r: Aktiviert den rekursiven Download von Dateien

-l: Legt die Pfadtiefe fest, die wget verfolgen und runterladen soll. -l 10 ermöglicht eine Pfadtiefe von 10, -l inf ermöglicht eine unendliche (infinite) Pfadtiefe

-S: Zeigt Serverantworten (response) an (auch im Logfile)

–directory-prefix= : Gibt das Verzeichnis an, in dem das Backup gespeichert werden soll (Variable $datum hängt das aktuelle Datum im Format datum=`date +%y-%m-%d` an

Die im nachfolgenden FTP-Command komprimierte Eingabe muss lediglich mit den Daten zu FTP_User, Passwort und FTP-Server gefüttert werden.

Der Befehl mit wget sollte sicherheitshalber einmal auf der lokalen Umgebung auf Funktionsfähigkeit getestet werden. Dazu ist es jedoch ebenso nötig, die Pfadangaben ausgehend vom Root-Verzeichnis entsprechend anzupassen (gilt auch für Synology). Für den Testlauf sollte der Parameter -q entfernt werden. um eine Ausgabe von Fehlermeldungen zwecks Debugging auf der Konsole zu ermöglichen.

3: Skript auf Synology NAS hochladen und in Aufgabenplaner einbinden

Nachdem das Skript fertigt konfiguriert und getestet ist, sollte es eindeutig benannt und als „backupscript.sh“ in einen Ordner auf der Synology geladen werde. Idealerweise sieht das Verzeichnis in etwa so aus:

/volume1/user/backups/website1/place_script_here

Nach dem Upload öffnen wir den Aufgabenplaner von Synology unter Systemsteuerung ➞ Aufgabenplaner

Im Aufgabenplaner erstellen wir dann eine Geplante Aufgabe als neues Benutzerdefiniertes Skript:

Aufgaben erstellen: Allgemein, Zeitplan, Aufgabeneinstellungen

In den allgemeinen Einstellungen lässt sich ein Name für die Aufgabe festlegen sowie der Benutzer, der die Aufgabe ausführt. Es sind keine root-Rechte nötig, um das Skript vom Benutzer-Volume auszuführen. Entsprechend kann in der Synology Benutzerverwaltung ein eigenständiger Benutzer für die Backup-Routinen angelegt werden.

Allgemeine Einstellungen von Synology Aufgabe

Allgemeine Einstellungen von Synology Aufgabe

Im Zeitplan lässt sich festlegen, wie häufig die Routine ausgeführt werden soll. Für Backups bietet sich in den meisten Fällen ein wöchentlicher oder monatlicher Intervall an, da gerade WordPress- oder Joomla-Websites häufig von Updates betroffen sind, die einige Änderungen am Core mit sich bringen.

Zeitplan in Synology Aufgabe anlegen

Zeitplan in Synology Aufgabe anlegen

Die Aufgabeneinstellungen ermöglichen die Einrichtung einer E-Mail Benachrichtigung mit Ausführungsdetails zur jeweiligen Aufgabe, für die die interne SMTP-Benachrichtigungsfunktion jedoch zunächst aktiviert sein muss. Im Feld „Befehl ausführen“ wird der Pfad für das auf dem Volume hinterlegte Bash Skript angegeben.

Aufgabeneinstellungen festlegen und Bash Skript einfügen

Bash Skript mit wget hinterlegen

4: Website Backup mit wget ausführen und auf Synology NAS kontrollieren

Im Anschluss lässt sich die Aufgabe starten bzw. ausführen. Nach erfolgreicher Ausführung erhalten wir eine Benachrichtigung an die hinterlegte E-Mail Adresse und im Orderverzeichnis der Synology NAS ist das Website Backup mit wget entsprechend vollständig hinterlegt.

Website Backup mit wget erfolgreich im Download Ordner gespeichert

Website Backup mit wget erfolgreich im Download Ordner gespeichert

Natürlich funktioniert dieses Vorgehen mit NAS-Systemen von QNAP oder Western Digital analog, Voraussetzung ist lediglich eine installierte Bash und wget Paketmanager.