Specifically, I am looking to rate-limit an scp or sftp session (or other arbitrary network call) in the call itself.

For example, let's say I want to copy 100MB to one server, and 1GB to another. I'd like to be able to run both of these at the same time, but maintain a QoS for "normal" computer usage - somewhat similar to how you can rate-limit bittorrent.

Is there a way to do this without touching the networking hardware?

I'm envisioning something akin to:

magic-qos-tool 'scp file user@host:/path/to/file'


scp -rate 40kbps file user@host:/path/to/file

Yes, there's an application that works exactly like your 'magic-qos-tool', called "trickle".

     trickle -u 10 -d 20 ncftp

     Launch ncftp(1) limiting its upload capacity to 10 KB/s, and download ca-
     pacity at 20 KB/s.
  • 1
    thanks, @davr - one wrapper tool vs learning all the options to each is a great improvement :) – warren Apr 8 '10 at 14:51

scp has -l, and rsync has --bwlimit.

  • that was not an option in the man page I checked earlier... looks like it depends on the platform, perhaps? – warren Apr 2 '10 at 20:52
  • Quite possibly. I have OpenSSH 5.3p1 here. – Ignacio Vazquez-Abrams Apr 2 '10 at 20:55
  • XenServer 6 has scp with -l option – Brian Boatright May 28 '12 at 21:06
  • The -l flag in scp doesn't work on Solaris 11. Is there any other option or alternative? – Alchemist Oct 11 '16 at 14:57

Rsync makes this easy on you, it has an option to do this: --bwlimit=KBPS


sftp has a throttle flag, as of Debian 7 and Ubuntu 12.04 in those distributions:

-l limit

    Limits the used bandwidth, specified in Kbit/s.

(Of course that's a lower case L.)

Source: stfp(1)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.