0

OSX (または Linux) でNOUNZ データ コンパイラを使用しています。これは、静的 HTML ファイル (数十万、時には数百万のファイル) の巨大なディレクトリ構造を自動的に生成します。

生成されたディレクトリ ツリーの簡単な例は、次のようになります...

ここに画像の説明を入力

通常、ツリー全体をリモート Web サーバーに移動する場合は、次のコマンドを使用してツリーを tar および圧縮するだけです。

tar -cvf HTML.tar HTML
gzip HTML.tar

これにより、tar された圧縮ファイルが生成されます。HTML.tar.gz

次に、上記のファイルをリモート Web サーバーに FTP または SCP で送信し、次のコマンドを使用してファイルを単純に untar および uncompress できます。

gzip -d HTML.tar.gz
tar -xvf HTML.tar

これにより、ローカル マシン上のデータ コンパイラによって生成されたものとまったく同じファイル ツリーが Web サーバー上に作成されます。

問題: Amazon Web Services (AWS) Simple Storage Solution (S3) を使用して、上記と同じ動作を模倣したいと考えています。

私の質問:同じ (または同様の動作) を模倣する最良の方法は何ですか。tar され圧縮されたツリー全体をローカル サーバーから AWS S3 に移動し、ファイルを圧縮解除して展開し、ディレクトリ全体を再作成します。構造?

およびコマンドは S3 CLI API の一部targzipはないため、何百万ものファイルを含む可能性のあるディレクトリ構造を移動する確実な方法を見つける必要があります (おそらく 1 日に 1 回発生します)。最初にtarと圧縮を行わずにすべてを移動して再作成すると、非常に時間がかかります。

注: 参考までに、データ コンパイラが実行されると、常に古いツリー全体が削除され、新しいツリー全体が再生成されるため、すべてのディレクトリとファイルに対して完全に新しい inode が作成されます。これは、「増分」コピーと同期が実行できないことを意味します。毎回、ツリー全体を移動する必要があります。

4

1 に答える 1

0

S3 はファイルを解凍しません。ファイルを S3 に保存したい状態で S3 にプッシュする必要があります。aws s3 syncコマンド (または MD5 ハッシュに基づいて増分更新を行う同様のツール) が最適なオプションになります。おそらく、sync コマンドを複数の並列 sync コマンドに分割できます。おそらく、サブディレクトリごとに 1 つのプロセスを実行します。

「パイプを介して何百万ものファイルを送り込むには長い時間がかかる可能性がある」というコメントについてaws s3 syncは、EC2 でまだこれを行っていない場合は、最初にファイルを圧縮して EC2 サーバーにプッシュする必要があります。S3 バケットと同じリージョンで、10Gbps のネットワーク パフォーマンスを持つインスタンス タイプである EC2 サーバーを使用する必要があり、EC2 サーバーでは拡張ネットワーキングが有効になっている必要があります。これにより、S3 への最速の接続が可能になります。

于 2016-11-09T13:51:21.103 に答える