【问题标题】:How to delete a folder in s3?如何删除s3中的文件夹?
【发布时间】:2014-10-05 21:59:05
【问题描述】:

我的 s3 存储桶中有以下层次结构

bucket_name/folder1/folder2/file1
bucket_name/folder1/folder2/file1

我可以删除文件夹 2 中的所有文件,但这会留下带有空文件夹的存储桶作为文件夹 1/文件夹 2。

删除这些文件夹的适当方法是什么?

这是我删除特定文件的操作:

s3 是我的 Amazon s3 实例:

s3.buckets[my_bucket_name].objects[path].delete

理想情况下,我想删除文件夹和所有内容。

【问题讨论】:

  • 你能做到吗?

标签: ruby amazon-s3


【解决方案1】:
【解决方案2】:
client = Aws::S3::Client.new(region: '...',
                             access_key_id: '...',
                             secret_access_key: '...')
bucket = 'acme-test'
folder_name = 'my_folder/'

# delete all objects in folder *and folder*

client.list_objects(bucket: bucket, prefix: folder_name).contents.each do |obj|
  client.delete_object(bucket: bucket, key: obj.key)
end

【讨论】:

    【解决方案3】:

    您可以使用 aws-cli 删除文件夹:

    aws s3 rm s3://mybucket/ --recursive

    为了检查删除操作会删除什么,你可以设置'dryrun'标志:

    aws s3 rm s3://mybucket/ --recursive --dryrun

    【讨论】:

      【解决方案4】:
      function emptyBucket(bucket, folderName, callback) {
      var params = {
          Bucket: bucket,
          Prefix: folderName+ '/'
      };
      s3.listObjects(params, function (err, data) {
          if (err) return callback(err);
      
          if (data.Contents.length == 0) callback();
      
          params = { Bucket: bucket };
          params.Delete = { Objects: [] };
      
          data.Contents.forEach(function (content) {
              params.Delete.Objects.push({ Key: content.Key });
          });
      
          s3.deleteObjects(params, function (err, data) {
              if (err) return callback(err);
              if (data.IsTruncated) {
                  emptyBucket(bucket, callback);
              } else {
                  callback();
              }
          });
      });
      

      }

      【讨论】:

        猜你喜欢
        • 2012-07-10
        • 2019-07-22
        • 2013-12-11
        • 2019-08-16
        • 2020-04-24
        • 2013-12-15
        • 2012-03-28
        • 1970-01-01
        • 2018-11-09
        相关资源
        最近更新 更多