W przypadku pojedynczego pliku zamiast SFTP można przesyłać plik przez ssh za pomocą catlub pvpo stronie wysyłającej i za pomocą teena środkowym serwerze, aby zarówno wysłać dane do pliku tam, jak i wysłać kopię przez inny link ssh, po drugiej stronie po prostu zapisuje dane do pliku. Dokładne wymagane voodoo pozostawię jako ćwiczenie dla czytelnika, ponieważ nie mam teraz czasu na zabawę (przepraszam). Ta metoda działałaby tylko wtedy, gdy drugie miejsce docelowe jest publicznie dostępne za pośrednictwem protokołu SSH, co może nie być prawdą, ponieważ opisuje się je jako maszynę klienta.
Innym podejściem, które jest mniej „uruchom i czekaj”, ale może być łatwiejsze, jest użycie rsyncmiędzy serwerem a klientem B. Przy pierwszym uruchomieniu może on otrzymać częściową kopię danych, ale możesz po prostu ponownie uruchomić aby później uzyskać więcej danych (z jednym końcowym uruchomieniem po zakończeniu transferu Klient1-> Serwer). Będzie to działać tylko wtedy, gdy serwer umieści dane bezpośrednio we właściwej nazwie pliku podczas przesyłania SFTP (czasami zobaczysz, że dane przechodzą do pliku tymczasowego, którego nazwa zostaje zmieniona po całkowitym przesłaniu pliku - odbywa się to w celu aktualizacja pliku bardziej atomowa, ale sprawi, że pomysł rsync będzie bezużyteczny). Możesz także użyć rsync do transferu C1-> S zamiast scp (jeśli używasz--inplaceopcja uniknięcia wyżej wspomnianego problemu) - użycie rsync zapewniłoby również ochronę przed koniecznością ponownego wysyłania wszystkiego, jeśli połączenie C1-> Serwer napotka problemy podczas dużego transferu (zwykle używam rsync --inplace -a --progress <source> <dest>zamiast scp / sftp, gdy rsync jest dostępny, dla takie zachowanie „wznawianie przesyłania”).
Podsumowując powyższe, uruchom:
rsync --inplace -a --progress <source> user@server:/<destination_file_or_folder>
na kliencie1, a następnie uruchomiony
rsync --inplace -a --progress user@server:/<destination_file_or_folder> <destination_on_cli2>
na kliencie2 wielokrotnie, aż pierwszy transfer zostanie zakończony (następnie uruchom ponownie, aby upewnić się, że masz wszystko). rsyncjest bardzo dobry w przenoszeniu tylko absolutnego minimum, musi zaktualizować lokalizację zamiast przesyłać całą partię za każdym razem. W przypadku paranoi możesz chcieć dodać tę --checksumopcję do poleceń rsync (co zajmie znacznie więcej czasu procesora w przypadku dużych plików, ale nie spowoduje przeniesienia znacznie większej ilości danych, chyba że jest to potrzebne), a dla szybkości --compressopcja pomoże, jeśli dane przesyłane dane nie są już w formacie skompresowanym.