Node.js 我如何才能用我的文件的最新版本创建一个新文件夹,而不删除Amazon中S3 Bucket的旧文件?

Node.js 我如何才能用我的文件的最新版本创建一个新文件夹,而不删除Amazon中S3 Bucket的旧文件?,node.js,amazon-web-services,amazon-s3,Node.js,Amazon Web Services,Amazon S3,最近,我在amazon(备份)中创建了一个函数,可以将包含数据库文件的文件夹发送到我的S3存储桶 我正在使用一个名为FindIt->的包。我使用它列出我的文件,然后将它们发送到我的存储桶 这是我的职责: finder.on('file', function (file, stat) { var params = { Bucket: 'bucket-test-test-my-company', Key: file, Body: fs.crea

最近,我在amazon(备份)中创建了一个函数,可以将包含数据库文件的文件夹发送到我的S3存储桶

我正在使用一个名为FindIt->的包。我使用它列出我的文件,然后将它们发送到我的存储桶

这是我的职责:

finder.on('file', function (file, stat) {
    var params = {
        Bucket: 'bucket-test-test-my-company',
        Key: file,
        Body: fs.createWriteStream(file)
    };
});

    s3.putObject(params, function(err, res) {
        if(err) {
            console.log(err);
        }
        else {
            console.log("Success");
        }
        callback(err);
    });
工作正常,我的文件夹和里面的备份文件正在被发送

这些文件将每天发送,我不想更新,我不想创建一个包含日期或其他信息的新文件夹来了解订单

我真的不知道怎么做,请帮帮我好吗?也许是一些教程


谢谢。

上传代码中的
键是您希望对象在bucket内生存的路径

您所要做的就是在上传文件之前,在每个文件名的开头添加一个表示当前备份“路径”的字符串,例如
backups/daily/2014-20-09/

S3中的文件夹不是真实的,因此不必创建它们。。。但是,如果您向每个键添加前缀字符串,并且前缀包含
/
斜杠,那么您的文件将在S3控制台中显示为文件夹中,正如您所期望的那样

注意,前缀中不需要前导的
/
,但需要尾随的。只需构建字符串并将其添加到用于
键:
的值的开头

或者,您可以在bucket中启用版本控制。当您“覆盖”一个文件时,该文件不会被删除——它只会成为该文件的“以前的版本”,并且所有以前的版本仍然可用,但是下载“文件”而不指定版本将检索最新版本


您更喜欢哪一种?我认为版本控制是更好的选择。对于日期/时间非常相关的数据库备份,我使用带有日期的路径来保持组织。对于像图像资产这样不太可能更改的文件,我使用版本控制。警告:S3将存储您上载的每个版本的(可计费)副本,即使它与另一个版本相同,因此您可以自行避免重新上载已捕获的文件。
ETag:
标头可用于确定本地文件是否与当前版本匹配。