Ce tutoriel explique comment créer et sauvegarder des conteneurs LXC à l’aide de Borgbackup.
Afin de pouvoir être exploitée la sauvegarde par BorgBackup doit se conformer à un certain nombres de critères.
LXC (LinuX Container) est un système permettant d'installer plusieurs distributions et applications séparées les unes des autres (comme des machines virtuelles) mais qui partagent malgré tout le même noyau du système hôte.
Si des conteneurs LXC gérés par le backend btrfs de LXC,sont sur des sous-volumes btrfs situés sous $ROOT, les conteneurs LXC 2.x doivent être arrêtés avant de pouvoir prendre un snapshot avec la commande :
lxc-stop -n $CONTAINER-NAME.
Note: S'assurer qu’ils peuvent être arrêtés en toute sécurité sans perte de données, Laisser vide pour ignorer la sauvegarde du conteneur LXC.
Sauvegarder les données utilisateur avant les données système, au cas où.
Pour restaurer un système amorçable les sauvegardes utiles ont besoin à la fois de /boot /var et /etc.
Si ces dossiers ne sont pas dans le ROOT il faut également les sauvegarder.
Cela pourrait aussi être un bon idée de sauvegarder le ESP UEFI
Les bases de données dans ne seront pas cohérentes à moins de les poser ou d'en prendre un instantané d'une manière ou d'une autre
Le manifest est la racine de la hiérarchie d'objets. Il référence toutes les archives d'un référentiel, et donc toutes les données qu'il contient. Le manifest est réécrit chaque fois qu'une archive est créée, supprimée ou modifiée. Cela ressemble à ceci:
{ b'version ': 1, b'timestamp ': b'2017-05-05T12: 42: 23.042864', b'item_keys ': [b'acl_access', b'acl_default ', ...], b'config ': {}, b'archives ': { b'2017-05-05-system-backup ': { b'id ': b' <ID d'objet binaire sur 32 octets> ', b'time ': b'2017-05-05T12: 42: 22.942864', }, }, b'tam ': ..., }
S'assurer que les manifestes sont placés sur un sous-volume qui sera sauvegardé.
Pour atténuer des attaques du type “Pre-1.0.9 manifest spoofing vulnerability” (CVE-2016-10099), on peut créer des copies de la sortie de borg-list à chaque invocation de btrfs-borg pour disposer d'une listes des archives suvegardées. Mais cela exposera la sortie de borg-list à tout utilisateur ayant un accès root sur le lecteur où ce fichier est stocké.
Le standard de marquage de répertoire en cache est un moyen simple de marquer les répertoires à exclure des sauvegardes ou de tout autre archivage.
La norme propose que si un fichier particulier nommé CACHEDIR.TAG est présent dans un répertoire, le contenu de ce répertoire et tous ses sous-répertoires ne doivent pas nécessairement être archivés.
Ces fichiers peuvent être créés comme ceci:
touch /home/*/.cache/CACHEDIR.TAG
Pour exclure des répertoires de sauvegarde que contient un fichier nommé CACHEDIR.TAG utiliser l'argument
borgbackup permet de sauvegarder des sous-volumes nommés. Si on ne posséde pas déjà d'un point de montage pour ces volumes, le créer comme ceci
install -d -m 700 /btrfs-admin
Ensuite, pour Ubuntu, ajouter le point de montage dans /etc/fstab:
# Le root / est dans le volume logique lg01 /dev/mapper/vg01-lg01 / btrfs defaults,subvol=@ 0 1 #/dev/mapper/vg01-lg02 /bkup btrfs defaults 0 2 /dev/mapper/vg01-lg03 /data btrfs defaults 0 2 #/dev/mapper/vg01-lg01 /home btrfs defaults,subvol=@home 0 2 /dev/mapper/vg01-lg02 /home btrfs defaults,subvol=@home 0 2 /dev/mapper/vg01-sp01 none swap sw 0 0 # dupliquer cette ligne, puis le point de montage et supprime l'argument subvol /dev/mapper/vg01-lg01 /btrfs-admin btrfs defaults defaults 0 1
S'assurer que tous les subvolumes sont synchronisés.
$ btrfs sub sync $ROOT
Prendre un snapshot des subvolumees
$ btrfs sub snap -r $ROOT/$i $ROOT/$SNAPS/$i
S'assurer que tous les subvolumes sont synchronisés.
$ btrfs sub sync $ROOT/$SNAPS/$i
Arrêter les conteneurs LXC
$ lxc-stop -n $i
Prendre le snapshot
$ lxc-snapshot -n $i
S'assurer que tous les subvolumes sont synchronisés.
$ btrfs sub sync $LXCDIR
Redémarrer le conteneur LXC
$ lxc-start -n $i
$ borg create --list --progress --stats --exclude-caches -C lz4 \ [Nom-de-la-sauvegarde]\.lz4 \ [SUBS] [LXCSNAPS] [OTHERS]
$ cd $ROOT/$SNAPS $ btrfs sub delete -c $SUBS $ btrfs sub sync $ROOT