How to set rsync speed limit from eating all bandwidth with –bwlimit option

The rsync command is eating all my bandwidth from a backup script and generating tons of I/O. How do I set a limit for file transfer speed of rsync command on Linux or Unix-like system? How can I keep my rsync script from using all of my bandwidth?

You can easily limit I/O bandwidth using --bwlimit option. In this tutorial you will learn how to setup I/O limit using rsync command on Linux, MacOS, FreeBSD and Unix-like systems.

Adblock detected 😱
My website is made possible by displaying online advertisements to my visitors. I get it! Ads are annoying but they help keep this website running. It is hard to keep the site running and producing new content when so many people block ads. Please consider donating money to the nixCraft via PayPal/Bitcoin, or become a supporter using Patreon.

How to keep rsync command from using all of my bandwidth

The syntax is:
rsync --bwlimit=KBPS src dst
rsync --bwlimit=KBPS [options] src dst
rsync --bwlimit=KBPS [options] src [email protected]
rsync --bwlimit=KBPS [options] [email protected] /path/to/dir
rsync --bwlimit=KBPS -a -P /path/to/dir/ [email protected]

You set I/O limit in 1000 KBytes per second:
$ rsync --bwlimit=1000 /path/to/source /path/to/dest/
$ rsync --bwlimit=1000 /var/www/html/
[email protected]:~/mysite.backups/

In this example, pull files from FreeNAS server with 5000KB/s in current directory:
$ rsync --bwlimit=5000 --delete -P -az -H --numeric-ids
[email protected]:linode-www .

Say hello to ionice

Use ionice command to set or get the I/O scheduling class and priority for a program such as rsync or your own backup script. So you can take control of I/O bandwidth using ionice utility on Linux as follows:
# /usr/bin/ionice -c2 -n7 /root/scripts/nas.backup.full
# /usr/bin/ionice -c2 -n7 rsync
-bwlimit=1000 /path/to/source /path/to/dest/


  1. -c or --class {class} : Name or number of scheduling class, 0: none, 1: realtime, 2: best-effort, 3: idle.
  2. -n or --classdata {num} : priority (0..7) in the specified scheduling class, only for the realtime and best-effort classes

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.

Leave a Reply

Your email address will not be published. Required fields are marked *