Вопрос или проблема
Некоторые программы для скачивания, такие как aria2c, lftp или jdownloader, могут загружать отдельный файл с помощью нескольких подключений, что в большинстве случаев значительно ускоряет процесс скачивания. Я ищу аналогичное решение, чтобы скопировать единичный файл в новое место. Я нашел программы/обертки, такие как parsync и msrsync, но с ними у меня такая же скорость, как и с rsync. Разве msrsync и parsync не предназначены для работы с одним файлом? Существуют ли другие способы или программы, которые могут помочь мне в этом вопросе?
Ответ или решение
Скопировать отдельный файл с использованием нескольких соединений может быть сложной задачей, так как большинство инструментов для копирования файлов, таких как rsync
и другие, работают по принципу однопоточной передачи. Однако существуют некоторые инструменты и стратегии, которые могут помочь вам достичь этой цели, используя многопоточность.
-
aria2: Это мощный инструмент для скачивания файлов, который поддерживает многопоточную загрузку. Вы можете использовать его для копирования файла с удаленного сервера, если у вас есть доступ к HTTP, FTP или SFTP. Пример команды:
aria2c -x 16 -s 16 <URL_файла>
Здесь опции
-x
и-s
указывают количество подключений для загрузки файла. -
lftp: Хотя он более известен как FTP/SFTP клиент,
lftp
также поддерживает многопоточную загрузку. Команда с использованиемlftp
может выглядеть так:lftp -e "pget -n 16 <URL_файла>; bye" <FTP_сервер>
Опция
-n
указывает количество параллельных соединений для загрузки. -
GNU Parallel: Если у вас есть доступ к файлу на локальной машине и вам нужно просто его скопировать, вы можете использовать
GNU Parallel
для передачи файла по частям. Но это требует немного больше подготовки и настройки:split -b 1M <имя_файла> части_ parallel --pipe --block 1M cp {} <папка_назначения> ::: части_* cat части_* > <папка_назначения>/<имя_файла>
Этот подход делит файл на несколько частей, копирует их параллельно, а затем объединяет их.
-
msrsync и parsync: Эти утилиты действительно могут не давать значительного прироста скорости при копировании одного файла. Они в основном оптимизируют синхронизацию данных и могут не поддерживать параллельное копирование для отдельных файлов.
Таким образом, если ваша цель — увеличить скорость копирования одного файла с использованием нескольких соединений, рассмотрите возможность применения aria2
или lftp
, в зависимости от доступного протокола (HTTP, FTP и т. д.).
Имейте в виду, что при использовании этих инструментов всегда необходимо учитывать сетевые ограничения и возможности целевой системы, чтобы повысить эффективность и избегать перегрузки сервера.