AWS S3 Node.js SDK:需要一次从一个存储桶下载所有文件

时间:2014-12-02 15:32:49

标签: node.js amazon-web-services amazon-s3

目前我可以迭代桶中的所有文件并逐个下载, 使用node.js sdk。 我需要立即从S3存储桶下载所有文件。然后将其从桶中取出。

3 个答案:

答案 0 :(得分:5)

此更高级别的Node S3库具有downloadDir功能,可将远程S3存储桶与本地目录同步。

https://github.com/andrewrk/node-s3-client#clientdownloaddirparams

答案 1 :(得分:1)

您可以使用以下命令使用aws cli

aws s3 sync s3://yourbucket .

如果您必须使用node,则可以使用execspwan

const exec = require('child_process').exec;
exec('aws s3 sync s3://yourbucket .', (err, stdout, stderr) => {});

答案 2 :(得分:0)

假设您有一个函数listFiles,它返回您要下载的存储桶中的一系列密钥,以及一个接受文件密钥(名称)和下载的函数downloadFile然后删除它。

您想同时从downloadFile返回的所有文件上调用listFiles吗?使用async库。

function listFiles(cb) {
    s3.stuff(params, cb);
}
function downlaodFile(key, cb) {
    s3.stuff(key, cb);
}
listFiles(function (err, fileKeys) {
    if (err) {
        throw err;//don't really but this is just an example
    }
    async.each(fileKeys, downloadFile, function done(err) {
        if (err) {
            throw err;
        }
    });
});