フォルダを圧縮し、ネットワーク経由であるサーバーから別のサーバーに転送する方法

フォルダを圧縮し、ネットワーク経由であるサーバーから別のサーバーに転送する方法

より速く、圧縮可能で、帯域幅制限が設定されているあるサーバーから別のサーバーにフォルダーを転送するオプションはありますか?サーバーは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-owner2番目のオプションに追加します。bsdtar

rsyncこれは、(圧縮)を使用してフル転送を実行するよりも(両方のサーバーの帯域幅とリソースの面で)効率的ですが、xz転送を再開したりフォルダを共通ファイルと同期したりする必要がある場合rsync便利に来てください(しかし、rsync保存したいメタデータを保存するために必要なオプションを選択するには、マニュアルページをよくお読みください)。

答え3

ネットワークスループットを微調整するために、次のツールもあります。ストリームメディアまたはバッファー

たとえば、-t numデータスループットを1秒あたりのバイト数numに制限するだけでなく、読み書き用のブロックサイズを設定するオプションだけでなく、書き込みcstream前に入力ブロックを最大バイトまでバッファリングするオプションもあります。-b num-B numnum

sshまたは代わりにまたはをrsync試すことができます。特に、データストリームがインターネットを介して送信されない場合は、さらにそうです。 Nmapプロジェクトの一部であり、SSLをサポートしています。nc (netcat)ncatncat

# 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

関連情報