我想镜像我的 Amazon S3 存储桶。我想这样做是因为 1) 我不希望我的所有数据只存在于一个提供商中;2) 如果出现软件错误或安全漏洞,我希望备份数据。
我可以使用 s3cmd 同步功能将数据镜像到本地磁盘,但对于非常大的存储桶来说,这无法扩展,并且对于快速备份恢复也无用。我宁愿将数据镜像到 Rackspace Cloud Files 等竞争对手那里。
有谁能建议一种简单而强大的方法,可以在 Linux 机器上自动实现这种镜像?
答案1
您可以使用“s3命令“带有“同步”选项的实用程序,虽然我偶然发现了您的问题,因为我试图弄清楚这种同步机制是否会搞砸我的重复备份。
答案2
我遇到了同样的问题,因此我编写了一个专门设计用于将一个 S3 存储桶镜像到另一个 S3 存储桶的小程序;我称之为 s3s3mirror。
我确实首先尝试了“s3cmd sync”方法,但我有一个包含数十万个对象的存储桶,“s3cmd sync”只是坐在那里,什么也没做,只是消耗越来越多的内存,直到我的系统死机。我设计了 s3s3mirror 以立即启动,使用 100 个并发线程(可配置),并适度使用 CPU 和内存。如果我自己这么说的话,它的速度非常快。
我已根据 Apache 许可将其发布在 GitHub 上。如果您决定尝试一下,请告诉我您的想法以及是否有任何可以改进的地方。
以下是链接:https://github.com/cobbzilla/s3s3mirror
谢谢!
- 乔纳森。
答案3
亚马逊现在有一个支持的工具来做到这一点,aws 命令行。
它可以在本地和远程之间或两个 s3 位置之间进行任意方向的镜像。
不幸的是,它不直接支持非 S3 位置,例如 rackspace,但我认为这对某些发现此问题的人来说是一个有用的答案。就像我一样,在我找到它之前。
尤其,
aws s3 sync s3://some/s3/path /some/local/path
答案4
查看丛林磁盘服务器。它适用于 Amazon S3 和 Rackspace Cloud Files。您可以在文件系统的不同位置安装 S3 和 CF,然后在两者之间使用 rsync。