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.