On propose depuis n'importe qu'elle machine du cluster :
Le pool de backup est sur la VM felicette, qui est un KVM porté par galanga.april.org. Elle est accessible à l'adresse backup.chapril.org.
Vous devez être capable d'exécuter avec succès
# ssh -p 2242 -A backup@backup.chapril.org true
Si ce n'est pas le cas, vous pouvez suivre la section « Accès SSH » de la page acces_ssh, en prenant soin de ne pas vous restreindre à une commande forcée qui risque de vous handicaper.
Pour lister les backups (archives) d'une VM, exécuter depuis cette VM :
borgmatic -l
Pour avoir la synthèse du dépôt d'archive :
borgmatic -i
En supposant que 2021-01-02T01:43:34
soit le nom d'une archive, pour voir les infos d'une archive en particulier :
BORG_RSH="ssh -p 2242 -A" borg info backup@backup.chapril.org:/srv/backups/$(hostname --fqdn)::2021-01-02T01:43:34
Pour extraire /etc/issue de l'archive précédente dans le dossier courant, on liste le fichier de façon relative, comme un tar :
BORG_RSH="ssh -p 2242 -A" borg extract backup@backup.chapril.org:/srv/backups/$(hostname --fqdn)::2018-09-02 etc/issue
Pour extraire l'archive entière dans le dossier courant, il faudrait faire :
BORG_RSH="ssh -p 2242 -A" borg extract backup@backup.chapril.org:/srv/backups/$(hostname --fqdn)::2018-09-02
Options utiles de borg extract :
--list output verbose list of items (files, dirs, ...) -n, --dry-run do not actually change any files -e PATTERN, --exclude PATTERN exclude paths matching PATTERN # Extract entire archive $ borg extract /path/to/repo::my-files # Extract entire archive and list files while processing $ borg extract -v --list /path/to/repo::my-files # Extract the "src" directory $ borg extract /path/to/repo::my-files home/USERNAME/src # Extract the "src" directory but exclude object files $ borg extract /path/to/repo::my-files home/USERNAME/src --exclude '*.o'
Avant de restaurer il est parfois utile d'inspecter en détails une archive ou un dépot entier à l'aide d'un point de montage. On peut le monter localement :
BORG_RSH="ssh -p 2242 -A" borg mount backup@backup.chapril.org:/srv/backups/$(hostname --fqdn) /mnt
backup-chapril
qui dump la sortie de lsblk
serait un plus.
Il faut avoir un fs près à recevoir les fichiers. Pour reconstruire le lvm à l'identique, le dossier /etc/lvm/backup/ est probablement utile, le /etc/fstab aussi. Si vous avez un volume vierge sous la patte vous pouvez restaurer la structure LVM à l'aire de
vgcfgrestore -f le_fichier_backup VolumeGroupName
À défaut de tout autre chose, on peut imaginer cloner la « VM modèle », adapter les tailles de LVM et surtout des LVs, et monter les FS de l'image QCOW via les libguestfs-tools
depuis n'importe quelle hôte.
On se met à l'emplacement de la future racine :
BORG_RSH="ssh -p 2242 -A" borg extract backup@backup.chapril.org:/srv/backups/$(hostname --fqdn)::2018-09-02
Ensuite il reste à
dpkg –set-selections
)Et ça devrait rouler.
cron
est une bonne pratique. Il ne suffit pas de regarder /etc/cron.d
: la configuration totale de cron
peut être bien plus sioux.
Ceci est un exemple de procédure appliquée pour faire un test de restauration de la VM pad dans le cadre du ticket de test de reprise #2408. Il est basé sur les éléments ci-dessus mais j'ai utilisé un LiveCD plutôt que de monter les qcow sur l'hôte.
apt update
apt install lvm2 openssh-server
vgchange -a y mount /dev/modele-vg/root /mnt/
mkdir /root/.ssh cp /mnt/etc/ssh_authorized_keys/root /root/.ssh/authorized_keys systemctl start sshd
ssh-keygen -t ed25519
vi /etc/ssh/authorized_keys/backup
export BORG_REPO=/srv/backups/<SERVICE-NAME>.cluster.chapril.org/ borg list
ssh -p 2242 backup@backup.chapril.org true
BORG_RSH="ssh -p 2242 -A" borg extract backup@backup.chapril.org:/srv/backups/<SERVICE-NAME>.cluster.chapril.org::2021-XX-XXTXX:XX:XX etc/fstab
BORG_RSH="ssh -p 2242 -A" borg extract backup@backup.chapril.org:/srv/backups/<SERVICE-NAME>.cluster.chapril.org::2021-XX-XXTXX:XX:XX
/etc/firehol/firehol.conf
# Recréer le cluster (fichiers vides à la restauration) : pg_lsclusters pg_dropcluster --stop 11 main pg_createcluster --start 11 main systemctl restart postgresql@11-main.service # Restaurer les fichiers SQL mv /var/backups/pgsql/*.sql.bz2 /usr/lib/postgresql/ su - postgres bzip2 -c -d postgres.sql.bz2 | psql postgres bzip2 -c -d template1.sql.bz2 | psql template1 createdb etherpad createuser etherpad bzip2 -c -d etherpad.sql.bz2 | psql etherpad rm etherpad.sql.bz2 postgres.sql.bz2 template1.sql.bz2
ssh -L 9001:127.0.0.1:9001 root@test-backup.cluster.chapril.org