Apakah mungkin untuk menilai-membatasi transfer scp / sftp / rsync / etc dari command-line? yaitu QoS manual pada satu perintah?

10

Secara khusus, saya mencari untuk menilai batas scpatau sftpsesi (atau panggilan jaringan sewenang-wenang lainnya) dalam panggilan itu sendiri .

Sebagai contoh, katakanlah saya ingin menyalin 100MB ke satu server, dan 1GB ke yang lain. Saya ingin dapat menjalankan kedua hal ini secara bersamaan, tetapi mempertahankan QoS untuk penggunaan komputer "normal" - agak mirip dengan bagaimana Anda dapat menilai bittorrent-limit.

Apakah ada cara untuk melakukan ini tanpa menyentuh perangkat keras jaringan?

Saya membayangkan sesuatu yang mirip dengan:

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

Atau..

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

Jawaban:

12

Ya, ada aplikasi yang bekerja persis seperti 'magic-qos-tool' Anda, yang disebut " 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.
davr
sumber
1
terima kasih, @davr - satu alat pembungkus vs belajar semua opsi untuk masing-masing adalah peningkatan besar :)
warren
16

scp memiliki -l, dan rsync memiliki --bwlimit.

Ignacio Vazquez-Abrams
sumber
itu bukan opsi di manhalaman yang saya periksa sebelumnya ... sepertinya itu tergantung pada platform, mungkin?
warren
Sangat mungkin. Saya memiliki OpenSSH 5.3p1 di sini.
Ignacio Vazquez-Abrams
XenServer 6 memiliki scp dengan -l opsi
Brian Boatright
Bendera -l di scp tidak berfungsi pada Solaris 11. Apakah ada opsi atau alternatif lain?
Alchemist
7

Rsync memudahkan Anda, ia memiliki opsi untuk melakukan ini: --bwlimit=KBPS

kbyrd
sumber
2

sftp memiliki flag throttle, pada Debian 7 dan Ubuntu 12.04 dalam distribusi tersebut:

-l limit

    Membatasi bandwidth yang digunakan, ditentukan dalam Kbit / s.

(Tentu saja itu huruf kecil L.)

Sumber: stfp(1)

Thom Luxford
sumber