Rsync --bwlimit не работает

12

В настоящее время я использую rsync для передачи большого файла с хоста на другой. Я хотел бы ограничить дебет для этого перевода. После прочтения справочной страницы я нашел параметр --bwlimit, который ожидает значение в КБ / с.

Я хочу ограничить передачу около 100 Мбит / с, поэтому я использовал следующие настройки:

rsync --progress -v --bwlimit=10000 --temp-dir=/tmp srv:/tmp/* /tmp/

Но это, кажется, не соблюдается согласно выводу rsync:

file.sql.gz
   570851702 100%   33.90MB/s    0:00:16 (xfer#5, to-check=34/39)
file.sql.gz
    11195140 100%    7.45MB/s    0:00:01 (xfer#6, to-check=33/39)
file.sql.gz
    51439169 100%   19.41MB/s    0:00:02 (xfer#7, to-check=32/39)
file.sql.gz
       34022 100%    1.55MB/s    0:00:00 (xfer#8, to-check=31/39)
file.sql.gz
     2305698 100%    6.96MB/s    0:00:00 (xfer#9, to-check=30/39)
file.sql.gz
     2152942 100%    2.73MB/s    0:00:00 (xfer#10, to-check=29/39)
file.sql.gz
    86655633 100%   19.33MB/s    0:00:04 (xfer#11, to-check=28/39)
file.sql.gz
  3614476032  40%   34.82MB/s    0:02:28

Если я не ошибаюсь: 19,33 МБ / с ~ = 154 Мбит / с

Так что здесь не так?

PS: протокол rsync версии 3.0.6, версия 30

Спасибо за вашу помощь !

Хьюго
источник
Здесь он работает с rsync 3.0.4 (Ubuntu), 3.0.6 (openSUSE) и 3.0.9 (Ubuntu), используя те же параметры. Вы должны предоставить больше информации о вашей системе.
Scai
Это помогает? stackoverflow.com/questions/10064316/…
mreithub
@mreithub Ответ в этом посте действительно интересный, но на самом деле Хьюго, кажется, передает довольно большие файлы.
Scai
rsync bwlimits для каждого файла, чтобы ограничить bw, вы должны ограничить соединение (в linux используется iptables + tc atmail.com/kb/2009/throttling-bandwidth ), так что это нелегкий путь.
ЗБ
Здравствуйте, я использую RHEL 6, но это не имеет большого значения. Да, это большой файл, поэтому дебет должен быть почти стабильным. Для информации отлично работает эквивалентная команда с SCP. Так что я не знаю, что не так с rsync.
Hugo

Ответы:

10

Я думаю, что вы испытали некоторое "взрыв", как упомянуто на странице руководства:

--bwlimit=RATE
          ... 
          Some "burstiness" may be seen where rsync writes out a block 
          of data and then sleeps to bring the average rate into compliance.

Поэтому, как я и просил, общий коэффициент по окончании вашей работы, наконец, был ограничен 10 млн.


источник
4

Как упомянуто в справочной странице по rsync , оно передается в килобайтах в секунду:

--bwlimit=KBPS          limit I/O bandwidth; KBytes per second
shgnInc
источник
2
Вот что я использовал: 10 000 килобайт = 78,12500 мегабит
Хьюго
2
Ты не обратил внимания на то, что я сказал. Rsync использует байт вместо бита , поэтому вы должны вычислить пропускную способность в битах и
преобразовать
У меня те же проблемы, когда я ставлю --bwlimit=100, я получаю 275 кБ / с, очень регулярно между 265-285 кБ / с, без разрывов. Что здесь не так?
Brethlosze
2

Я хочу ограничить скорость передачи около 100 Мбит / с, поэтому я использовал следующие настройки:

rsync --progress -v --bwlimit=10000 --temp-dir=/tmp srv:/tmp/* /tmp/

100 Мбит / с - это (приблизительно) 10 МБ / с, что на самом деле составляет 10000 КБ / с. Если вы rsyncнажмете на разрыв, возможно, вам поможет отдельный инструмент trickle:

trickle -s -d 10000 -u 10000 -t 10 -l 100 rsync --progress -v --temp-dir=/tmp srv:/tmp/* /tmp/
roaima
источник
0

Показанное значение представляет собой эффективную скорость передачи, которая включает в себя ускорение от сжатия и дельта-алгоритм, это можно легко увидеть, увидев большие числа, если прерванный rsyncсеанс перезапускается с включенной частичной передачей (например --append-verify).

Даниэль Соколовский
источник