====== Snapper ======
Fournit une abstraction des snapshots BTRFS et permet de faire automatiquement des instantanés lors des mises à jour avec APT.
* [[https://wiki.archlinux.org/index.php/snapper]]
* [[https://gist.github.com/broedli/4f401e0097f185ba34eb]]
==== Mise en place ====
sudo apt install snapper
sudo snapper -c root create-config /
Désactiver les instantanés automatiques en définissant à ''no'' la clé ''TIMELINE_CREATE'' dans ''/etc/snapper/configs/root'' et en désactivant le timer:
sudo systemctl disable snapper-timeline.timer
Désactiver les instantanés au démarrage:
sudo systemctl disable snapper-boot.timer
Dupliquer dans ''/etc/fstab'' l'entrée la partition gérée par snapper pour considérer les snapshots ([[https://github.com/openSUSE/snapper/issues/159]]):
UUID=9a56fcd5-7718-4fc2-a6d1-d4247d7d155e /.snapshots btrfs subvol=.snapshots 0 0
==== Lister les snapshots ====
sudo snapper -c root list
''root'' est la configuration par défaut, donc il n'est pas nécessaire de la préciser.
==== Supprimer des snapshots ====
sudo snapper rm 1211-1234
==== Restaurer un snapshot ====
=== À chaud ===
sudo snapper list
sudo snapper rollback ${id_of_snapshot_to_get_back}
Va créer deux snapshots: un en lecture-seule de l'état actuelle du disque, et va dupliquer le snapshot auquel on souhaite revenir, enlever sa lecture-seule et le définir comme sous-volume par défaut. Il faut ensuite redémarrer.
=== Depuis un live CD ====
Utiliser un [[https://www.debian.org/CD/live/#__do_not_save__|live CD Debian]] et booter dessus.
sudo apt update
sudo apt install btrfs-progs snapper
sudo mkdir /mnt/dd
sudo mount /dev/sda1 /mnt/dd
sudo mount -o subvol=.snapshots /dev/sda1 /mnt/dd/.snapshots
sudo snapper --no-dbus -r /mnt/dd list
sudo snapper --no-dbus -r /mnt/dd rollback ${id_of_snapshot_to_get_back}
Ça doit aussi être faisable en copiant la configuration de Snapper (''sudo cp /mnt/dd/etc/snapper/configs/root /etc/snapper/configs/dd''), en adaptant la clé ''SUBVOLUME'' de la configuration et en ajoutant cette configuration à la liste présente dans le fichier ''/etc/default/snapper'':
## Type: string
## Default: ""
# List of snapper configurations.
SNAPPER_CONFIGS="dd"
S'il faut régénérer Grub (qui est sur une partition différente):
mkdir /media/temporary
mount -o subvol=/subvolumes/root /dev/sdXX /media/temporary
cd /media/temporary
mount -o bind /dev dev
mount -o bind /sys sys
mount -o bind /proc proc
mount -o bind /boot boot # only necessary if you have a separate boot partition
chroot .
update-grub
exit
(non testé)