より速く、圧縮可能で、帯域幅制限が設定されているあるサーバーから別のサーバーにフォルダーを転送するオプションはありますか?サーバーはLinuxで実行されます。
tar + sshを試しましたが、再び帯域幅制限を3または4MBPSに設定できませんでした。
他のサービスはありますか?
答え1
あなたはそれを使用することができます同期転送中に--bwlimit=
帯域幅を制限し、ファイルデータを圧縮するオプションがあります。-z
たとえば、SSH を転送として使用します。
答え2
bsdtar cf - . | xz | pv -L 3m | ssh host 'cd /there && xz -d | bsdtar xpSf -'
(他のファイルは通常すべてのファイルメタデータを保存しないため、ここではbsdtarが使用されます。)
xz
おそらく速度制限のために得ることができる最高の圧縮(しかし非常にCPU集約的)でしょうpv
(3メガビット(2 20)ということに注意してください)バイト毎秒)。
バックアップに使用してuids / gidsを維持するには、このオプションを--numeric-owner
2番目のオプションに追加します。bsdtar
rsync
これは、(圧縮)を使用してフル転送を実行するよりも(両方のサーバーの帯域幅とリソースの面で)効率的ですが、xz
転送を再開したりフォルダを共通ファイルと同期したりする必要がある場合rsync
便利に来てください(しかし、rsync
保存したいメタデータを保存するために必要なオプションを選択するには、マニュアルページをよくお読みください)。
答え3
ネットワークスループットを微調整するために、次のツールもあります。ストリームメディアまたはバッファー。
たとえば、-t num
データスループットを1秒あたりのバイト数num
に制限するだけでなく、読み書き用のブロックサイズを設定するオプションだけでなく、書き込みcstream
前に入力ブロックを最大バイトまでバッファリングするオプションもあります。-b num
-B num
num
ssh
または代わりにまたはをrsync
試すことができます。特に、データストリームがインターネットを介して送信されない場合は、さらにそうです。 Nmapプロジェクトの一部であり、SSLをサポートしています。nc (netcat)
ncat
ncat
# netcat + tar + cstream example to throttle network throughput
# requires netcat on both servers
# cf. http://superuser.com/questions/291803/best-way-to-copy-millions-of-files-between-2-servers/
# cstream -T 10 -t 4m </dev/urandom >/dev/null # test
nc -l -p 2342 | tar -C /target/dir -xzf - # destination box
tar -cz /source/dir | cstream -T 30 -t 4m | nc Target_Box 2342 # source box