我一直在寻找Amazon脚本来将增量备份作为AMI映像。 举例说,我想每天下午11:59备份我的AMI,并且我只需要最近5天的备份。 不应删除其他具有相同实例的旧AMI。增量式Amzaon AMI备份
任何帮助,将不胜感激。
我一直在寻找Amazon脚本来将增量备份作为AMI映像。 举例说,我想每天下午11:59备份我的AMI,并且我只需要最近5天的备份。 不应删除其他具有相同实例的旧AMI。增量式Amzaon AMI备份
任何帮助,将不胜感激。
Amazon Machine Images (AMIs)是Amazon EC2实例的引导卷以及可选的其他卷的副本。可以通过创建图像命令从现有实例创建它们。
AMI以Elastic Block Store (EBS) Snapshots的形式存储,并带有一些额外的AMI元数据。 EBS快照是增量备份,这意味着只有设备上在最近快照后发生更改的块才被保存。因此,AMI在本质上也是增量式的。通过AWS Command-Line Interface (CLI)一个AMI
创建非常简单:
aws ec2 create-image --instance-id i-1234567890abcdef0 --name "My server" --description "An AMI for my server"
这可以运行一个计划任务(Windows)或cron作业(Linux)的。
保持最后n
的AMI,或在过去n
天创建的AMI,只是写一个脚本来使用相同的描述检索的AMI,按日期排序和删除旧的的问题。例如:Script to create daily AMI of AWS server and delete AMI older than n no of days(但它可能是Python中更简单的脚本)。
或者,你可以只拍快照。区别在于快照是卷的备份,而AMI可用于直接启动新实例。
这里是一个脚本,需要所有卷的快照区域(你可以将它修改为仅快照卷对于给定的情况下),并保持最后n
快照:
#!/usr/bin/env python
import boto.ec2
MAX_SNAPSHOTS = 2 # Number of snapshots to keep
# Connect to EC2 in this region
connection = boto.ec2.connect_to_region('YOUR-REGION')
# Get a list of all volumes
volumes = connection.get_all_volumes()
# Create a snapshot of each volume
for v in volumes:
connection.create_snapshot(v.id)
# Too many snapshots?
snapshots = v.snapshots()
if len(snapshots) > MAX_SNAPSHOTS:
# Delete oldest snapshots, but keep MAX_SNAPSHOTS available
snap_sorted = sorted([(s.id, s.start_time) for s in snapshots], key=lambda k: k[1])
for s in snap_sorted[:-MAX_SNAPSHOTS]:
connection.delete_snapshot(s[0])
最后,值得一提的是,Amazon CloudWatch Events可以安排自动创建EBS快照(但不会删除旧的)。请参阅:Tutorial: Schedule EBS Snapshots Using CloudWatch Events
您是否有脚本并希望改进脚本或想要整个脚本? – helloV
我对亚马逊磁盘映像快照的理解是,它们是“增量”的,因为它们共享相同块的存储空间。这不适合你吗? http://stackoverflow.com/questions/6469556/amazon-ebs-snapshots-as-incremental-backups?rq=1 – Thilo