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.