将 AWS S3 Bucket 根目录内容复制到子文件夹内的同一存储桶
Copying AWS S3 Bucket root contents to same bucket within subfolder
我希望能够将同一个存储桶中的文件从根目录复制到子文件夹中的子文件夹,但是使用 aws-sdk 排除该子文件夹。
即:
我想在 gulp 文件任务中使用此 AWS-CLI 命令:
aws s3 cp s3://bucketName s3://bucketName/last_good/YYYYMMDD --recursive --exclude "last_good/*"
我使用了
中使用的复制示例
我只是不确定如何指定要排除的文件夹。在我上面的示例中,它将是 last_good
文件夹。
var gulp = require('gulp');
var AWS = require('aws-sdk');
var async = require('async');
var bucketName = 'bucketname';
var oldPrefix = '';
var newPrefix = 'last_good/20190817/';
var s3 = new AWS.S3({params: {Bucket: bucketName}, region: 'us-west-2'});
gulp.task('publish', function() {
CopyToLastGood();
}
function CopyToLastGood() {
var done = function(err, data) {
if (err) console.log(err);
else console.log(data);
};
s3.listObjects({Prefix: oldPrefix}, function(err, data) {
if (data.Contents.length) {
async.each(data.Contents, function(file, cb) {
var params = {
CopySource: bucketName + '/' + file.Key,
Key: file.Key.replace(oldPrefix, newPrefix)
};
s3.copyObject(params, function(copyErr, copyData){
if (copyErr) { // an error occured
console.log(err);
}
else {
console.log('Copied: ', params.Key); //successful response
cb();
}
});
}, done);
}
});
}
我希望 root 的内容更新 last_good/20190817/
但不复制 last_good
文件夹本身。
我已经使用 s3.listObjects 参数上的分隔符选项解决了我的解决方案。
即:
s3.listObjects({Prefix: oldPrefix, Delimiter:'/'}
这仅列出根目录中的文件。
我希望能够将同一个存储桶中的文件从根目录复制到子文件夹中的子文件夹,但是使用 aws-sdk 排除该子文件夹。
即:
我想在 gulp 文件任务中使用此 AWS-CLI 命令:
aws s3 cp s3://bucketName s3://bucketName/last_good/YYYYMMDD --recursive --exclude "last_good/*"
我使用了
我只是不确定如何指定要排除的文件夹。在我上面的示例中,它将是 last_good
文件夹。
var gulp = require('gulp');
var AWS = require('aws-sdk');
var async = require('async');
var bucketName = 'bucketname';
var oldPrefix = '';
var newPrefix = 'last_good/20190817/';
var s3 = new AWS.S3({params: {Bucket: bucketName}, region: 'us-west-2'});
gulp.task('publish', function() {
CopyToLastGood();
}
function CopyToLastGood() {
var done = function(err, data) {
if (err) console.log(err);
else console.log(data);
};
s3.listObjects({Prefix: oldPrefix}, function(err, data) {
if (data.Contents.length) {
async.each(data.Contents, function(file, cb) {
var params = {
CopySource: bucketName + '/' + file.Key,
Key: file.Key.replace(oldPrefix, newPrefix)
};
s3.copyObject(params, function(copyErr, copyData){
if (copyErr) { // an error occured
console.log(err);
}
else {
console.log('Copied: ', params.Key); //successful response
cb();
}
});
}, done);
}
});
}
我希望 root 的内容更新 last_good/20190817/
但不复制 last_good
文件夹本身。
我已经使用 s3.listObjects 参数上的分隔符选项解决了我的解决方案。
即:
s3.listObjects({Prefix: oldPrefix, Delimiter:'/'}
这仅列出根目录中的文件。