我一直在尋找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