Можно ли ограничить скорость передачи scp / sftp / rsync / etc из командной строки? то есть ручное QoS по одной команде?

10

В частности, я хочу ограничить скорость scpили sftpсеанс (или другой произвольный сетевой вызов) в самом вызове .

Например, допустим, я хочу скопировать 100 МБ на один сервер и 1 ГБ на другой. Я хотел бы иметь возможность запускать оба из них одновременно, но поддерживать QoS для «нормального» использования компьютера - что-то вроде того, как вы можете ограничить скорость bittorrent.

Есть ли способ сделать это, не касаясь сетевого оборудования?

Я предполагаю что-то похожее на:

magic-qos-tool 'scp file user@host:/path/to/file'

Или..

scp -rate 40kbps file user@host:/path/to/file
кроличий садок
источник

Ответы:

12

Да, есть приложение, которое работает точно так же, как ваш «magic-qos-tool», называемое « струйка ».

EXAMPLES
     trickle -u 10 -d 20 ncftp

     Launch ncftp(1) limiting its upload capacity to 10 KB/s, and download ca-
     pacity at 20 KB/s.
Davr
источник
1
спасибо, @davr - один инструмент-обертка против изучения всех опций - большое улучшение :)
Уоррен
16

scp имеет -lи rsync имеет --bwlimit.

Игнасио Васкес-Абрамс
источник
это не было вариантом на manстранице, которую я проверял ранее ... похоже, это зависит от платформы, возможно?
Уоррен
Вполне возможно. У меня OpenSSH 5.3p1 здесь.
Игнасио Васкес-Абрамс
XenServer 6 имеет SCP с опцией -l
Брайан Боатрайт
Флаг -l в scp не работает на Solaris 11. Есть ли другой вариант или альтернатива?
Алхимик
7

Rsync делает это проще для вас, у него есть возможность сделать это: --bwlimit=KBPS

kbyrd
источник
2

sftp имеет флаг дроссельной заслонки, начиная с Debian 7 и Ubuntu 12.04 в этих дистрибутивах:

-l limit

    Ограничивает используемую пропускную способность, указанную в Кбит / с.

(Конечно, это строчные буквы L.)

Источник: stfp(1)

Том Люксфорд
источник