2017-02-15 19 views
0

Я искал сценарий Amazon для инкрементного резервного копирования в виде изображений AMI. Скажем, например, я хочу, чтобы ежедневная резервная копия моего AMI была в 23:59, и я хочу делать резервные копии всего за последние 5 дней. Другие старые AMI того же экземпляра не должны удаляться.Инкрементная резервная копия Amzaon AMI

Любая помощь будет оценена по достоинству.

+0

У вас есть сценарий и вы хотите его улучшить или хотите весь скрипт? – helloV

+0

Мое понимание снимков образа диска Amazon заключается в том, что они являются «инкрементальными» в том, что они совместно используют хранилище для идентичных блоков. Разве это не работает для вас? http://stackoverflow.com/questions/6469556/amazon-ebs-snapshots-as-incremental-backups?rq=1 – Thilo

ответ

0

Amazon Machine Images (AMIs) - это копия тома загрузки для экземпляра Amazon EC2 и необязательные дополнительные тома. Они могут быть созданы из существующего экземпляра с помощью команды Create Image.

AMI хранятся как Elastic Block Store (EBS) Snapshots, с некоторыми дополнительными метаданными AMI. EBS Snapshots - это инкрементные резервные копии, что означает, что сохраняются только блоки на устройстве, которые изменились после вашего последнего моментального снимка. Таким образом, ОИМ также являются поэтапными по своей природе.

Создание AMI через AWS Command-Line Interface (CLI) довольно прост:

aws ec2 create-image --instance-id i-1234567890abcdef0 --name "My server" --description "An AMI for my server" 

Это может быть запущен как запланированная задача (Windows) или хрон (Linux).

Сохранения последних n МАСС или МАССЫ, созданные в течение последних n дней, это просто вопрос написания сценария для получения МАСС с таким же описанием, сортировки по дате и удалению старыхов. Например: 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