如何使用bwlimit选项从所有带宽中设置rsync速度限制
时间:2020-01-09 10:39:42 来源:igfitidea点击:
rsync命令从备份脚本中消耗了我所有的带宽,并产生了大量的I/O。
如何在Linux或类似Unix的系统上设置rsync命令的文件传输速度限制?
如何防止我的rsync脚本使用所有带宽?
rsync是一个免费的开源命令行实用程序,用于在计算机和硬盘驱动器之间高效地传输和同步文件。
它还和跨网络的机器。
您可以使用--bwlimit选项轻松限制I/O带宽。
在本教程中,您将学习如何在Linux,MacOS,FreeBSD和类似Unix的系统上使用rsync命令设置I/O限制。
在Linux和类似Unix的系统上设置rsync速度限制
- 打开Linux,Unix或macOS终端
- 您可以通过在NA命令中执行
--bwlimit = RATE
选项来指定通过套接字或网络发送的数据的最大传输速率。 - 将rsync带宽限制设置为每秒5000 Kbytes:
rsync --bwlimit = 5000 source dest
如何防止rsync命令使用我的所有带宽
语法为:
rsync --bwlimit=KBPS src dst rsync --bwlimit=KBPS [options] src dst rsync --bwlimit=KBPS [options] src user@dst rsync --bwlimit=KBPS [options] user@src /path/to/dir rsync --bwlimit=KBPS -a -P /path/to/dir/ [email protected]
例子
您将I/O限制设置为每秒1000 KB:
$ rsync --bwlimit=1000 /path/to/source /path/to/dest/ $ rsync --bwlimit=1000 /var/www/html/ \ [email protected]:~/mysite.backups/
在此示例中,从FreeNAS服务器中以当前目录5000KB/s的速度提取文件:
$ rsync --bwlimit=5000 --delete -P -az -H --numeric-ids \ [email protected]:linode-www .
rsync选项
在rsync手册页上:--bwlimit = KBPS选项允许您指定最大传输速率。
RATE值可以在字符串后缀以表示大小乘数,并且可以是小数值(例如bwlimit = 1.5m)。
如果未指定后缀,则假定该值以1024字节为单位。
出于向后兼容的原因,速率限制将四舍五入到最接近的KiB单位,因此速率不能小于每秒1024字节。
Rsync通过套接字以块为单位写入数据,此选项既限制了rsync写入的块的大小,又试图将平均传输速率保持在请求的限制。
在rsync写入数据块然后休眠以使平均速率达到合规性时,可能会看到一些突发性。
ionice
使用ionice命令设置或获取程序(例如rsync或您自己的备份脚本)的I/O调度类和优先级。
因此,您可以使用Linux上的ionice实用程序控制I/O带宽,如下所示:
/usr/bin/ionice -c2 -n7 /root/scripts/nas.backup.full
或者
/usr/bin/ionice -c2 -n7 rsync \ -bwlimit=1000 /path/to/source /path/to/dest/
其中:
- -c或--class {class}:调度类的名称或编号,0:无,1:实时,2:尽力而为,3:空闲。
- -n或--classdata {num}`:指定的调度类中的优先级(0..7),仅用于实时类和尽力而为类
如何通过trick流命令选项限制rsync速度
另一个选择是使用细流,它是一个用户空间带宽管理器。
语法为:
trickle -u uploadLimit program trickle -d downloadLimit rsync trickle -u {UPLOAD_LIMIT} -d {DOWNLOAD_LIMIT} program-binary
例如,
trickle -s -d 3000 -u 3000 rsync /path/to/source/ /dest/ trickle -s -d 3000 -u 3000 rsync -avr /var/www/html/ [email protected]/var/www/html/