Script per fer backups dels linux containers amb LXD

De HLV Wiki
La revisió el 09:36, 11 març 2019 per Roger (discussió | contribucions)
(dif) ← Versió més antiga | Versió actual (dif) | Versió més nova → (dif)
Salta a: navegació, cerca

Fork on github

Script bash per fer backups dels Linux Containers amb el daemon LXD. Primer es crea un snapshot, després es publica una imatge de l'snapshot i finalment s'exporta la imatge a un arxiu comprimit .tar.gz amb la data actual. En cas que el backup sigui correcte, s'eliminen el backup, la imatge i el snapshot.

nano backup-container.sh

Copiem l'script:

#!/bin/bash
# exec: ./backup-container.sh <container-name>
PATH=$PATH:/snap/bin

echo "creating snapshot..."
lxc snapshot $1 bkp-$1-`date +\%Y-\%m-\%d`
lxc list $1
echo "Snapshot created. Publishing image of snapshot..."
lxc publish $1/bkp-$1-`date +\%Y-\%m-\%d` --alias bkp-$1-`date +\%Y-\%m-\%d`
echo "Image published. Exporting image to bkp-"$1"-"`date +\%Y-\%m-\%d`".tar.gz ..."


EXPORT=$(lxc image export bkp-$1-`date +\%Y-\%m-\%d` /var/lib/backups/bkp-$1-`date +\%Y-\%m-\%d`)

#verify export result is success
if [[ $EXPORT = *"Image exported successfully"* ]]; then
        echo "Backup tarball Finished"
        #if success, clean yesterday backup
        ##delete yesterday snapshot and backup
        echo "Delete yesterday image, snapshot and backup..."
        lxc image delete bkp-$1-`date +\%Y-\%m-\%d -d "yesterday"`
        lxc delete $1/bkp-$1-`date +\%Y-\%m-\%d -d "yesterday"`
        file=/var/lib/backups/bkp-$1-`date +\%Y-\%m-\%d -d "yesterday"`.tar.gz
        if [ -f $file ] ; then
                rm $file
        fi
        echo "Clean done!"
else
        echo "Error exporting image to tarball"
fi

Donem permisos d'execució:

chmod +x backup-container.sh

Executem l'script:

sh backup-container.sh <container-name>