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


@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

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/

0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.