Zeitgesteuerte Sicherung mittels wget inkl. Protokoll

Aus Synology Wiki
Wechseln zu: Navigation, Suche


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


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]

(Die Werte in den eckigen Klammern [xxx] müßt ihr natürlich mit euren Daten füttern!)


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). 

Externe Links