リモートサーバーからs3バケットに、ファイルサイズが69MBから25GBまでの4500ファイルからなる約31 TBのデータを転送しています。私はこれを行うには、bashスクリプトupload.sh
でそれを置くためにs4cmd put
を使用しています:多数の大きなファイルをs3に転送
#!/bin/bash
FILES="/path/to/*.fastq.gz"
for i in $FILES
do
echo "$i"
s4cmd put --sync-check -c 10 $i s3://bucket-name/directory/
done
その後、私は仕事を提出するqsub
を使用します。
qsub -cwd -e error.txt -o output.txt -l h_vmem=10G -l mem_free=8G -l m_mem_free=8G -pe smp 10 upload.sh
これはあまりにも長い道のりを取っている - それが10時間を要しました20ファイルをアップロードする。誰かが私のコマンドに代わるものや変更を提案することはできますか?
ありがとうございます!
** GNU並列**を使用して、多分いくつか並列処理をしますか? 'parallel -eta -j 8 s4cmd put -sync-check -c 10 {} s3://バケット名/ディレクトリ/ :::/path/to/* fastq.gz' –
どこから転送?別のAWSサービスがあれば、これは遅すぎるかもしれませんが、企業のデータセンターからAWSに送信する場合は、この範囲の時間が必要です(シングルスレッドの場合)。 GParallelを使用していても、ソースシステムとAWSの間の帯域幅制約に簡単に突入することがあります。 (私の考えは時代遅れかもしれないので、私は現在のユーザーからの反応を見ることに興味があります(常に!))。がんばろう! – shellter
あなたのインターネット接続はどのくらいの速さですか?そのデータ量では、[Snowball](https://aws.amazon.com/snowball/)を使用する方が速いかもしれませんが、その上に配送オーバヘッドがあります。 – stdunbar