Etat du script: Fonctionnel
Présentation:
[root@esx root]# crontab -e SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/root/ 00 3 * * * /bin/sh /root/backup.sh >> /dev/null
Le script:
#!/bin/sh
# Sauvegarde machines virtuelles pour ESX4
# Fonctionnement: Ajouter simplement l'annotation backup-auto à la machine à sauvegarder
# v0.1 20100303 clockover
#Variables
LOG=/root/backup.txt
FROM=/vmfs/volumes/Datastore-production
TO=/vmfs/volumes/Datastore-backup
TODAY=`date +%Y%m%d`
OLD_BACKUP=`date --date '14 days ago' "+%Y%m%d"`
#Créer un répertoire de sauvegarde et supprimer l'ancien backup
mkdir $TO/$TODAY
rm -rf $TO/$OLD_BACKUP
#Remonter toutes les VMs comprenant une annotation "backup-auto"
vim-cmd vmsvc/getallvms | grep backup-auto > $LOG
#Lecture du résultat ligne par ligne et backup de chaque VM
exec < $LOG
while read line
do
#Récupération de l'id de la VM et création d'un snapshot
vmid=$(echo $line | awk 'BEGIN{FS=" "} {print $1}')
vim-cmd vmsvc/snapshot.create $vmid backup-auto 1 1
#Attente de la création du snapshot
while [`vim-cmd vmsvc/snapshot.get $vmid | grep "backup-auto"` -eq ""] > /dev/null
##A CORRIGER: ERREUR A CE NIVEAU. STRING PRIT POUR UNE COMMANDE A LA FIN DE LA BOUCLE
##NE GENE PAS LE FONCTIONNEMENT
do
sleep 10s
done
#Récupération du dossier contenant la VM et lancement de la copie
vmfolder=$(echo $line | awk 'BEGIN{FS=" "} {print $4}' | awk 'BEGIN{FS="/"} {print $1}')
mkdir $TO/$TODAY/$vmfolder
cp -f $FROM/$vmfolder/$vmfolder-flat.vmdk $TO/$TODAY/$vmfolder/
cp -f $FROM/$vmfolder/$vmfolder.vmdk $TO/$TODAY/$vmfolder/
cp -f $FROM/$vmfolder/$vmfolder.nvram $TO/$TODAY/$vmfolder/
cp -f $FROM/$vmfolder/$vmfolder.vmx $TO/$TODAY/$vmfolder/
cp -f $FROM/$vmfolder/$vmfolder-vmxf $TO/$TODAY/$vmfolder/
cp -f $FROM/$vmfolder/$vmfolder.vmsd $TO/$TODAY/$vmfolder/
cp -f $FROM/$vmfolder/*.log $TO/$TODAY/$vmfolder/
#Suppression du snapshot
vim-cmd vmsvc/snapshot.remove $vmid
done
TODO Liste:
Historique:

Version 0.1 (2010/03/03)Page générée en 0.006 secondes