
Я использую следующую команду для передачи файлов по домашней сети (когда мне нужно передать много файлов, я обычно архивирую их с помощью этой tar
утилиты):
scp -c blowfish [FILE] [USER]@[ADDRESS]:[PATH]
Отправка 500 Мб данных на другой компьютер занимает около 25 минут. Средняя скорость составляет около 600 КБ/с. Я думаю, что должен быть способ ускорить этот процесс, потому что я не верю, что смогу спокойно вытащить файл размером 1 Гб из Интернета менее чем за 10 минут, но я не могу отправить файл размером 500 Мб по сети быстрее, чем за это время.
решение1
Две идеи:
- Экспериментируйте с другим шифром
- Используйте сжатие «на лету»
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
опцию для исследования эффектов любых внесенных вами изменений. Экспериментируя, вы заметите, что разные данные будут иметь разные коэффициенты сжатия.