Как загрузить один большой файл через sftp или http и т. д., используя несколько одновременных подключений

Как загрузить один большой файл через sftp или http и т. д., используя несколько одновременных подключений

Существует ли инструмент командной строки, который поддерживает как несколько одновременных подключений, так и несколько сетевых протоколов (ftp, http и т. д.)?

Вот практический пример:

У меня есть большой файл резервной копии на сервере ssh, который я хочу перенести на свою текущую машину. Загрузка файла занимает слишком много времени, поэтому я хочу использовать несколько одновременных сетевых подключений, чтобы ускорить ее. Предположим, что сервер ssh не сильно загружен.

Загрузкинесколько файлов/URL-адресовс использованием одновременных подключенийне имеет значенияна этот вопрос.

Я не хочу писать код, чтобы решить эту проблему.

решение1

Theфтппрограмма может обрабатывать как несколько сетевых протоколов, так и одновременные соединения.

Поддержка протокола:

Lftp поддерживает следующие протоколы:

  • фтп
  • sftp
  • http и https
  • битторрент

Дополнительная информация о ftps и т.д.здесь.

Параллельные загрузки:

Чтобы загрузить один большой файл, расположенный по адресу, <URI>используя 2 одновременных подключения:

lftp -c "pget -c -n 2 <URI>"

Первая -cопция указывает команду(ы) для запуска. pgetустанавливает передачу файла с использованием нескольких параллельных подключений. Вторая -cопция означает продолжение передачи, если эта передача ранее была прервана. Опция -nограничивает максимальное количество используемых подключений.

Более подробную информацию о командах и опциях можно найти в онлайн-версиистраница руководства.

Предупреждение:Это может ускорить передачу, но сильно нагружает сеть и серверы. Ускорение зависит от состояния сети и сервера.

Рассмотрим практический пример в вопросе:

lftp -c "pget -c -n 2 sftp://[email protected]/~/backups/large.tar.gz"

Этот пример загружает большой файл резервной копии через ssh (sftp) с 2 одновременными подключениями. Предполагается, что у вас есть настройка входа по ssh без пароля.

Примечание: Lftp также можно использовать в интерактивном режиме, аналогично другим командам FTP.

решение2

aria2поддерживает множественные соединения и FTP, HTTP и SFTP (множество других).

Например:

aria2c -j ${num_concurrent} "${uri}"

Я хочу использовать несколько одновременных сетевых подключений для ускорения.

Если сервер не настроен на ограничение отдельных подключений, запуск нескольких параллельных загрузок может не дать никаких преимуществ... на самом деле, это может отрицательно повлиять на вашу пропускную способность.

Использование стандартных инструментов (например: rsync, scp, curl) позволиттипичнодать вам то, что вы ищете.

Если возникают проблемы с разрывами соединений/частичным переносом данных, то такая утилита может оказаться полезной, но учтите, что это rsync --partialтоже поможет.

Связанный контент