GUIDA Backup e ripristino di un subvolume Btrfs con "btrfs send|receive"

EmanueleC

Utente Èlite
5,308
1,689
CPU
Ryzen 5 2600x
Dissipatore
stock
Scheda Madre
ROG STRIX B450-F GAMING
Hard Disk
1TB Toshiba, Toshiba TR200 240 GB
RAM
Corsair DDR4 3000 Mhz 2x8 GB
Scheda Video
GeForce GTX 750Ti 2gb
Alimentatore
Seasonic Focus Gold 450W
Case
BitFenix Neos
Sistema Operativo
Fedora 33
Il primo invio chiamato Initial Bootstrapping è un backup completo e a seconda delle dimensione impiegherà del tempo.
Il secondo invio può essere fatto in modo incrementale, se conservato l'ultimo snapshot inviato. A differenza di rsync, cp, che devono scansionare l'origine e la destinazione per confrontare i cambiamenti e sapere cosa copiare, Btrfs send non ha bisogno di leggere un singolo file sulla sorgente o destinazione per sapere cosa è cambiato, ed è molto più veloce. Btrfs send|receive è adatto per il backup, ma è principalmente uno schema di replica. Non ha opzioni di filtro per escludere o includere cartelle/file. Preserva tutto: date, permessi ecc.

Per approfondire btrfs send|receive: https://btrfs.wiki.kernel.org/index.php/Incremental_Backup

