Ce dernier article présente deux scripts de sauvegarde, librement disponible sur Internet et fonctionnant avec ESXI. Le premier utilise l'API Perl fournie par VMware, le second exploite les outils disponibles depuis l'interface SSH. Le second script est accompagné d'un script BATCH d'automatisation de la sauvegarde.
Script PERL
Créer un fichier « ESXi-Backup.pl » dans "C:Program FilesVMwareVMware VI Remote CLI". Basé sur le script qui est disponible sur http://communities.vmware.com/thread/164134.
Le tableau $VMNames[] contient des noms de dossiers. Lorsqu’une machine est crée avec l’assistant, le nom de la VM est identique au nom du dossier de stockage. Si la VM a été personnalisée, ce n’est pas forcément le cas !
Si la VM est active, le script demande la création d’un SnapShot « BackupSnap» pour les VMs portant le nom $VMNames[]. Ainsi, la VM peux continuer à tourner pendant la sauvegarde. L’état de la sauvegarde sera celui de la VM au moment du SnapShot.
Le script parcours la liste des datastore de l’ESXi pour trouver des dossiers au noms de $VMNames[].
Pour chaque datastore, pour chaque dossier, le copie la VM vers le datastore de stockage.
Cette archive est ensuite copiée vers le serveur Rsync.
L’archive est alors supprimée – aucun contrôle n’est fait sur le bon déroulement du transfert vers le serveur Rsync.
L’état de la VM est consolidé avec le SnapShot.
La variable $RCLIPath doit contenir le chemin court vers “Remote CLI “. Pour obtenir le chemin court, taper « dir /x »
Script BASH
Basé sur le script ghettoVCB.sh qui est disponible sur http://communities.vmware.com/docs/DOC-8760)
Dans un même répertoire:
- Editer "ghetto.vcb" pour y inscrire le datastore de destination de sauvegardes.
- Créer une archive "archive.tgz" contenant "ghetto.vcb".
- Créer un fichier "list.lst" contenant le nom des VMs à sauvegarder.
- Copier les utilitaires plink, pscp, mpack, bmail
- Créer un fichier "go.bat" contenant le code suivant:
del /s body.msg
del /s body.txt
date /T >> body.txt
time /T >> body.txt
echo "Copy file to esxi" >> body.txt
pscp -pw password list.lst root@192.168.1.60:"/tmp/liste.lst" >> debug.log
pscp -pw password archive.tgz root@ 192.168.1.60:"/tmp/archive.tgz" >> debug.log
plink -v -pw password root@ 192.168.1.60 tar zxv -f /tmp/archive.tgz -C /tmp >> debug.log
plink -v -pw password root@ 192.168.1.60 chmod +x /tmp/ghettoVCB.sh >> debug.log
echo "-----------------------" >> body.txt
date /T >> body.txt
time /T >> body.txt
echo "run backup script" >> body.txt
plink -v -pw password root@ 192.168.1.60"sh ./tmp/ghettoVCB.sh /tmp/liste.lst" >> debug.log
echo "-----------------------" >> body.txt
date /T >> body.txt
time /T >> body.txt
echo "send notification and log by email" >> body.txt
mpack -s "Sauvegarde de Esxi 192.168.1.60 terminee!" -d body.txt -o body.msg debug.log
bmail -d -h -s smtp.monserver.fr -t aaaxxx.fr -f yyyy@zzz.fr -m body.msg
echo "-----------------------" >> body.txt
date /T >> body.txt
time /T >> body.txt[/shell]
lancer la sauvegarde en double-cliquant "go.bat" ou programmer un tâche windows pour en automatiser le lancement
SynerGeek.fr Informatique & Veille Technologique
