2017-02-15 13 views
0

Je cherchais un script Amazon pour avoir une sauvegarde incrémentielle en tant qu'images AMI. Par exemple, je veux avoir une sauvegarde de mon AMI à 23h59 tous les jours et je veux des sauvegardes de seulement 5 derniers jours. D'autres AMI plus anciennes de même instance ne doivent pas être supprimées.Sauvegarde AMI incrémentielle Amzaon

Toute aide serait appréciée.

+0

Avez-vous un script et que vous voulez améliorer ou vous voulez le script entier? – helloV

+0

Ma compréhension des snapshots d'image disque Amazon est qu'ils sont "incrémentiels" en ce qu'ils partagent le stockage pour des blocs identiques. Cela ne fonctionne-t-il pas pour vous? http://stackoverflow.com/questions/6469556/amazon-ebs-snapshots-as-incremental-backups?rq=1 – Thilo

Répondre

0

Amazon Machine Images (AMIs) sont une copie du volume de démarrage pour une instance Amazon EC2 et éventuellement des volumes supplémentaires. Ils peuvent être créés à partir d'une instance existante via la commande Create Image.

Les AMI sont stockées sous la forme Elastic Block Store (EBS) Snapshots, avec des métadonnées AMI supplémentaires. Les instantanés EBS sont des sauvegardes incrémentielles, ce qui signifie que seuls les blocs du périphérique qui ont été modifiés après l'instantané le plus récent sont enregistrés. Ainsi, les AMI sont également de nature incrémentale.

Création d'un AMI via le AWS Command-Line Interface (CLI) est assez simple:

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

Cela pourrait être exécuté comme une tâche (Windows) ou planifié une tâche cron (Linux).

Garder la dernière n AMIs ou AMIs créés dans les n derniers jours, est juste une question d'écrire un script pour récupérer AMIs avec la même description, le tri par date et la suppression de plus anciens. Par exemple: Script to create daily AMI of AWS server and delete AMI older than n no of days (mais ce serait un script plus simple dans quelque chose comme Python).

Vous pouvez également prendre des instantanés. La différence est qu'un instantané est une sauvegarde du volume, alors qu'une AMI peut être utilisée pour lancer directement une nouvelle instance.

Voici un script qui prend un instantané de tous les volumes dans une région (vous pouvez le modifier uniquement les volumes d'instantanés pour une instance donnée) et conserve les derniers n instantanés:

#!/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]) 

Enfin, il est à noter que Amazon CloudWatch Events peut être programmé pour créer automatiquement des snapshots EBS (mais il ne supprimera pas les anciens). Voir: Tutorial: Schedule EBS Snapshots Using CloudWatch Events