Mit rsync automatisches Backup auf ein NAS Speicher

Im folgenden erkläre ich wie man seine lokalen Ordner mit einem einfachen Script mittels rsync auf ein NAS sichern kann. Zudem wird das Script nur ausgeführt wenn ich mich im richten WLAN befinde. Zuerst benötigt man dafür auf dem NAS so genannte “Module” für Rsync. Das sind freigegebene Ordner. Diese kann man sich mit ssh unter /etc/rsyncd.conf anschauen oder bei qnap unter Privilegieneinstellungen >> Freigabe-Ordner (shared folders). Das editieren der rsyncd.conf ist nicht zu empfehlen, da diese z.B. bei der Vergabe eines neuen Passworts für rsync automatisch zurückgesetzt wird bzw. durch Firmware updates auf den meisten NAS Speichern verändert werden könnte. Bei Qnap könnt ihr Rsync unter der App “Sicherungsstrategien” oder “Hybrid Backup - Sync beta” aktivieren. Dort wird auch das Passwort vergeben. Alternativ kann auch ein SSH User verwendet werden, jedoch ist bei Qnap das nur mit dem Admin User möglich. Ansonsten muss bei Qnap ein anderer SSH Server installiert werden. Aber nun zum eigentlichen rsync aufruf. Zum Testen könnt ihr folgendes verwenden:

rsync -aPuvb –modify-window=1 –exclude “.@__thumb” –delete –backup-dir ‘../backupOrdnerAufDerNasfuergeloeschteDateien’ –stats – /PfadZumOrdnerWelcherAufDerNasGesichertWerdenSoll/ rsyncusername@NAS-IP-ADRESSE::SharedFolderNameAufDerNAS/beiBedarfHierUnterverzeichnisseAngeben

Nach der Eingabe kommt eine Meldung mit der Frage nach dem Passwort für rsync, welches Ihr zuvor eingerichtet habt. Falls SSH verwendet werden soll, dann

rsyncusername@NAS-IP-ADRESSE::SharedFolderNameAufDerNAS/beiBedarfHierUnterverzeichnisseAngeben

mit dem folgendem ersetzten

username@NAS-IP-ADRESSE:/PfadAufDerNasZuEuremZielVerzeichniss

Was die Parameter bedeuten wird kurz erklärt:

  • –modify-window=1 => Bei Windows und Samba kann es zu Problemen mit der Übertragungszeit kommen, hierdurch wird Unschärfe ermöglicht. Dadurch wird verhindert das die Datei auf der NAS neuer ist wie die Lokale
  • –exclude “.@__thumb” => Beachtet automatisch erstelle Thumbmails nicht, sehr praktisch bei vielen Bilder Übertragungen
  • -b –delete –backup-dir ‘../BackupVerzeichnis’ => Es werden lokal gelöschte Dateien auch auf dem Zielsystem gelöscht. Aber zur Sicherheit in den angegeben Ordner verschoben (-b)
  • –stats => Ausgabe der Statistik bezüglich der Änderungen an den Dateien
  • -u => überspringt Dateien, die im Ziel neuer sind als in der Quelle
  • -P => Fortschrittsanzeige und Fortsetzung des Transfers bei Abbruch
  • -v => zeigt während des Synchronisierens alle ausgeführten Schritte an

Damit das ganze auch ohne Passwort funktioniert muss man das noch mit

–password-file=filewithpassowrd.txt

erweitern. In diese Datei schreibt man dann das Rsync Passwort und setzt die Lese und Schreibrechte für die Datei entsprechend so das nur das Script die Datei lesen kann. Damit nicht ständig versucht wird einen Server anzufragen obwohl man nicht zu Hause im eigenen WLAN ist - kann man das Script um folgendes erweitern:

essid=$(iwgetid -r)
echo $essid;
if [ “$essid” = “NameDeinesWlansZuHause ]
then

#rsync staff
else
echo “Wrong WLAN”
fi

Das ganze Beispiel Script findet ihr hier unter https://gist.github.com/lightszentip/9558283d339c4cb19d5b691fae0e060a Um das script automatisch ausführen zu lassen bietet sich ein crontab mit der Ausgabe in eine LogDatei an “>> naslogresult.log