Amazon web services 将从AWS S3获取的Cassandra备份保存到非AWS位置有哪些好的选项?

Amazon web services 将从AWS S3获取的Cassandra备份保存到非AWS位置有哪些好的选项?,amazon-web-services,amazon-s3,cassandra,google-cloud-storage,rackspace-cloud,Amazon Web Services,Amazon S3,Cassandra,Google Cloud Storage,Rackspace Cloud,我已经有了AWS S3上的Cassandra数据库备份。备份是每天创建的,并保存在S3上。现在我正在寻找第二个云存储,在那里我可以定期保存AWS S3的C*备份副本。基本上,它只是从AWS S3复制文件(大小约500 GB),并定期将其保存在云中的某个位置作为第二次备份。我正在寻找实现这一目标的最佳选择。成本效益、灵活性和开发人员友好性方面的最佳选择。我需要能够编写一个脚本,从AWS S3复制最新的C*备份,并将其保存到第二个云存储中。该脚本需要使用cron作业或rake任务定期运行。经过研究,

我已经有了AWS S3上的Cassandra数据库备份。备份是每天创建的,并保存在S3上。现在我正在寻找第二个云存储,在那里我可以定期保存AWS S3的C*备份副本。基本上,它只是从AWS S3复制文件(大小约500 GB),并定期将其保存在云中的某个位置作为第二次备份。我正在寻找实现这一目标的最佳选择。成本效益、灵活性和开发人员友好性方面的最佳选择。我需要能够编写一个脚本,从AWS S3复制最新的C*备份,并将其保存到第二个云存储中。该脚本需要使用cron作业或rake任务定期运行。经过研究,我找到了新来的人。但我不知道该用哪一个,怎么用。我正在这方面寻求一些建议。提前谢谢

编辑_1

好的,我试过这个命令:

gsutil -m rsync -r s3://<s3_bucket_name>  gs://<GS_bucket_name>
gsutil rsync -d -r s3://original-bucket gs://google-cloud-bucket
gsutil-mrsync-rs3://gs://
我已经修改了配置文件.boto,并在那里提供了aws访问权限和密钥

但当我运行上述命令时,我得到以下消息,其中包括一个异常:

Building synchronization state...
You have requested multiple threads or processes for an operation, but
the required functionality of Python's multiprocessing module is not
available. Your operations will be performed sequentially, and any
requests for parallelism will be ignored. Your max number of open
files, 0, is too low to allow safe multiprocessing. On Linux you can
fix this by adding something like "ulimit -n 10000" to your ~/.bashrc
or equivalent file, and opening a new terminal. On MacOS you can fix
this by running a command like this once: "launchctl limit maxfiles
10000"
ServiceException: Non-MD5 etag ("3fd6e94275941cf4d33768682cd52363-21") present for key <Key: <my_s3_bucket name>,2014-02-18-05-00/disaster-cassandra-1.1/<s3_project_name>/column_attributes/snapshots/1392699667769/<s3_project_name>-column_attributes-ic-1225-Data.db>, data integrity checks are not possible.
Starting synchronization
正在生成同步状态。。。
您已为一个操作请求了多个线程或进程,但
Python的多处理模块所需的功能不是
可用。您的操作将按顺序执行,并且
并行性请求将被忽略。您的最大打开次数
文件0太低,无法进行安全的多处理。在Linux上,您可以
通过在~/.bashrc中添加类似“ulimit-n1000”的内容来修复此问题
或等效文件,并打开新的终端。在MacOS上,您可以修复
这可以通过运行一次这样的命令来实现:“launchctl limit maxfiles
10000"
服务异常:密钥存在非MD5 etag(“3fd6e94275941cf4d33768682cd52363-21”),无法进行数据完整性检查。
开始同步

我错过了什么?有什么想法吗?

您在S3中是否有需要定期同步到Google云存储桶中的特定存储桶?这并不难。谷歌云存储的
gsutil
命令行实用程序有一个
rsync
方法,可以同步两个存储桶的内容。您可以使用此命令同步所有内容:

gsutil -m rsync -r s3://<s3_bucket_name>  gs://<GS_bucket_name>
gsutil rsync -d -r s3://original-bucket gs://google-cloud-bucket
设置gsutil,将该行粘贴到cron脚本中,就完成了。请记住“-d”表示如果在S3中删除了GCS中的内容,它将删除该内容,如果您试图防止意外删除,则可能不希望删除该内容

(免责声明:我有一个相当强烈的利益冲突和偏向谷歌云存储,不能指望我提供客观的建议,哪种云存储解决方案更优越)


关于安装gsutil的说明:

您在S3中是否有需要定期同步到Google云存储桶中的特定存储桶?这并不难。谷歌云存储的
gsutil
命令行实用程序有一个
rsync
方法,可以同步两个存储桶的内容。您可以使用此命令同步所有内容:

gsutil -m rsync -r s3://<s3_bucket_name>  gs://<GS_bucket_name>
gsutil rsync -d -r s3://original-bucket gs://google-cloud-bucket
设置gsutil,将该行粘贴到cron脚本中,就完成了。请记住“-d”表示如果在S3中删除了GCS中的内容,它将删除该内容,如果您试图防止意外删除,则可能不希望删除该内容

(免责声明:我有一个相当强烈的利益冲突和偏向谷歌云存储,不能指望我提供客观的建议,哪种云存储解决方案更优越)


关于安装gsutil的说明:

是的,我有一个特定的S3存储桶,其中C*备份以增量方式保存。这听起来比我想象的更简单!非常感谢@Brandon。我会尝试一下,如果有任何问题,我会给你回复。而且,我会接受答案,一旦我得到这个工作+1目前:-)再次感谢。如果您有大量对象和相当快的网络连接,您可能希望在该命令中使用gsutil-m选项,因此它使用多处理来进行同步(gsutil-mrsync-d-rs3://original bucket gs://google cloud bucket)。还要注意,这个命令将通过任何主机运行GSUTIL来复制数据,因此您可以考虑在GCE上运行它,而不是在您的公司网络上运行。在使用该命令时,实际上我没有一个静态的S3桶URL,因为这是AWS上的一个保护桶。因此,在使用该命令时,如何指定s3 bucket url?例如,我可以从ruby程序中使用AWSAPI访问s3 bucket。那么,如何在cron脚本中运行上述命令?有什么方法可以做到这一点吗?嗨,基恩-谢谢你提供更多的细节。那是一只虫子;我们正在对此进行修复。很抱歉回复太慢-这在gsutil 4.3(现在可用)中已修复。对于这种情况,您将收到一条警告消息,而不是失败消息。是的,我有一个特定的S3存储桶,其中以增量方式保存C*备份。这听起来比我想象的更简单!非常感谢@Brandon。我会尝试一下,如果有任何问题,我会给你回复。而且,我会接受答案,一旦我得到这个工作+1目前:-)再次感谢。如果您有大量对象和相当快的网络连接,您可能希望在该命令中使用gsutil-m选项,因此它使用多处理来进行同步(gsutil-mrsync-d-rs3://original bucket gs://google cloud bucket)。还要注意,这个命令将通过任何主机运行GSUTIL来复制数据,因此您可以考虑在GCE上运行它,而不是在您的公司网络上运行。在使用该命令时,实际上我没有一个静态的S3桶URL,因为这是AWS上的一个保护桶。因此,在使用该命令时,如何指定s3 bucket url?我可以使用aws访问s3存储桶