Я часто использую rsync
на ноутбуке на базе OSX для синхронизации некоторых файлов с него на сервер Linux. Ноутбук может быть подключен к разным сетям с разной пропускной способностью (офисный Ethernet, Wi-Fi, 3G и т. Д.). --bwlimit=Kbps
Опция позволяет управлять полосой пропускания, используемой в пользовательском пространстве, путем указания жесткого (ну, примерно жесткого) ограничения для самого rsync. Однако он выражается в Кбит / с, что затрудняет использование в автоматизированных сценариях, которые используются в различных сетях, например в тех, к которым подключается ноутбук.
Есть ли способ указать rsync использовать процент от пропускной способности, а не предел, выраженный в K? В качестве альтернативы, могу ли я легко вычислить это значение динамически или обернуть rsync скриптом для этого?
Мне бы хотелось, чтобы решение работало на OS X или на Linux, в идеале на обоих.
Заметка: Я бы хотел избежать решений, связанных с жестким формированием трафика с помощью межсетевого экрана и т.п. Приблизительные или оценочные значения предела допустимы.
Предполагая, что у вас есть Python, вы можете изменить speedtest-cli чтобы изменить его распечатанные результаты, или импортируйте его как модуль в свою программу и используйте возвращаемые значения его downloadSpeed()
функция. Как есть, можно получить:
$ ./speedtest-cli --simple
Ping: 375.668 ms
Download: 66.36 Mbit/s
Upload: 41.05 Mbit/s