Ordner mit FTP-Server synchronisieren

Cloud-Lösungen gewinnen immer mehr an Bedeutung. So gibt es auch zahlreiche Cloud-Anbieter und Lösungen, auf die man setzen kann. Wer als Webmaster bereits über einen FTP-Server und ausreichend Speicherplatz verfügt, hat es leichter.

In diesem Artikel zeige ich Dir, wie Du mit einem kleinen Skript als Linux-Nutzer die Dateien mit einem FTP-Server synchronisieren kannst. Das funktioniert auch mit SFTP, also der Dateiübertragung via SSH-Protokoll. So können Linux-Nutzer ganz einfach ein Backup Ihrer Dateien anlegen und von überall darauf zugreifen.

Shell Skript für die Datei Synchronisation

Auf der englischsprachigen Website von Sina Salek habe ich ein kleines Shell-Skript gefunden. Das habe ich noch etwas optimiert.

Dieses Skript wartet nach dem Start 60 Sekunden, um (beim Systemstart) sicher zu gehen, dass auch alle notwendigen Dienste gestartet wurden.

Bei der Synchronisation werden Dateien vom Server gelöscht, die sich nicht mehr im lokalen Ordner befinden. Außerdem werden versteckte Dateien und Ordner ignoriert.

#!/bin/bash
HOST='sftp://deinftpserver.de'
USER='BENUTZERNAME'
PASS='PASSWORT'
SERVERFOLDER='/pfad/auf/dem/server'
PCFOLDER='/pfad/auf/dem/rechner'

sleep 60

lftp -f "
open $HOST
user $USER $PASS
lcd $PCFOLDER
mirror --reverse --delete --use-cache --exclude-glob .* --exclude-glob .*/ --verbose $PCFOLDER $SERVERFOLDER
bye
"

Das Synchronisations Skript muss zunächst angepasst werden. In den oberen Zeilen finden sich verschiedene Variablen:

  1. Zunächst muss der HOST angegeben werden. Nutzt du einen normalen FTP-Server, reicht die Angabe deinserver.de. Bei SFTP gibst du den Host im Format sftp://deinserver.de ein.
  2. Als USER und PASS gibst du Benutzernamen und Passwort des FTP-Accounts ein.
  3. Die beiden verbleibenden Variablen enthalten den Ordner-Pfad, ohne abschließenden Slash, auf deinem lokalen Rechner und auf dem Server.

Speichere die Datei am besten in deinem Home-Verzeichnis, zum Beispiel unter /home/BENUTZERNAME/cloudUpdate.sh.

Öffne ein Terminal und gib folgenden Befehl ein, um die Datei ausführbar zu machen:

chmod +x /home/BENUTZERNAME/cloudUpdate.sh

Um zu testen, ob das Skript funktioniert, kannst du es jetzt bereits einmal in einem Terminal ausführen:

. /home/BENUTZERNAME/cloudUpdate.sh

Die Synchronisation kannst du jederzeit mit [Strg] + [C] beenden.

Synchronisation beim Systemstart beginnen

Idealerweise läuft die Synchronisation im Hintergrund ab und beginnt, sobald der PC hochgefahren wurde.

Wir müssen das Skript also so einstellen, dass es mit dem Systemstart ausgeführt wird.

Dafür öffnen wir in einem beliebigen Editor mit root-Berechtigungen die rc.local-Datei:

sudo vi /etc/rc.local

Die Datei wird so editiert, dass die letzten Zeilen wie folgt aussehen:

/home/BENUTZERNAME/cloudUpdate.sh
exit 0

Am Ende muss die Datei nur noch gespeichert werden.

Jetzt sollte mit jedem Systemstart die Synchronisation im Hintergrund gestartet werden.

Vorteil dieser Cloud-Lösung

Diese „Mini-Cloud“ bietet einige Vorteile:

  • Es sind keine zusätzlichen Registrierungen oder Bestellungen notwendig.
  • Es werden nur die Dateien übertragen, die sich tatsächlich geändert haben.
  • Das Skript arbeitet unauffällig im Hintergrund.

Wenige Handgriffe und schon haben wir eine eigene Synchronisations- und Backup-Lösung auf unserem Linux-Rechner eingerichtet.

2 Gedanken zu „Ordner mit FTP-Server synchronisieren“

  1. Hi!

    Sollte in Zeile 13 nicht folgendes stehen $PCFOLDER?
    Mir ist aufgefallen das Dateien die nicht geändert worden sind, auch gelöscht und neu erstellt werden. Ist das so gewollt?

    1. Hallo Michael,

      danke für den Hinweis. Ich habe den Artikel aktualisiert.

      Du kannst natürlich die Parameter, wie z.B. „–delete“ anpassen, um das Verhalten diesbezüglich zu verändern.

      Beste Grüße
      Tristan