0

meteorjs を使用して、.txt や .csv ファイルなどの複数のテキスト/プレーンを Amazon S3 バケットにアップロードできる Web プラットフォームを開発しています。

現在、私のプラットフォームは複数のファイルのアップロードをサポートしており、for ループと meteor-slingshot を使用して s3 に直接アップロードすることで、ファイルを順番にアップロードしています。

私がやろうとしていること:
S3 へのアップロードが行われる前に、ファイルを 1 つの最終ファイルにマージする必要があるため、複数のファイルをアップロードする代わりに 1 つのファイルのみをアップロードできます (ファイルは 1 つにマージする必要があります)。

私のアイデア:

  1. ファイルを S3 にアップロードする前に自分のサーバーにアップロードしてから、Linux のようなものを使用してそれらをマージし、このファイルを何らかの方法で取得することを考えましたが、ファイルを自分のサーバーにcat file1.txt file2.txt > merged_file.txtアップロードする必要があるため、時間がかかります。サーバーを開き、マージされたファイルを S3 バケットにアップロードします。

  2. fromノードを使用fs.appendFileしてファイルをマージしますが、ファイルが最大20/25MBになる可能性があり、それらを読み取って情報を追加するのに時間がかかるため、実行可能かどうかはわかりません.

javascript はおそらくこれを直接処理することはできないと思います。それが、nodejs コアのために sh コマンドまたは c++ で考えている理由です。

これを行うためのより良い方法をお勧めできますか?
このプロセスを処理するより良い方法はありますか?

4

1 に答える 1

0

これはシェルで簡単に実行できます。

for i in file1 file2 file3 do cat $i >> combined_file done

また、それらを小さなファイルとしてアップロードし、aws インスタンスをスピンアップしてプルダウンし、マージして、再アップロードすることを検討することもできます。そうすれば、オリジナルを失うことはなく、このプロセス全体を自動化できます。

于 2016-09-01T17:00:55.920 に答える