从S3下载所有文件,并将它们上传到同一文件夹

时间:2019-01-24 16:48:21

标签: java python amazon-web-services amazon-s3

每当创建新存储桶时,我都会在存储桶上启用版本控制。但是为了向后兼容(已创建的存储桶),我正在下载所有文件/密钥并再次上传。我正在这样做:

fullObject = s3Client.getObject(new GetObjectRequest(bucketName, key));

但是在上载如何在其特定文件夹中上载文件时,我无法弄清楚。还是有另一种解决向后兼容性的解决方案。

1 个答案:

答案 0 :(得分:1)

S3确实没有文件夹,它使用逻辑来“伪造”它,以寻找用“ /”分隔的通用前缀。 “键”是存储桶中文件的完整路径名。

听起来您正在执行get,然后想要将相同的字节放入存储桶中的相同键。如果那是您要执行的操作,则只需使用与获取对象相同的键即可。

在已启用版本控制的存储桶中,这将导致文件的两个副本。目前尚不清楚您为什么要这么做(假设您正写回所读内容)。难道您不只是为同一文件的两个副本付费吗?

我的理解是,如果您为其中已经有文件的存储桶打开版本控制,那么一切都会按照您期望的方式工作。如果先前存在的文件被删除,它只会添加一个删除标记。如果先前存在的文件被覆盖,它将保留先前版本(作为新文件的先前版本)。启用版本控制时,无需主动重写现有文件。如果您有兴趣,可以通过S3控制台,命令行界面或特定于语言的API之一轻松进行测试。