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

Pubblicità

EmanueleC

Utente Èlite
Messaggi
5,683
Reazioni
1,865
Punteggio
168
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.readthedocs.io/en/latest/Send-receive.html

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 da un moderatore:
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.
 
Guida molto interessante. Sto da poco cercando di capire come funzionano gli snapshot con btrfs.
Tutta questa procedura può essere svolta dalla distribuzione che si usa di solito oppure da una distro live?
Inoltre va fatta ogni volta che si vuole backuppare uno snapshot su un disco o partizione separata?
 
Sto da poco cercando di capire come funzionano gli snapshot con btrfs.
Devono essere sullo stesso filesystem, puoi creare uno snapshot RW o RO su un subvolume, gli snapshot inizialmente non occupano spazio, ma iniziano ad occupare spazio con le vari modifiche o se elimini dei file dal subvolume corrente e che sono presenti sullo snapshot, occupano la differenza: se modifichi il file di 10 mb, occupa 10mb; se elimini il file di 500mb, occupa 500mb.
Tutta questa procedura può essere svolta dalla distribuzione che si usa di solito oppure da una distro live?
Puoi farlo da una live o da un sistema avviato

Inoltre va fatta ogni volta che si vuole backuppare uno snapshot su un disco o partizione separata?
Gli snapshot devono essere, copme detto, sullo stesso filesystem, ma se vuoi inviarli al backup puoi usare un tool come btrbk o crearti uno script banale.
Tutta questa procedura serve al backup e ripristino, quindi non è necessario fare tutti quei passaggi.
Inoltre esistono tool che creano snapshot automatici da GUI:
- snapper: crea snapshot di qualsiasi subvolume e in RO, è da CLI ma esistono delle GUI, una è Btrfs Assistant
- Timeshift: crea snapshot in RW ed è quello più semplice e immediato, ma come requisito è che devi avere i subvolumi di @ > / e @home > /home
- Btrfs Assistant: non ha i limiti di Timeshift ma è leggermente meno intuitivo nel configurarlo e può gestire anche i subvolumi (crea, elimina) o il bilanciamento.
 
Puoi farlo da una live o da un sistema avviato
I passaggi e i comandi da dare sarebbero sempre uguali a prescindere, giusto?

Gli snapshot devono essere, copme detto, sullo stesso filesystem, ma se vuoi inviarli al backup puoi usare un tool come btrbk o crearti uno script banale.
Tutta questa procedura serve al backup e ripristino, quindi non è necessario fare tutti quei passaggi.
Inoltre esistono tool che creano snapshot automatici da GUI:
- snapper: crea snapshot di qualsiasi subvolume e in RO, è da CLI ma esistono delle GUI, una è Btrfs Assistant
- Timeshift: crea snapshot in RW ed è quello più semplice e immediato, ma come requisito è che devi avere i subvolumi di @ > / e @home > /home
- Btrfs Assistant: non ha i limiti di Timeshift ma è leggermente meno intuitivo nel configurarlo e può gestire anche i subvolumi (crea, elimina) o il bilanciamento
Ho letto qualcosa sul tool btrbk e per al momento sembra complesso, quindi dovrò studiarlo meglio. Immagino non esista una GUI per questo tool. Quindi se io voglio spostare gli snapshot dal filesystem a un'altra partizione/subvolume devo eseguire quanto descritto nelle istruzioni di btrbk, giusto?

Inoltre:
  • Timeshift una volta settato non permette di creare i subvolumi giusto?
  • Btrfs Assistant, invece, permette di creare dei subvolumi nuovi in partizioni diverse da quelle del filesystem?
 
  • Btrfs Assistant, invece, permette di creare dei subvolumi nuovi in partizioni diverse da quelle del filesystem?
No, non puoi creare subvolumi condivisi su partizioni diversi, in realtà uno dei vantaggi dei subvolumi è che non devi creare partizioni per separare le varie parti del filesystem.
Ad esempio puoi creare subvolumi per rootfs e uno per la home, in caso di reinstallazione puoi distruggere il volume rootfs, lasciare quello home e reinstallare (senza formattare) mantenendo i file sulla home, oppure creare sia uno per la home e uno per le immagini VM o per le APP flatpak...
 
No, non puoi creare subvolumi condivisi su partizioni diversi, in realtà uno dei vantaggi dei subvolumi è che non devi creare partizioni per separare le varie parti del filesystem.
Ad esempio puoi creare subvolumi per rootfs e uno per la home, in caso di reinstallazione puoi distruggere il volume rootfs, lasciare quello home e reinstallare (senza formattare) mantenendo i file sulla home, oppure creare sia uno per la home e uno per le immagini VM o per le APP flatpak...
Quindi in una stessa partizione posso creare più subvolumi? Se si, come si fa? Magari proprio creare un nuovo subvolume @home separato da root.
 
Quindi in una stessa partizione posso creare più subvolumi? Se si, come si fa? Magari proprio creare un nuovo subvolume @home separato da root.
In diversi modi, dipende da cosa devi fare, perché puoi creare subvolumi nested (nidificati) o flat.
Ti spiego a livello del filestem rootfs di qualsiasi distro.
In pratica quelli "nested" li puoi creare come fossero cartelle, non hai bisogno di specificare il mout su "fstab", l'unico svantaggio è che se ripristini un subvolume e dentro quel subvolume hai un subvolume nested, il subvolume ensted non viene ripristinato ma rimane nel vecchio subvolume, dovrest ispostarlo manualmente.
Per il subvolume flat hai bisogno di accedere al toplevel del filesystem (è id 5) in questo modo hai i vantaggio di porter ripristinare qualsiasi subvolume perch è indipendente dall'altro, ma devi assegnare il punto di mount su fstab e per creare uno snapshot devi rendere visibile il subvolume sul top level.
 
In diversi modi, dipende da cosa devi fare, perché puoi creare subvolumi nested (nidificati) o flat.
Ti spiego a livello del filestem rootfs di qualsiasi distro.
In pratica quelli "nested" li puoi creare come fossero cartelle, non hai bisogno di specificare il mout su "fstab", l'unico svantaggio è che se ripristini un subvolume e dentro quel subvolume hai un subvolume nested, il subvolume ensted non viene ripristinato ma rimane nel vecchio subvolume, dovrest ispostarlo manualmente.
Per il subvolume flat hai bisogno di accedere al toplevel del filesystem (è id 5) in questo modo hai i vantaggio di porter ripristinare qualsiasi subvolume perch è indipendente dall'altro, ma devi assegnare il punto di mount su fstab e per creare uno snapshot devi rendere visibile il subvolume sul top level.
Il subvolume di tipo flat credo sia più in linea con le mie possibili esigenze. Poter ripristinare ogni subvolume in modo indipendente credo sia un vantaggio.
I subvolumi di tipo flat come si possono creare?
 
Devi metterli sul toplevel che di default è ID5 ed è visibile al mount della partizione, poi gli dai il mount point su fstab.
Come dare il mount point su fstab riuscirei a farlo, ma come metterli sul topolevel non saprei proprio da dove cominciare. Cosa si intende con "ID5"?
 
Pubblicità
Pubblicità
Indietro
Top