Rollback di sistema Debian 12
Ho provato ad eseguire il rollback di sistema come descritto qui ma non funziona: al riavvio del computer mi ritrovo sempre sul subvol ID 256. Allora bisogna cambiare approccio.
Dobbiamo montare il subvolume toplevel ID 5 sulla directory dedicata /mnt/system:
$ sudo mount /dev/mapper/sda3_crypt /mnt/system
Creiamo la directory /mnt/system/oldroot/:
$ sudo mkdir /mnt/system/oldroot/
Spostiamo in questa directory il subvolume attivo @rootfs:
$ sudo mv /mnt/system/@rootfs /mnt/system/oldroot
Adesso eseguiamo lo spanshot completo dello snapshot di sistema precedentemente acquisito con destinazione /mnt/system/@rootfs:
$ sudo btrfs subvol snap /snapshots/@2025-01-17_12:09:25_subvol256 /mnt/system/@rootfs
Create a snapshot of ‘/snapshots/@2025-01-13_13:44:31_subvol273’ in ‘/mnt/system/@rootfs’
Riavviamo il computer: $ sudo reboot
Possiamo mettere tutti i comandi nello script rollback.sh:
$ sudo nano /usr/bin/rollback.sh
#!/bin/bash
read -n 2 -p “Hai avviato la procedura di Rollback del sistema. Vuoi continuare? [si/no] :” risposta
if [ $risposta ] && [ $risposta = “si” ]
then echo -e “\n\nOk. Continuiamo.”
echo -e “\nQuesta è la lista degli snapshot disponibili:”
dir=”/snapshots/”
ls -l $dir #La lista degli snapshot da poter utilizzare per il copia/incolla
echo -e “\nInserisci il nome dello snapshot da cui vuoi eseguire il rollback: “
read shot
completo=$dir$shot
if [ -d “$completo” ]
then mount /dev/mapper/sda3_crypt /mnt/system
id=$(btrfs inspect-internal rootid /)
rm -r /mnt/system/oldroot/@rootfs
mv /mnt/system/@rootfs /mnt/system/oldroot
btrfs subvol snap $completo /mnt/system/@rootfs
now=$(date +’%Y-%m-%d_%T’)
echo “$now @rootfs $id ha effettuato il rollback da $completo” >> $dir.rollback.log
echo -e “\n Chiudi tutti i programmi e riavvia il computer per completare il Rollback.\n”
else echo -e “\n Nome dello snapshot improprio. Procedura interrotta.\n”
fi
else echo -e “\n Unica risposta valida è ‘si’. Procedura terminata.\n”
fi
Rendiamo lo script eseguibile solo da root:
$ sudo chmod u+x /usr/bin/rollback.sh
È opportuno eseguire il primo snapshot di sistema solo dopo aver salvato gli script snapshot.sh e rollback.sh. Eseguiamo il primo rollback:
$ sudo rollback.sh
Hai avviato la procedura di Rollback del sistema. Vuoi continuare? [si/no] :si
Ok. Continuiamo.
Questa è la lista degli snapshot disponibili:
totale 0
drwxr-xr-x 1 root root 242 17 gen 09.04 @2025-01-17_12:09:25_subvol256
I nserisci il nome dello snapshot da cui vuoi eseguire il rollback:
@2025-01-17_12:09:25_subvol256
Create a snapshot of ‘/snapshots/@2025-01-13_13:44:31_subvol273’ in ‘/mnt/system/@rootfs’
Chiudi tutti i programmi e riavvia il computer per completare il Rollback.
Riavviamo il computer: $ sudo reboot
FUNZIONA!