Wer vor der Herausforderung steht, Daten zwischen zwei Linux Systemen über Internet auszutauschen und keine Board-Mittel zur Verfügung hat, dem sei diese Anleitung empfohlen.

Dabei wenden wir uns zwei Methoden zu, deren Vorteile hier jeweils an einem Beispiel beschrieben werden.

Voraussetzung wie in diesem Beispiel:

  • Linux und entsprechende Grund-Kenntnisse
  • Hinweis zu den Beispielen: Site1 ist immer Quelle, Site2 das Ziel/Senke

LFTP – load balanced FTP Stream

Mit lftp apt install lftp trickle und dem kombinierten trickeld command, ist es möglich, eine Verbindung zwischen zwei FTP-Servern einerseits herzustellen, als auch die Bandbreite zu limitieren, sowie ein Verzeichnis zu spiegeln.

lftp Beispiel #1 – FTP-Spiegel zu FTP

Folgendes Script verbindet zwei FTP-Server ohne Zertifikatsprüfung an einem beliebigen Linux (Ubuntu) host und führt einen Verzeichnisspiegel mit einer Bandbreitbreitenlimitierung von 5MBit/s aus und überschreibt nur ältere Dateien:

FTP_SITE1=”ftp:/Benutzer:Passwort@Server/”
FTP_SITE2=”ftp://Benutzer: Passwort@Server/”

BANDWIDTH_LIMIT=”625″

trickle -d $BANDWIDTH_LIMIT lftp -e “set ssl:verify-certificate no; open $FTP_SITE1; mirror –dereference –continue –verbose –only-newer / $FTP_SITE2”

getintogame.de

Erstellen tut man das Script zum Beispiel mit dem Editor:

nano mirror_ftp2ftp.sh

Ausführbar machen:

chmod +x mirror_ftp2ftp.sh

Ausführen:

./mirror_ftp2ftp.sh

lftp Beispiel #2 – FTP-Spiegel zu LOKAL

FTP_SITE1=”ftp://Benutzer: Passwort@Server/”
LOCAL_SITE2=”/Verzeichnis/”

BANDWIDTH_LIMIT=”625″

trickle -d $BANDWIDTH_LIMIT lftp -e “set ssl:verify-certificate no; open $FTP_SITE1; mirror –dereference –continue –verbose / $LOCAL_SITE2”

getintogame.de

RSYNC – Stream mit Datenreduktion dank Datei-Fragmentiertem Änderungsvergleich.

Nur mit rsync apt install rsync curllftps kann man zwar keinen load balanced Stream realisieren, jedoch hat rsync bei einem Spiegel den Vorteil, dass es nur Dateifragmente auf Änderungen vergleicht und auch nur diese Datenteile überträgt.

rsync – Beispiel #: FTP-Spiegel zu LOKAL

Folgendes Script nimmt Variablen für die Verbindung an einen FTP-Server an, definiert das lokale Ziel, mounted den FTP persistent und synchronisiert die abhängigen Verzeichnisse miteinander.

FTP_HOST=”Server
FTP_USER=”Benutzer
FTP_PASS=”Passwort
REMOTE_DIR=”/Verzeichnis/”
LOCAL_DIR=”/Verzeichnis/”
MOUNT_POINT=”/mnt/ftp”

mkdir -p $MOUNT_POINT

curlftpfs $FTP_USER:$FTP_PASS@$FTP_HOST $MOUNT_POINT

rsync -av –delete $MOUNT_POINT/$REMOTE_DIR $LOCAL_DIR

getintogame.de

Erstellen tut man das Script zum Beispiel mit dem Editor:

nano rsync_ftp2local.sh

Ausführbar machen:

chmod +x rsync_ftp2local.sh

Ausführen:

./rsync_ftp2local.sh

Am Ende hängt die Entscheidung für die jeweilige Nutzung der vorgeschlagenen Scripte auf Basis von rsync, oder lftp vom Anwendungsfall ab.

Will man etwa einen Datenstream per .csv-Datei für einen Broker-Server realisieren ist die Fragmentierte Übertragung von rsync eine attraktive Option.

Will man dagegen einen beständigen Stream für die Datenkopie eines Live-Servers realisieren, ohne dessen Festspeicher und weitere Ressourcen unnötig zu strapazieren, ist lftp womöglich die bessere Wahl. Es sein denn, man kann sich einen load balancing-server leisten.