从S3下载大量文件

时间:2011-12-28 09:54:33

标签: amazon-s3 disaster-recovery

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

这不必自动化,因为我们相信亚马逊对高可靠性的承诺,我们已启用版本控制并设置MFA以删除存储桶本身。

所以我只想定期下载(手动)存储桶的内容以保留脱机副本。

我尝试过几个S3客户端,但大多数客户端在处理这么大的文件夹时都会挂起。

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

提前感谢您的建议!

2 个答案:

答案 0 :(得分:4)

使用数百万个文件处理存储桶可能非常具有挑战性,除非文件名存在某种“结构”。不幸的是,这不会帮助任何GUI工具,因此您无法实施自己的解决方案。例如:

  1. 如果所有文件都以日期开头,则可以使用Get Bucket请求中的marker标头仅返回超过特定日期的文件。

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

  3. 即使你没有结构,也不会丢失。 S3客户端挂起,因为他们试图在内存中保存整个200万个文件列表。您可以一次下载列出1000个文件的对象,但是将其保存到文件/数据库等。这需要很长时间才能获得所有200万个文件,但是一旦完成,只需循环浏览已保存的列表并根据需要下载。 / p>

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

答案 1 :(得分:0)

您可以将jets3t库与Java一起使用来构建自己的工具。如果您了解核心Java,那就不难使用了。

http://jets3t.s3.amazonaws.com/toolkit/toolkit.html

有一些代码示例。

http://jets3t.s3.amazonaws.com/toolkit/code-samples.html