[Script] Sauvegarde VirtualBox

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

La source à jour sur mon GitHub

About Captain Stouf

Spécialiste en systèmes informatiques, Développeur matériel et logiciel, Inventeur, Maker : électronique, Systems on Chip, micro-controlleurs, Internet of Things, Modélisation / Scan / Impression 3D, Imagerie...

One thought on “[Script] Sauvegarde VirtualBox

Laisser un commentaire