Как ускорить работу SCP?

Как ускорить работу SCP?

Я использую следующую команду для передачи файлов по домашней сети (когда мне нужно передать много файлов, я обычно архивирую их с помощью этой tarутилиты):

scp -c blowfish [FILE] [USER]@[ADDRESS]:[PATH]

Отправка 500 Мб данных на другой компьютер занимает около 25 минут. Средняя скорость составляет около 600 КБ/с. Я думаю, что должен быть способ ускорить этот процесс, потому что я не верю, что смогу спокойно вытащить файл размером 1 Гб из Интернета менее чем за 10 минут, но я не могу отправить файл размером 500 Мб по сети быстрее, чем за это время.

решение1

Две идеи:

  1. Экспериментируйте с другим шифром
  2. Используйте сжатие «на лету»

1. Поэкспериментируйте с другим шифром:

Одна из идей — протестировать различные шифры, доступные через , scpи попытаться определить, какой из них является для вас самым быстрым. (Идея заключается в том, что именно шифрование ваших данных отнимает время.) Найдите доступные шифры, выполнив следующее:

andrew@athens:~$ ssh -Q cipher
3des-cbc
blowfish-cbc
cast128-cbc
arcfour
arcfour128
arcfour256
aes128-cbc
aes192-cbc
aes256-cbc
[email protected]
aes128-ctr
aes192-ctr
aes256-ctr
[email protected]
[email protected]
[email protected]
andrew@athens:~$ 

Здесь показаны доступные шифры в установке Xenial Xerus по умолчанию, которые можно добавить, используя предложенный вами синтаксис:

scp -c <cipher> [FILE] [USER]@[ADDRESS]:[PATH]

Эта опция передается напрямую, sshследовательно, тестируя sshсебя на наличие доступных шифров. Надеюсь, вы сможете найти шифр, который позволит увеличить скорость передачи данных, когда вы найдете этот шифр, вы сможете поместить его ~/.ssh/configвместо того, чтобы вводить его каждый раз...

2. Используйте сжатие «на лету»:

scpможет сжимать ваши передачи «на лету», что означает, что сжатие используется только во время передачи и не будет видно ни на хосте, ни на удаленных концах. Добавьте это, используя опцию -C:

scp -c <cipher> -C [FILE] [USER]@[ADDRESS]:[PATH]

Вот пример моей собственной системы:

debug1: compress outgoing: raw data 365865, compressed 150118, factor 0.41
debug1: compress incoming: raw data 150118, compressed 365865, factor 2.44

Уровень сжатия такой же, как и используемый для , gzipи если вы действительно хотите поэкспериментировать, вы можете использовать опцию 'CompressionLevel', которая варьируется от 1 до 9, где 1 — самое быстрое сжатие, 9 — самое медленное с наилучшим сжатием, а 6 — значение по умолчанию. Это можно установить ~/.ssh/configследующим образом:

Host *
Compression yes
CompressionLevel 9

Имейте в виду, что это устанавливает высокую степень сжатия длявсе scp / sshпередачи, его можно настроить для отдельных хостов, если вы хотите...

Используйте эту -vопцию для исследования эффектов любых внесенных вами изменений. Экспериментируя, вы заметите, что разные данные будут иметь разные коэффициенты сжатия.

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