Für eine einzelne Datei anstelle von SFTP können Sie die Datei mit cat
oder pv
auf der sendenden Seite über ssh leiten und tee
auf dem mittleren Server die Daten an eine Datei dort senden und eine Kopie über den anderen ssh-Link senden, dessen andere Seite schreibt einfach die Daten in eine Datei. Das genaue Voodoo werde ich als Übung für den Leser hinterlassen, da ich gerade keine Zeit zum Spielen habe (sorry). Diese Methode funktioniert nur, wenn das zweite Ziel über SSH öffentlich zugänglich ist. Dies ist möglicherweise nicht der Fall, da Sie es als Client-Computer bezeichnen.
Bei einem anderen Ansatz, der weniger "Ausführen und Warten" erfordert, ansonsten jedoch einfacher ist, kann er rsync
zwischen Server und Client B verwendet werden. Wenn Sie ihn zum ersten Mal ausführen, wird möglicherweise eine teilweise Kopie der Daten abgerufen, Sie können ihn jedoch erneut ausführen um danach mehr Daten zu erhalten (mit einem letzten Lauf, sobald die Client1-> Server-Übertragung abgeschlossen ist). Dies funktioniert nur, wenn der Server die Daten während der SFTP-Übertragung direkt in den richtigen Dateinamen schreibt (manchmal werden die Daten in eine temporäre Datei geschrieben, die dann umbenannt wird, sobald die Datei vollständig übertragen wurde Dateiaktualisierung ist atomarer, macht aber die rsync-Idee unbrauchbar). Sie können anstelle von scp auch rsync für die C1-> S-Übertragung verwenden (wenn Sie das verwenden)--inplace
Option, um das oben erwähnte Problem zu vermeiden) - Die Verwendung von rsync schützt Sie auch davor, alles erneut senden zu müssen, wenn bei der C1-> Server-Verbindung während einer großen Übertragung Probleme auftreten (ich verwende rsync --inplace -a --progress <source> <dest>
statt scp / sftp, wenn rsync verfügbar ist, z dieses "Übertragungswiederaufnahme" -Verhalten).
Um das Obige zusammenzufassen:
rsync --inplace -a --progress <source> user@server:/<destination_file_or_folder>
auf client1 läuft dann
rsync --inplace -a --progress user@server:/<destination_file_or_folder> <destination_on_cli2>
auf client2 wiederholt, bis die erste Übertragung abgeschlossen ist (und dann erneut ausgeführt wird, um sicherzustellen, dass Sie alles haben). rsync
ist sehr gut darin, nur das absolute Minimum zu übertragen, das zum Aktualisieren eines Standorts erforderlich ist, anstatt jedes Mal das gesamte Los zu übertragen. Für Paranoia möchten Sie vielleicht die hinzuzufügen --checksum
Option zu den rsync - Befehle (die viel CPU - Zeit für große Dateien dauern wird , aber nicht wesentlich mehr Daten führen zu übertragen, es sei denn es ist erforderlich) für die Geschwindigkeit der --compress
wird Option , wenn die Daten helfen Sie übertragen, ist noch nicht in einem komprimierten Format.