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:
Page générée en 0.006 secondes