私は約400万のファイルを持つS3バケットを持っています。ファイルを新しいバケットに同期する必要があります(バケツの名前を変更するだけで十分ですが、新しいバケットを作成し、そこにファイルを移動して古いバケットを削除する必要はありません)。2つのAmazon S3バケットを同期する最速の方法
AWS CLIのs3 sync
コマンドを使用していますが、ジョブは実行されますが、時間がかかります。 従属システムのダウンタイムが最小になるように時間を短縮したいです。
ローカルマシンとEC2 c4.xlarge
インスタンスの両方から同期を実行しようとしていましたが、時間の差はあまりありません。
は私がすなわち
aws s3 sync s3://source-bucket s3://destination-bucket --exclude "*" --include "1?/*"
aws s3 sync s3://source-bucket s3://destination-bucket --exclude "*" --include "2?/*"
aws s3 sync s3://source-bucket s3://destination-bucket --exclude "*" --include "3?/*"
aws s3 sync s3://source-bucket s3://destination-bucket --exclude "*" --include "4?/*"
aws s3 sync s3://source-bucket s3://destination-bucket --exclude "1?/*" --exclude "2?/*" --exclude "3?/*" --exclude "4?/*"
、--exclude
と--include
オプションを使用して、別の端末のウィンドウから、それらを並行して実行する複数のバッチジョブを分割する際にかかる時間が多少短縮することができることに気づいた何かがあります同期をさらに高速化できますか?この仕事にもっと適した別のタイプのEC2
インスタンスがありますか?ジョブを複数のバッチに分割して、同じバケット上で並列に実行できるsync
プロセスの「最適な」数のようなものがありますか?
更新
私は、移行を行う、システムをダウン取る前にバケツを同期する戦略に傾いて、その後に変更されたファイルのほんの数をコピーするために、再びバケットを同期していますその間。しかし、違いがないバケットでも同じsync
コマンドを実行すると時間がかかります。
500gigをコピーするために長い時間がかかるとしている。..バケットを同期を開始する前に、cross-regionバケツの複製を可能にすることができますあなたが何をしていても。ディスクの帯域幅は非常に広くなっています。 –
@MarcB true。私が目指す移行戦略は、システムをダウンさせる前にバケットを同期させることだと言いました。その間に変更された最小量のファイルのみをコピーするには、スイッチを切り替えてから再度同期を実行します。実際にファイルをコピーする必要がない場合でも、 'sync'コマンドはファイルが変更されたかどうかを確認するだけでも多くの時間がかかります。 – mrt
この500gigにはいくつのファイルがありますか?基本的にはタイムスタンプを比較するだけでも遅くなります。なぜなら、基本的には、すべての単一ファイルに対して 'stat()'操作を要求するからです。実際にバックグラウンドで同期が行われているかどうかはわかりませんが、バックエンドシステムが物理的なバイト(タイムスタンプが変更されなかった場合)を比較するか、ファイルをハッシュしてハッシュを比較すると、2x500ギガバイトのデータを読み取ってバイト/ 。 –