3

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

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

所以我只想定期下载(手动)存储桶的内容以保持离线副本。

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

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

提前感谢您的建议!

4

2 回答 2

4

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

  1. 如果您的所有文件都以 date 开头,您可以marker在请求中使用标头来Get Bucket仅返回早于特定日期的文件。

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

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

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

于 2011-12-28T11:12:18.680 回答
1

您可以使用带有 Java 的 jets3t 库来构建您自己的工具。如果您了解核心 Java,则不难使用。

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

有一些代码示例。

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

于 2011-12-29T17:03:12.657 回答