Для одного файлу замість використання SFTP ви можете передавати файл через ssh за допомогою catабо pvна стороні, що надсилає, і teeна середньому сервері обидва надсилати дані до файлу туди і надсилати копію через інше ssh-посилання, з іншого боку якого просто записує дані у файл. Точний вуду, який я вимагаю, я залишу читачеві як вправу, оскільки зараз не встигаю грати (вибачте). Цей метод працює лише в тому випадку, якщо друге призначення є загальнодоступним через SSH, що може бути не так, як ви описуєте його як клієнтську машину.
Інший підхід, який менш "запустити і чекати", але в іншому випадку може бути простішим, його використовувати rsyncміж сервером і клієнтом B. Перший раз, коли ви запустите це, він може отримати часткову копію даних, але ви можете просто повторно запустити його, щоб отримати більше даних після цього (з одним остаточним запуском після завершення передачі Client1-> Server). Це буде працювати лише в тому випадку, якщо сервер під час передачі SFTP передає дані прямо у правильне ім'я файлу (іноді ви побачите дані, що переходять у тимчасовий файл, який потім перейменовують, коли файл повністю передається - це робиться для того, щоб зробити оновлення файлів більш атомне, але зробить ідею rsync непридатною). Ви також можете використовувати rsync для передачі C1-> S замість scp (якщо ви використовуєте--inplaceваріант уникнути згаданої вище проблеми) - використання rsync також захистить вас від необхідності повторного повторного повторного використання, якщо підключення C1-> сервера має проблеми під час великої передачі (я, як правило, використовую rsync --inplace -a --progress <source> <dest>замість scp / sftp, коли rsync доступний, для ця поведінка "передачі резюме").
Підсумовуючи сказане, виконуючи:
rsync --inplace -a --progress <source> user@server:/<destination_file_or_folder>
на client1, потім працює
rsync --inplace -a --progress user@server:/<destination_file_or_folder> <destination_on_cli2>
на client2 кілька разів, поки перша передача не буде завершена (потім ще раз запустіть, щоб переконатися, що у вас все). rsyncдуже добре лише передавати абсолютний мінімум, який потрібно оновлювати місце, а не передавати весь лот кожен раз. Для параноїя ви, можливо, захочете додати --checksumпараметр до команд rsync (це займе набагато більше часу для процесора для великих файлів, але не призведе до значного перенесення даних, якщо це не потрібно), а для швидкості --compressопція допоможе, якщо дані ви переносите вже не у стисненому форматі.