2013-03-10 151 views
27

我想用Amazon Glacier镜像S3存储桶。Amazon Glacier可以镜像Amazon S3存储桶吗?

Glacier FAQ状态:

亚马逊S3现在提供,使您能够 利用用于数据归档 亚马逊冰川的,成本极低的存储服务一个新的存储选项。您可以定义S3生命周期规则,以自动将 套Amazon S3对象归档到Amazon Glacier中,以降低您的存储成本 。您可以通过访问Amazon S3开发人员指南中的对象生命周期管理 主题来了解更多信息。

这就近了,但我想镜像。我不想删除S3上的内容,只将其复制到Glacier。

可以使用AWS自动设置吗?

或者这个镜像需要手动上传到冰川吗?

+0

我也想要这个功能。不过,我认为它现在不存在。 – 2013-03-10 21:58:51

+0

通过将S3镜像到Glacier,你想完成什么? – 2013-03-10 22:54:47

+0

@EricHammond我想在Glacier上备份我的S3文件。 – 2013-03-11 11:35:14

回答

8

现在可以通过首先在Amazon S3上创建跨区域复制存储桶(此复制存储桶将成为原始存储桶的镜像 - 请参阅http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html),然后设置一个“S3到Glacier”生命周期规则(将数据移动到Glacier)从复制存储区中。

3

亚马逊不通过其API提供此功能。我们遇到了同样的问题,并通过运行将文件重新上传到Glacier的每日cron作业来解决问题。

以下是可以使用Python和boto将文件复制到Glacier库的代码片段。请注意,使用下面的代码,您必须先从S3本地下载文件,然后才能运行它(例如,您可以使用s3cmd) - 以下代码可用于将本地文件上传到Glacier。

import boto 

# Set up your AWS key and secret, and vault name 
aws_key = "AKIA1234" 
aws_secret = "ABC123" 
glacierVault = "someName" 

# Assumption is that this file has been downloaded from S3 
fileName = "localfile.tgz" 

try: 
    # Connect to boto 
    l = boto.glacier.layer2.Layer2(aws_access_key_id=aws_key, aws_secret_access_key=aws_secret) 

    # Get your Glacier vault 
    v = l.get_vault(glacierVault) 

    # Upload file using concurrent upload (so large files are OK) 
    archiveID = v.concurrent_create_archive_from_file(fileName) 

    # Append this archiveID to a local file, that way you remember what file 
    # in Glacier corresponds to a local file. Glacier has no concept of files. 
    open("glacier.txt", "a").write(fileName + " " + archiveID + "\n") 
except: 
    print "Could not upload gzipped file to Glacier" 
0

我有同样的问题,但承受不了从冰川恢复长通常3-5小时的延迟。

在我的情况下,我创建了一个商业产品,可以同步和创建我的桶的快照和其他东西。

它也可以利用S3 Reduced Redundancy Storage来更好地接近Glacier的成本节约效益。

你可以尝试一个全功能的2周试用版在bucketbacker.com

3

这是通过Lifecycle policy放任自由,但对象是不具备的S3了。您可以将其复制到单独的存储区中以保留它。

+0

你知道它为什么被删除吗?或者我可以找到关于它被删除的信息? – Progress1ve 2017-10-10 07:33:41

0

如果您首先在S3存储桶上启用版本控制,则可以将生命周期规则应用于以前的版本。这将实现非常类似的结果,但不会有当前版本的备份。