Per inviare lo snapshot di un subvolume, questo deve essere in sola lettura, la destinazione deve essere una partizione Btrfs.


  1. Mount del filesystem radice (nel mio caso la partizione è /dev/sda2):
    Codice:
    sudo mount -t btrfs -o --options-source /dev/sda2 /mnt
  2. Snapshot dei subvolumi in sola lettura con l'opzione "-r"
    radice
    Codice:
    sudo btrfs subvolume snapshot -r / /mnt/snap_root1
    home
    Codice:
    sudo btrfs subvolume snapshot -r /home /mnt/snap_home1
  3. Invio degli snapshot sulla destinazione di backup
    radice
    Codice:
    sudo btrfs send /mnt/snap_root1 | sudo btrfs receive /percorso/backup/
    home
    Codice:
    sudo btrfs send /mnt/snap_home1 | sudo btrfs receive /percorso/backup/
  4. Secondo snapshot per inviare solo la differenza tra snapshot 1 e 2
    radice
    Codice:
    sudo btrfs subvolume snapshot -r / /mnt/snap_root2
    home
    Codice:
    sudo btrfs subvolume snapshot -r /home /mnt/snap_home2
  5. Inviare solo la differenza (incremental)
    radice
    Codice:
    sudo btrfs send -p /mnt/snap_root1 /mnt/snap_root2 | sudo btrfs receive /percorso/backup/
    home
    Codice:
    sudo btrfs send -p /mnt/snap_home1 /mnt/snap_home2 | sudo btrfs receive /percorso/backup/
  6. A questo punto si potrebbe rimuovere lo snapshot 1, per poi al prossimo backup creare uno snapshot 3.
  7. Ripristino dal backup per home e radice da fare da una distro live
    Mount della partizione da ripristinare

    Codice:
    sudo mount -t btrfs -o noatime,compress=zstd:1 /dev/sdXY /mnt
    Invio del backup
    Per la radice:
    Codice:
    sudo btrfs send /percorso/backup/snap_root2 | sudo btrfs receive /mnt/
    Per la home:
    Codice:
    sudo btrfs send /percorso/backup/snap_home2 | sudo btrfs receive /mnt/
  8. Se si vuole rinominare il subvolume per non modificare il mount su "/etc/fstab" (se si preferisce modificare fstab e puntare al subvolume: subvol=snap_home1)
    Rinomina del vecchio:
    Codice:
    sudo mv /mnt/@ /mnt/@_vecchio
    Codice:
    sudo mv /mnt/@home /mnt/@home_vecchio
    Rinomina il nuovo:
    Codice:
    sudo mv /mnt/snap_root2 /mnt/@
    Codice:
    sudo mv /mnt/snap_home2 /mnt/@home
  9. Riportare il subvolume in lettura e scrittura
    Codice:
    sudo btrfs property set /mnt/@ ro false
    Codice:
    sudo btrfs property set /mnt/@home ro false

  10. Per ripristinare un sistema su una partizione vuota:
  • Su sistemi EFI, con gparted, Dispositivo > crea tabella partizione > scegliere gpt crea una partizione di 500mb circa in fat32, vai su: Partizione > Gestione flag > selezionare boot|esp:
    Schermata del 2020-09-10 17-47-52.png

    creare altra partizione in btrfs per ripristino dei subvolumi sul nuovo sistema.
    Mount della nuova partizione:
    Codice:
    sudo mount -t btrfs -o noatime,compresszstd:1,autodefrag /dev/sdXY /mnt
  • Invio dei backup sulla nuova partizione
    Codice:
    sudo btrfs send /percorso/backup/snap_root2 | sudo btrfs receive /mnt/
    Codice:
    sudo btrfs send /percorso/backup/snap_home2 | sudo btrfs receive /mnt/
  • Rinomina i subvolumi
    Codice:
    sudo mv /mnt/snap_root2 /mnt/@
    Codice:
    sudo mv /mnt/snap_home2 /mnt/@home
  • Riportare il subvolume in lettura e scrittura
    Codice:
    sudo btrfs property set /mnt/@ ro false
    Codice:
    sudo btrfs property set /mnt/@home ro false
  • Modificare l'UUID delle vecchie partizioni presenti sul subvolume radice, con i nuovi UUID visibili da GNOME dischi: /mnt/@/etc/fstab
    Schermata del 2020-09-10 18-57-05.png
  • Smontare la partizione
    Codice:
    sudo umount /mnt
  • Mount della radice
    Codice:
    sudo mount -t btrfs -o noatime,compress=zstd:1,autodefrag,subvol=@ /dev/sdXY /mnt
  • Codice:
    for i in dev proc sys run; do sudo mount --bind /$i /mnt/$i; done
  • Mount della partizione EFI creata precedentemente
    Codice:
    sudo mount /dev/sdXY /mnt/boot/efi
  • Mount bind delle cartelle dev, proc, sys, run
    Codice:
    for i in dev proc sys run; do sudo mount --bind /$i /mnt/$i; done
  • chroot per installare il grub (testato su Ubuntu)
    Codice:
    sudo chroot /mnt
    Codice:
    grub-install /dev/sdY
    Codice:
    update-grub
    Usciamo
    Codice:
    exit
  • Umount della partizione EFI
    Codice:
    sudo umount /mnt/boot/efi
  • Riavvio del sistema. Se tutto è andato come previsto, dovremmo avere il sistema funzionante.
 
Ultima modifica:

EmanueleC

Utente Èlite
5,308
1,689
CPU
Ryzen 5 2600x
Dissipatore
stock
Scheda Madre
ROG STRIX B450-F GAMING
Hard Disk
1TB Toshiba, Toshiba TR200 240 GB
RAM
Corsair DDR4 3000 Mhz 2x8 GB
Scheda Video
GeForce GTX 750Ti 2gb
Alimentatore
Seasonic Focus Gold 450W
Case
BitFenix Neos
Sistema Operativo
Fedora 33
Quindi questa cosa sarebbe come i punti di ripristino di Windows giusto? Grazie
Non so in che modo fa i punti di ripristino Windows 10, ma da quel che ho capito ha una piccola partizione sullo stesso disco, che è quello che fa già gli snapshot e che puoi gestire semplicemente con tool come Timeshift ed è istantaneo, con btrfs send invii uno snapshot a un disco esterno di backup.
 
  • Mi piace
Reactions: Numero8

Entra

oppure Accedi utilizzando

Discussioni Simili