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

EmanueleC

Utente Èlite
5,636
1,841
CPU
Ryzen 5 2600x
Dissipatore
stock
Scheda Madre
ROG STRIX B450-F GAMING
HDD
OS: WD BLue SN570 500GB, Dati: 1TB Toshiba p300, Game: 2TB Toshiba P300
RAM
Corsair DDR4 3000 Mhz 2x8 GB
GPU
AMD Radeon RX 6600
PSU
Seasonic Focus Gold 450W
Case
BitFenix Neos
OS
Fedora Linux
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:

Loro non ci sono

Una bestemmia è gratis
Utente Èlite
4,935
2,082
CPU
ryzen 3 3100
Dissipatore
stock
Scheda Madre
msi b550 pro-vdh wifi
HDD
ssd sata mx500/hdd toshiba 230GB/WD purple
RAM
crucial ballistix 16gb 3600
GPU
Zotac nvidia 1650
Audio
Integrata
Monitor
hp 22w
PSU
be quiet p9 400w
Case
sharkoon s1000
Net
FTTH
OS
w10 pro
Quindi questa cosa sarebbe come i punti di ripristino di Windows giusto? Grazie
 

EmanueleC

Utente Èlite
5,636
1,841
CPU
Ryzen 5 2600x
Dissipatore
stock
Scheda Madre
ROG STRIX B450-F GAMING
HDD
OS: WD BLue SN570 500GB, Dati: 1TB Toshiba p300, Game: 2TB Toshiba P300
RAM
Corsair DDR4 3000 Mhz 2x8 GB
GPU
AMD Radeon RX 6600
PSU
Seasonic Focus Gold 450W
Case
BitFenix Neos
OS
Fedora Linux
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
Reazioni: Loro non ci sono

EmanueleC

Utente Èlite
5,636
1,841
CPU
Ryzen 5 2600x
Dissipatore
stock
Scheda Madre
ROG STRIX B450-F GAMING
HDD
OS: WD BLue SN570 500GB, Dati: 1TB Toshiba p300, Game: 2TB Toshiba P300
RAM
Corsair DDR4 3000 Mhz 2x8 GB
GPU
AMD Radeon RX 6600
PSU
Seasonic Focus Gold 450W
Case
BitFenix Neos
OS
Fedora Linux

Moffetta88

Moderatore
Staff Forum
Utente Èlite
20,546
12,933
CPU
i5-4690
Dissipatore
DEEPCOOL CAPTAIN 240EX
Scheda Madre
MSI Z97 U3 PLUS
HDD
KINGSTON SSD KC400 240GB
RAM
24GB BALLISTIX SPORT @2133MHz
GPU
STRIX GTX980 DC2OC
Audio
INTEGRATA
Monitor
AOC G2590VXQ
PSU
BEQUIET! System Power 7 500W
Case
DEEPCOOL MATREXX 55
Periferiche
NESSUNA
Net
EOLO 100
OS
UBUNTU/WINDOWS11

DonTech

Nuovo Utente
22
0
OS
Fedora & openSUSE
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?
 

EmanueleC

Utente Èlite
5,636
1,841
CPU
Ryzen 5 2600x
Dissipatore
stock
Scheda Madre
ROG STRIX B450-F GAMING
HDD
OS: WD BLue SN570 500GB, Dati: 1TB Toshiba p300, Game: 2TB Toshiba P300
RAM
Corsair DDR4 3000 Mhz 2x8 GB
GPU
AMD Radeon RX 6600
PSU
Seasonic Focus Gold 450W
Case
BitFenix Neos
OS
Fedora Linux
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.
 
  • Mi piace
Reazioni: DonTech

DonTech

Nuovo Utente
22
0
OS
Fedora & openSUSE
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?
 

EmanueleC

Utente Èlite
5,636
1,841
CPU
Ryzen 5 2600x
Dissipatore
stock
Scheda Madre
ROG STRIX B450-F GAMING
HDD
OS: WD BLue SN570 500GB, Dati: 1TB Toshiba p300, Game: 2TB Toshiba P300
RAM
Corsair DDR4 3000 Mhz 2x8 GB
GPU
AMD Radeon RX 6600
PSU
Seasonic Focus Gold 450W
Case
BitFenix Neos
OS
Fedora Linux
  • 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...
 

DonTech

Nuovo Utente
22
0
OS
Fedora & openSUSE
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.
 

EmanueleC

Utente Èlite
5,636
1,841
CPU
Ryzen 5 2600x
Dissipatore
stock
Scheda Madre
ROG STRIX B450-F GAMING
HDD
OS: WD BLue SN570 500GB, Dati: 1TB Toshiba p300, Game: 2TB Toshiba P300
RAM
Corsair DDR4 3000 Mhz 2x8 GB
GPU
AMD Radeon RX 6600
PSU
Seasonic Focus Gold 450W
Case
BitFenix Neos
OS
Fedora Linux
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.
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!