镜像Amazon S3存储桶的实用方法是什么?


9

我想镜像我的Amazon S3存储桶。我之所以要这样做,是因为1)我不希望我的所有数据仅存在于一个提供程序中;和2)如果发生软件错误或安全漏洞,我想备份数据。

我可以使用s3cmd同步功能镜像到本地磁盘,但这不能扩展到非常大的存储桶,并且对于快速备份还原没有用。我宁愿将数据镜像到Rackspace Cloud Files这样的竞争对手。

对于在Linux机器上以自动化方式促进这种镜像的简单而强大的方法,有人有何建议?


我是否可以正确地假设所有答案都不能真正解决“ 1)我不希望我的所有数据仅存在于一个提供程序中,因为它们都只是镜像同一提供程序中的存储桶?”
克里斯,

Answers:


6

您可以将“ s3cmd ”实用程序与“ sync”选项一起使用,尽管我偶然发现了您的问题,因为我试图弄清楚这种同步机制是否破坏了我的重复性备份。


这确实是我找到的最佳解决方案s3tools.org/s3cmd-sync
John Bachir

5

我遇到了同样的问题,因此我整理了一个专门设计用来将一个S3存储桶镜像到另一个S3存储桶的程序。我称它为s3s3mirror。

我确实首先尝试了“ s3cmd sync”方法,但是我有一个存储有成千上万个对象的存储桶,而“ s3cmd sync”只是坐在那儿,什么也不做,只是消耗越来越多的内存,直到系统死掉。我设计s3s3mirror可以立即开始使用100个并发线程(可配置),并适度使用CPU和内存。如果我自己也这么说,那简直太快了。

我已经在Apache许可下在github上提供了此功能。如果您决定尝试一下,请告诉我您的想法以及是否有任何可以改进的地方。

这是链接:https : //github.com/cobbzilla/s3s3mirror

谢谢!

  • 乔纳森。

感谢您的工作,我为此制作了一个Docker容器可执行文件,并已在生产中使用它:github.com/pmoust/s3s3mirror-docker
Panagiotis Moustafellos 2014年

4

亚马逊现在有一个受支持的工具aws cli

它可以在本地和远程之间或两个s3位置之间的任何一个方向上进行镜像。

不幸的是,它没有对非S3位置(如机架空间)的任何直接支持,但是我认为这对于某些发现此问题的人将是一个有用的答案。像我一样,在我找到它之前。

特别是,

aws s3 sync s3://some/s3/path /some/local/path

2

查看丛林磁盘服务器。它可与Amazon S3和Rackspace Cloud Files一起使用。您可以将S3和CF安装在文件系统上的不同位置,然后在两者之间使用rsync。


谢谢,但是我应该提到我正在寻找一种可以在Linux机器上作为cron作业运行的解决方案。我已经更新了问题。

2

您可以尝试使用s3fs安装带有保险丝的桶。完成后,您可以将rmount从安装点同步到本地磁盘。


1
对于s3fs +1,我刚刚提交了一个补丁程序以支持最大5TB的文件。
Ben lemasurier 2011年

1

您可以设置Minio服务器,开源和S3兼容API。您可以在EC2或任何云提供商上将其设置为备用服务器,并使用Minio client mc mirror命令定期获取S3的镜像。您可以通过编写简单的cron脚本来自动化。

希望能帮助到你。免责声明:我为Minio工作


1

对于存储桶的在线同步,您可以使用跨区域复制。这样,对原始存储桶的所有更新将自动同步到另一个区域中的S3存储桶:https : //docs.aws.amazon.com/AmazonS3/latest/dev/crr.html

请记住,它需要为存储桶启用版本控制,因此,如果您要对存储桶中的对象进行更新/删除,那么您将需要启用生命周期策略以删除旧对象。


这是我们选择使用的方式,但是请注意,复制与镜像不同。最大的区别是删除不会在源和目标之间传播(目标将更新已更改的文件,但似乎永远不会删除它们)。
Scott Gartner
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.