Sur mon serveur personnel, j’utilise des machines virtuelles sous VirtualBox pour héberger plusieurs machines logiques sur la même machine physique. Cela aide à structurer un parc complexe lorsque les ressources matérielles sont limitées, accélère considérablement le déploiement de nouvelles machines et permet une remise en route rapide de la structure en cas de problème.
Cependant, il n’est pas toujours facile de faire des sauvegardes régulières des différentes machines virtuelles (VM). Dans cette optique, j’ai écrit un petit script bash, qui une fois planifié dans un crontab, permet, pour chaque VM, de :
– arrêter proprement la machine à sauvegarder,
– supprimer l’ancien backup de la destination,
– sauvegarder la VM à son emplacement de destination,
– redémarrer la VM,
– continuer avec le backup de la VM suivante.
La seule chose à faire est de remplir la liste des VM à sauvegarder (avec leur nom tel qu’indiqué dans virtualbox), ainsi que le dossier de sauvegarde, lancer la tache dans un cronjob, et vérifier de temps en temps que les backups se passent bien.
Les prérequis sont :
virtualbox
vboxmanage
#!/bin/bash ####### Script de sauvegarde virtualbox en ligne de commande ####### ### Dependances ### # virtualbox # vboxmanage ### liste des VM a sauvegarder separees par un espace ### VBOXLIST='webserver proxyserver ts3server' ### dossier de sauvegarde (slash en debut et fin) ### EXPORT_DIR='/media/usb/backups/VirtualBox/' echo "Liste des machines virtuelles a exporter : ${VBOXLIST}" for VBOX in ${VBOXLIST}; do OVF_FILE="${EXPORT_DIR}${VBOX}.ovf" VMDK_FILE="${EXPORT_DIR}${VBOX}.vmdk" if [ -f "${OVF_FILE}" ]; then echo "Suppression du fichier : ${OVF_FILE}" rm "${OVF_FILE}" fi if [ -f "${VMDK_FILE}" ]; then echo "Suppression du fichier : ${VMDK_FILE}" fi echo "Arręt de la machine ${VBOX}" vboxmanage controlvm "${VBOX}" acpipowerbutton until $(VBoxManage showvminfo --machinereadable "${VBOX}" | grep -q ^VM$ do sleep 1 done echo "Export de la machine ${VBOX} vers ${OVF_FILE}" vboxmanage export "${VBOX}" -o "${OVF_FILE}" echo "Redémarrage de la machine ${VBOX}" vboxmanage startvm "${VBOX}" --type headless done
Une réflexion au sujet de « [Script] Sauvegarde VirtualBox »