Fête Btrfs 2: sauvegarde à la vitesse de la lumière (sans rsync)
Dans le post précédent, nous avons vu comment rendre notre système résilient “sur place” en utilisant RAID et instantané. Mais si le PC explose ou si le serveur est volé, les instantanés locaux sont inutiles. Aujourd'hui, nous faisons le saut en qualité: impariamo a usare Btrfs Send e Receive.
Dimenticate rsync e le sue scansioni infinite dei file. Con Btrfs, il backup diventa un flusso di dati puro, trasferendo solo i blocchi che sono effettivamente cambiati dall’ultima volta.
1. La logique: perché send/receive è meglio
Il limite di rsync è che deve confrontare le date e le dimensioni (o i checksum) di ogni singolo file tra sorgente e destinazione. Se hai milioni di file, perdi minuti solo per capire cosa trasferire. Btrfs, essendo un file system copie sur écriture, tiene già traccia di ogni blocco modificato. La commande send estrae queste differenze e le “sauver” verso il comando receive, che le scrive sulla destinazione.
Requisito fondamentale: Entrambi i supporti (sorgente e destinazione) devono essere formattati in Btrfs.
2. Pratica: backup su disco esterno
Supponiamo di voler fare il backup della nostra /home su un disco USB. Prima creiamo uno snapshot di sola lettura (indispensabile per il send):
# Crea lo snapshot di sola lettura
sudo btrfs subvolume snapshot -r /home /home/backup_temp
Ora inviamo tutto al disco esterno montato in /mnt/backup_disk:
# Il primo invio (Full Backup)
sudo btrfs send /home/backup_temp | sudo btrfs receive /mnt/backup_disk/
Dalla prossima volta, potremo fare l’invio incrémentale, specificando lo snapshot precedente come base. Sarà una questione di millisecondi.
3. Backup remoti via SSH: efficienza massima
Questa è la parte che preferisco. Possiamo inviare il flusso di dati attraverso un tunnel SSH. Ideale per chi ha connessioni fibra con upload non esagerato, perché invierai solo i pochi MB modificati durante la giornata.
# Invia lo snapshot a un server remoto
sudo btrfs send /home/backup_oggi | ssh utente@server "sudo btrfs receive /backup/remoto"
I dati arrivano a destinazione esattamente come sono partiti, con l’integrità garantita dai checksum nativi del file system.
4. Automazione: non farlo a mano (usa Btrbk)
Siamo onesti: nessuno si ricorda di lanciare questi comandi ogni giorno. Per questo esiste Btrbk. È uno script in Perl, leggerissimo, che si configura con un semplice file di testo in /etc/btrbk.conf.
Gli dici quale subvolume monitorare, quante copie tenere (c'est. 7 giornaliere, 4 Hebdomadaire) e dove inviarle. Lui si occupa di creare gli snapshot, fare il send/receive e cancellare quelli vecchi.
Esempio veloce di config btrbk:
volume /mnt/data
subvolume home
target send-receive /mnt/backup_esterno
snapshot_preserve_min 2d
snapshot_preserve 7d
5. Disaster recovery: Le “botte” dal backup
Cosa succede se il disco principale muore? Se hai usato Send/Receive su un altro disco interno o esterno, i tuoi dati sono già in formato subvolume. Non devi “estrarre” un archivio .tar o .zip. Ti basta montare il backup e, se necessario, usarlo come nuova /home modificando semplicemente /etc/fstab. È il ripristino più veloce del mondo.
Attention: Ricorda che gli snapshot usati come base per l’incrementale (il parametro
-pnel send) devono esistere su entrambi i lati. Se cancelli lo snapshot “père” dal disco di backup, il prossimo incrementale fallirà e dovrai rifare un invio completo.
Conclusion
Btrfs Send/Receive trasforma il backup da un compito noioso a un processo invisibile e istantaneo. Se hai seguito la guida precedente e hai già i tuoi subvolume pronti, prendi un vecchio disco, formattalo Btrfs e inizia a “sparare” i tuoi dati. La tranquillità di sapere che il tuo backup è un’immagine speculare e verificata dei tuoi dati non ha prezzo.
Hai dubbi su come configurare Btrbk o su come gestire i permessi SSH? Scrivilo nei commenti!



0 commentaires