Zeitgesteuerte Sicherung mittels wget inkl. Protokoll
Einleitung
Mit dem Kommandozeilenprogramm wget lassen sich nicht nur einzelne Dateien, sondern auch komplette Verzeichnisstrukturen herunterladen. In Verbindung mit dem "cron-Daemon" kann man so eine automatisierte Sicherung durchführen, die über das ftp Protokoll erreichbar sind. Mittels "nail" erhält man auf Wunsch eine Bestätigungsmail mit angehangenem Protokoll. Als Beispiel wird im Folgenden die automatisierte Sicherung eines Webspaces bei einem Internet-Service-Providers (ISP) beschrieben. Weitere Szenarien sind denkbar.
Anmerkung
Bevor ihr anfangt, nehmt bitte noch den Artikel "Wichtige Informationen zum Modden der Synology Stations" zur Kenntnis.
Mit "wget" kann man recht einfach, mittels "ftp", ganze Verzeichnisstrukturen von entsprechenden ISP's (Internet Service Providern) kopieren.
- "wget" ist jedoch nicht in der Lage, Dateien die auf einem ISP-Server gelöscht wurden, auch im Ziel zu löschen. Es ist sozusagen nur ein "Zuwachsbackup" möglich.
- Auch die Benutzerrechte einer Datei, die sogenannten "permissions" werden nicht mit übertragen.
- Des Weiteren werden bei der Nutzung von ftp, Benutzername und Passwort "unverschlüsselt" übertragen und können potentiell abgehört werden. Bitte seit euch dessen bewußt. Verbindungen via ftp/s, scp etc. wurden nicht getestet und werden hier auch nicht beschrieben.
- Einige Optionen des wget Kommandos können zu ungewollten/ungeplanten Aktionen führen, wie z.B. die Optionen -r und -l (siehe unten im Anhang). Daher nochmal die Bitte, das ganze mit Vorsicht zu genießen.
Voraussetzungen
- Kenntnisse im Umgang mit der Kommandozeile.
- IPKG muss installiert sein
- Zum versenden des Protokolls muss nail installiert sein.
- Erstellen einer Datei mit vi, nano oder AdminTool.
- Cron konfigurieren / Crontab konfigurieren
Schritt 1: Nail installieren
Um die Durchführung des Sicherungsauftrages mit eine E-Mail bestätigen zu können, benötig man das Kommandozeilenprogramm "nail", da der Systemroot von Hause aus keine eigene E-Mail Adresse besitzt! Wer hierauf verzichten kann, kommt auch ohne "nail" aus, muss aber das nachfolgende Script um die Mailfunktion einkürzen. Für die Installation und Einrichtung von "nail" verweise ich an dieser Stelle auf das dementsprechenden Wiki Mit Nail ein E-Mail verschicken. Das Protokoll wird im Ordner var/log/ abgelegt.
Schritt 2: Erstellen des Scriptes
Anlegen des Scriptes "S99wget-isp2ds.sh" im Ordner /opt/bin/
(Inhalt des Scriptes /opt/bin/S99wget-isp2ds.sh)
#!/bin/sh wget -m -nv -o /var/log/wget.record.log -P /volume[x]/[SICHERUNGSZIEL]/ ftp://[USER]:[PASSWORD]@[DOMAIN].[TLD]/ cat /var/log/wget.record.log | grep -v listing > /var/log/wget.filtered-mail.log dat_now=`date +%d-%m-%Y_%H:%M:%S` /opt/bin/nail -s "Der ISP wurde am $dat_now gesichert" -a /var/log/wget.filtered-mail.log [E-MAIL]@[DOMAIN].[TLD]
Erläuterung zur Arbeitsweise des Scriptes
Das Backup wird durch die "wget"-Anweisung gestartet. Die Option "-m" aktiviert die Optionen, die zum Erstellen eines Mirrors (Spiegels) einer Website notwendig sind. Folgende Optionen werden durch diese Option mit aktiviert: -r -N -l inf --no-remove-listing !
Beim Durchlauf von "wget" wird mit der Option "-o /var/log/wget.record.log" eine Datei angelegt, die jegliche Aktion von "wget" protokolliert. Die Option "-nv" sorgt jedoch dafür, das nur die wichtigsten Aktionen protokolliert werden.
Ist das Backup abgeschlossen, wird das entstandene Protokoll "wget.record.log" nochmals eingekürzt, indem alle Zeilen die das Wort "listing" mitführen, gelöscht werden und in eine neue neue Datei, mit dem Namen "wget.filtered-mail.log" gespeichert werden.
Zum Abschluss wird eine Bestätigungsmail generiert, die als Anhang das Protokoll "wget.filtered-mail.log" mitführt.
Schritt 3: Script ausführbar machen
chmod 755 /opt/bin/S99wget-isp2ds.sh
Schritt 4: Cron konfigurieren!
Mit Hilfe von "cron" kann man nun das ganze automatisieren um z.B. eine wöchentliche Sicherung einzurichten. Da die Konfiguration von cron bereits hier im Wiki beschrieben ist, verweise ich abermals an dieser Stelle dorthin. Als "command" -Befehl wird in der crontab der Pfad zu dem Script angegeben.
Hier ein Beispiel für den Eintrag in die crontab. Ausführung des Scriptes, jeden Sonntag um 21:30 Uhr!
------------------------------------------------------------------------------------------------------ #minute hour mday month wday who command 30 21 * * 0 root /opt/bin/S99wget-isp2ds.sh ------------------------------------------------------------------------------------------------------
Anhang: Erläuterung der verwendeten wget Optionen
-P, --directory-prefix=PREFIX Dateien unter dem Verzeichnis PREFIX/... speichern -nv oder --non-verbose Es werden weniger meldungen ausgegeben. -m oder --mirror Aktiviert Optionen, die zum Erstellen eines Mirrors (Spiegels) einer Website notwendig sind. Folgende Optionen werden aktiviert: -r -N -l inf --no-remove-listing -o Datei oder --output-file=Datei Protokoll-Meldungen werden in die angegebene Datei geschrieben. Wenn die Datei bereits existiert, wird sie überschrieben. -q oder --quit Es werden keine Meldungen ausgegeben. bei mirror (-r -N -l inf --no-remove-listing) -r oder --recursive Der Download findet rekursiv statt. Verlinkte Seiten oder Unterverzeichnisse werden ebenfalls heruntergeladen. Verweise auf andere Webseiten wird gefolgt. Diese Option ist mit Vorsicht zu verwenden. -N oder --timestamping Es werden nur Dateien heruntergeladen, die neuer als die lokalen Dateien sind. -l Zahl oder --level=Zahl Legt die maximale Rekursionstiefe fest. Dabei stehen 0 und inf für eine unbegrenzte Tiefe. --no-remove-listing’ Don't remove the temporary .listing files generated by ftp retrievals. Normally, these files contain the raw directory listings received from ftp servers. Not removing them can be useful for debugging purposes, or when you want to be able to easily check on the contents of remote server directories (e.g. to verify that a mirror you're running is complete).