Несколько раз в год мне нужно передавать большие файлы (20+ ГБ) через Интернет (задержка 20–100 мс), но с достаточно быстрыми соединениями порядка 1 Гбит / с между серверами. К сожалению, когда я использую rsync для этого, у него возникают всевозможные проблемы и постоянно не удается заполнить соединение, используя все это только на доли секунды за раз и часто не используя ни одного (<1 Мбит / с, возможно, ноль) в течение нескольких минут. под конец. Ни мой жесткий диск, ни процессор на обоих концах не закреплены при 100% использовании, поэтому ни один из них не может быть узким местом. SCP ведет себя точно так же.
Тесты скорости, однако, полностью насыщают мое соединение на время теста (много дольше, чем может rsync). Я могу добиться некоторого успеха, используя HTTP через Cloudflare с многопоточным загрузчиком (aria2c), но он все равно не насыщает мое соединение - он просто не дает ему приблизиться к нулю. Интересно, что aria2c также не загружает мое соединение, когда я не прохожу через Cloudflare.
В моем исследовании, прежде чем задавать этот вопрос, кажется, что окно TCP может иметь какое-то отношение к этому, но у меня нет надлежащего понимания того, что это такое, и я не знаю, как его изменить (единственная информация, которую я могу найти в Интернете находится в контексте тестов скорости, где тест скорости имеет флаг командной строки, но ни rsync, ни SCP не имеют таких флагов, задокументированных на их страницах руководства). Однако это бесполезно, так как я не знаю, как использовать эти знания, чтобы исправить свою скорость загрузки.
Поэтому я спрашиваю, как я могу без труда (например, без возни с пользовательской компиляцией или оплаты проприетарных продуктов), как я могу сейчас с помощью rsync, scp или http (через nginx), насыщать свои быстрые соединения для массовой передачи файлов? Идеальный ответ даст мне набор флагов rsync, которые я могу использовать для полного решения этой проблемы. Возможно, более реалистичным ответом, который все же был бы полезен, была бы конкретная стандартная утилита Linux, которая может выполнять то, что я хочу, без значительных настроек. Я уверен, что такое существует, так как уверен, что я не единственный, кому нужно передавать большие файлы через Интернет.
С помощью lftp
Мне удалось запустить мое соединение на полную мощность (900 Мбит / с), вам нужно что-то вроде этого - lftp -e 'mirror --parallel=10 --use-pget-n=10 /var/vtemp /var/vtemp' sftp://root@XX.XX.XX.XX
. Единственная проблема, с которой я столкнулся, заключалась в том, что пропускная способность снизилась после нескольких часов работы.