Is it possible to rate-limit an scp/sftp/rsync/etc transfer from the command-line? ie, manual QoS on a single command?
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'
Or..
scp -rate 40kbps file user@host:/path/to/file
Yes, there's an application that works exactly like your 'magic-qos-tool', called "trickle".
EXAMPLES
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.
scp has -l
, and rsync has --bwlimit
.
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)