Как заставить 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
rijndael-cbc@lysator.liu.se
aes128-ctr
aes192-ctr
aes256-ctr
aes128-gcm@openssh.com
aes256-gcm@openssh.com
chacha20-poly1305@openssh.com
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 возможность исследовать последствия любых изменений, которые вы делаете. Экспериментально вы заметите, что разные данные будут иметь разные коэффициенты сжатия.

Другие вопросы по тегам