首页 > 解决方案 > 将文件夹发送到 s3 存储桶,但不要复制文件夹结构

问题描述

我想向亚马逊发送一个递归文件夹。

文件夹:文件夹

└───FOLDER
    ├───SUBFOLDER
            |
            |__ file1.jpg
            |
            |__ file2.jpg
    ├───SUBFOLDER(2)
            |
            |__ file3.jpg
            |
            |__ file4.jpg

为此用途:

asw s3 cp /folder s3://mybucket/folder_destination --recursive

但它到达存储桶中具有相同文件夹结构的存储桶。

我的愿望是它以这种结构到达桶:

└───BUCKET
        ├───folder_destination
                |
                |__ file1.jpg
                |
                |__ file2.jpg
                |
                |__ file3.jpg
                |
                |__ file4.jpg

我测试了这个蝙蝠:

pushd C:\Users\user\Desktop\FOLDER
for /r %%a in (*.jpg) do (
       aws s3 cp  "%%a" "s3://bucket/Test/%%~nxa"
   )
   popd

他做我想做的事,但很慢。

for (File f : arquivos) {
            System.out.println(f);
            String fileObjKeyName = "Test" + f.toString().split("/")[f.toString().split("/").length - 1];


            PutObjectRequest request = new PutObjectRequest(bucketName, fileObjKeyName, f);
            ObjectMetadata metadata = new ObjectMetadata();
            metadata.setContentType("image/jpeg");
            //metadata.addUserMetadata("title", "someTitle");
            request.setMetadata(metadata);
            s3Client.putObject(request);
        }

也慢

有没有什么方法可以在没有文件夹结构的情况下快速发送它们?

标签: javaamazon-web-servicesbatch-fileamazon-s3

解决方案


最快和最简单的方法是首先将多个子文件夹中的所有单个文件复制到一个新的临时文件夹,然后aws s3 sync将该文件夹复制到 S3,然后擦除临时文件夹。

或者您可以同时运行命令


推荐阅读