2017-03-28 17 views
0

パブリックサーバ(〜0.5TB、multi-part here)にlarge datasetがあります。これは自分自身のs3バケットにコピーしたいものです。 aws s3 cpは、S3バケットに基づくローカルファイルまたはファイルのみのようですか?AWS S3リモートからのバケットへのコピー

どのように私はそのファイル(単一または複数の部分)をS3にコピーできますか? AWS CLIを使用することはできますか?何か別のものが必要ですか?

+0

そう...あなたが疑問にデータセットを言っている...右S3上にありませんが、あなたはそれをダウンロードし、S3に保存したいですか? –

+0

@ Michael-sqlbotまったく –

+0

しかし、私はEC2インスタンスから実行しているので、EC2インスタンスにすべてをダウンロードしてS3にアップロードしたくないので、S3に直接ロードすることは私が探しているものですために。 –

答えて

0

遠隔地からS3に直接アップロードする方法はありません。しかし、あなたはリモートファイルの内容をあなたのマシンにストリーミングしてからS3までストリーミングすることができます。これは、0.5TBのデータ全体をダウンロードしたことを意味しますが、コンピュータは一度にそのデータのほんの一部をメモリに保持します(ディスクには保存されません)。ここでは、JavaScriptで単純な実装です:

const request = require('request') 
const async = require('async') 
const AWS = require('aws-sdk') 
const s3 = new AWS.S3() 
const Bucket = 'nyu_depth_v2' 
const baseUrl = 'http://horatio.cs.nyu.edu/mit/silberman/nyu_depth_v2/' 
const parallelLimit = 5 
const parts = [ 
    'basements.zip', 
    'bathrooms_part1.zip', 
    'bathrooms_part2.zip', 
    'bathrooms_part3.zip', 
    'bathrooms_part4.zip', 
    'bedrooms_part1.zip', 
    'bedrooms_part2.zip', 
    'bedrooms_part3.zip', 
    'bedrooms_part4.zip', 
    'bedrooms_part5.zip', 
    'bedrooms_part6.zip', 
    'bedrooms_part7.zip', 
    'bookstore_part1.zip', 
    'bookstore_part2.zip', 
    'bookstore_part3.zip', 
    'cafe.zip', 
    'classrooms.zip', 
    'dining_rooms_part1.zip', 
    'dining_rooms_part2.zip', 
    'furniture_stores.zip', 
    'home_offices.zip', 
    'kitchens_part1.zip', 
    'kitchens_part2.zip', 
    'kitchens_part3.zip', 
    'libraries.zip', 
    'living_rooms_part1.zip', 
    'living_rooms_part2.zip', 
    'living_rooms_part3.zip', 
    'living_rooms_part4.zip', 
    'misc_part1.zip', 
    'misc_part2.zip', 
    'office_kitchens.zip', 
    'offices_part1.zip', 
    'offices_part2.zip', 
    'playrooms.zip', 
    'reception_rooms.zip', 
    'studies.zip', 
    'study_rooms.zip' 
] 

async.eachLimit(parts, parallelLimit, (Key, cb) => { 
    s3.upload({ 
    Key, 
    Bucket, 
    Body: request(baseUrl + Key) 
    }, cb) 
}, (err) => { 
    if (err) console.error(err) 
    else console.log('Done') 
}) 
+0

これはnode.jsで実行するスクリプトだと思いますか? –

関連する問題