java - 将文件夹发送到 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);
}
也慢
有没有什么方法可以在没有文件夹结构的情况下快速发送它们?
解决方案
最快和最简单的方法是首先将多个子文件夹中的所有单个文件复制到一个新的临时文件夹,然后aws s3 sync
将该文件夹复制到 S3,然后擦除临时文件夹。
或者您可以同时运行命令。
推荐阅读
- networking - GCP:如何通过主机名访问共享 VPC 中的虚拟机
- ruby-on-rails - 如何使用模型中的属性在 Rails 模型上设置只读?
- spring-boot - Spring Boot 调试、警告和错误日志停止工作
- php - 使用 PHP 和 cURL 登录 Amazon SellerCentral
- kentico - Kentico 11 - 宏在营销电子邮件中不起作用
- reactjs - React JS - onChange 触发两次
- laravel - 如何在laravel中使用两个或多个组合进行过滤
- c - 汇编 x86-32 和一些 c 函数
- tensorflow - `get_variable()` 无法识别 tf.estimator 的现有变量
- css - 在屏幕底部结束的可滚动下拉 div