Amazon s3 从S3下载大量文件

Amazon s3 从S3下载大量文件,amazon-s3,disaster-recovery,Amazon S3,Disaster Recovery,我想为一个包含约200万个文件的s3存储桶设置灾难恢复副本 这不需要自动化,因为我们相信Amazon对高可靠性的承诺,我们已经启用了版本控制和设置MFA来删除bucket本身 所以我只想定期(手动)下载bucket的内容,以保持脱机拷贝 我尝试过一些S3客户机,但在处理如此大的文件夹时,大多数客户机都会挂起 是否有适合这项工作的工具,或者我们是否必须求助于亚马逊的数据导出服务(每次需要离线备份时,我们都必须向他们发送一个usb驱动器) 提前感谢您的建议 除非您的文件名有某种“结构”,否则处理包含

我想为一个包含约200万个文件的s3存储桶设置灾难恢复副本

这不需要自动化,因为我们相信Amazon对高可靠性的承诺,我们已经启用了版本控制和设置MFA来删除bucket本身

所以我只想定期(手动)下载bucket的内容,以保持脱机拷贝

我尝试过一些S3客户机,但在处理如此大的文件夹时,大多数客户机都会挂起

是否有适合这项工作的工具,或者我们是否必须求助于亚马逊的数据导出服务(每次需要离线备份时,我们都必须向他们发送一个usb驱动器)


提前感谢您的建议

除非您的文件名有某种“结构”,否则处理包含数百万个文件的bucket可能非常具有挑战性。不幸的是,这对任何GUI工具都没有帮助,因此您只能实现自己的解决方案。例如:

  • 如果所有的文件都以日期开头,则可以在请求中使用
    标记
    头,仅返回早于特定日期的文件

  • 如果文件排列在“虚拟”文件夹中,则可以使用
    前缀
    分隔符
    标题分别处理每个文件夹。(考虑并行执行此操作以加快速度)

  • 即使你没有结构,也不会失去一切。S3客户端挂起是因为它们试图在内存中保存整个200万个文件列表。您可以一次下载列出1000个文件的对象,但请将其保存到文件/数据库等。获取所有200万个文件需要很长时间,但一旦完成,只需在保存的列表中循环并根据需要下载即可


    更好的是,如果您能够在将文件添加到S3时对数据库中的文件进行“索引”,则可以使用该索引来确定要下载的文件。

    您可以使用jets3t库和Java来构建自己的工具。如果您了解核心Java,那么使用它并不困难

    这里有一些代码示例