La funzione snapshot del filesystem Btrfs utilizza il principio Copy-on-Write (CoW). Quindi, non richiede molto spazio su disco e puoi scattare istantanee di un sottovolume all'istante.
Il filesystem Btrfs supporta 2 tipi di snapshot.
- Istantanee scrivibili: Se acquisisci un'istantanea scrivibile, puoi modificare i file/le directory di quell'istantanea in un secondo momento. Questo è il tipo di snapshot predefinito del filesystem Btrfs.
- Istantanee di sola lettura: Se acquisisci un'istantanea di sola lettura, non puoi modificare i file/le directory di quell'istantanea in un secondo momento.
Questo articolo ti mostrerà come acquisire istantanee scrivibili e di sola lettura dei tuoi sottovolumi del filesystem Btrfs. Ti mostrerò anche come aggiornare un'istantanea scrivibile e recuperare i file da un'istantanea. Ti mostrerò anche come rimuovere un'istantanea. Quindi iniziamo.
Prerequisiti
Per provare gli esempi di questo articolo,
- Devi avere il filesystem Btrfs installato sul tuo computer.
- È necessario disporre di un disco rigido o SSD con almeno 1 partizione libera (di qualsiasi dimensione).
Ho un disco rigido da 20 GB sdb sulla mia macchina Ubuntu. Ho creato 2 partizioni sdb1 e sdb2 su questo disco rigido. userò la partizione sdb1 in questo articolo.
$ sudo lsblk -e7
Il tuo disco rigido o SSD potrebbe avere un nome diverso dal mio, così come le partizioni. Quindi, assicurati di sostituirli con i tuoi d'ora in poi.
Se hai bisogno di assistenza per l'installazione del filesystem Btrfs su Ubuntu, controlla il mio articolo Installa e usa Btrfs su Ubuntu 20.04 LTS.
Se hai bisogno di assistenza sull'installazione del filesystem Btrfs su Fedora, controlla il mio articolo Installa e usa Btrfs su Fedora 33.
Creazione di un filesystem Btrfs
Per sperimentare con i sottovolumi Btrfs, è necessario creare un filesystem Btrfs.
Per creare un filesystem Btrfs con l'etichetta dati sul sdb1 partizione, eseguire il seguente comando:
$ sudo mkfs.btrfs -L dati /dev/sdb1
Dovrebbe essere creato un filesystem Btrfs.
Crea una directory /dati con il seguente comando:
$ sudo mkdir -v /data
Per montare il filesystem Btrfs creato sul sdb1 partizione nel /dati directory, eseguire il seguente comando:
$ sudo mount /dev/sdb1 /data
Il filesystem Btrfs dovrebbe essere montato come puoi vedere nello screenshot qui sotto.
$ df -h /dati
Preparazione del filesystem Btrfs per le istantanee
In Btrfs, puoi scattare istantanee solo dei sottovolumi Btrfs. Anche la radice principale di un filesystem Btrfs è un sottovolume. Quindi, puoi eseguire il backup dell'intero filesystem Btrfs e di sottovolumi specifici.
Questa sezione creerà un sottovolume Btrfs /dati/progetti/web1 e crea i file necessari per le prossime sezioni di questo articolo qui sotto. Creerò anche una directory dove puoi conservare le tue istantanee. Nelle prossime sezioni, ti mostrerò come scattare istantanee (scrivibili e di sola lettura), aggiornare un'istantanea scrivibile e recuperare i file dall'istantanea. Quindi iniziamo.
Per prima cosa, crea una nuova directory /dati/progetti come segue:
$ sudo mkdir -v /dati/progetti
Crea un nuovo sottovolume web1 nel /dati/progetti directory come segue:
$ sudo btrfs subvolume create /data/projects/web1
Crea un nuovo file indice.html nel /dati/progetti/web1 sottovolume come segue:
$ sudo nano /data/projects/web1/index.html
Digita le seguenti righe di codici nel indice.html file.
Ciao mondo 4
Quando hai finito, premi
Crea un nuovo file stile.css nel /dati/progetti/web1 sottovolume come segue:
$ sudo nano /data/projects/web1/style.css
Digita le seguenti righe di codici nel stile.css file.
h1colore: verde;
Quando hai finito, premi
Ora il /dati/progetti/web1 il sottovolume ha il indice.html e stile.css file.
$ ls -lh /dati/progetti/web1
Voglio conservare tutte le istantanee di questo filesystem Btrfs nel /dati/.istantanee directory.
Crea il /dati/.istantanee directory con il seguente comando:
$ sudo mkdir -v /data/.istantanee
Scattare istantanee di un sottovolume
Per scattare un'istantanea del /dati/progetti/web1 sottovolume in /dati/.istantanee/web1-2020-12-25 directory (verrà creata automaticamente), eseguire il seguente comando:
$ sudo btrfs snapshot del sottovolume /data/projects/web1 /data/.istantanee/web1-2020-12-25
Un'istantanea del /dati/progetti/web1 la directory dovrebbe essere creata sul /dati/.istantanee/web1-2020-12-25 directory.
Come puoi vedere nello screenshot qui sotto, un nuovo sottovolume .istantanee/web1-2020-12-25 è creato. Un'istantanea è in realtà un sottovolume.
$ sudo btrfs sottovolume elenco /dati
Puoi vedere maggiori informazioni sull'istantanea che hai creato nel /dati/.istantanee/web1-2020-12-25 directory come segue:
$ sudo btrfs sottovolume mostra /data/.istantanee/web1-2020-12-25
Come puoi vedere, tutti i file che sono nel /dati/progetti/web1 sottovolume sono in /dati/.istantanee/web1-2020-12-25 istantanea.
$ albero -a /dati
Recupero di file da istantanee
In questa sezione, ti mostrerò come recuperare i file dagli snapshot Btrfs.
Per prima cosa, ti mostrerò come recuperare un singolo file dall'istantanea.
Apri il /dati/progetti/web1/index.html file con l'editor di testo nano come segue:
$ sudo nano /data/projects/web1/index.html
Apporta le modifiche che desideri.
Quando hai finito, premi
Come puoi vedere, il principale indice.html il file è diverso da indice.html file nell'istantanea.
$ cat /data/projects/web1/index.html$ gatto /dati/.istantanee/web1-2020-12-25/indice.html
Abbiamo apportato le modifiche al principale indice.html file sono indesiderati e vogliamo recuperare il recover indice.html file dall'istantanea.
Puoi ripristinare il indice.html file dallo snapshot come segue:
$ sudo cp -v /data/.istantanee/web1-2020-12-25/indice.html /data/projects/web1/index.html
Come puoi vedere, il indice.html il file viene ripristinato dall'istantanea.
$ cat /data/projects/web1/index.html$ gatto /dati/.istantanee/web1-2020-12-25/indice.html
Ora vediamo come recuperare tutti i file/directory dallo snapshot.
Rimuovi tutti i file dal /dati/progetti/web1 istantanea come segue:
$ sudo rm -rv /data/projects/web1/*
Per recuperare tutti i file/directory dallo snapshot, eseguire il seguente comando:
$ sudo rsync -avz /data/.istantanee/web1-2020-12-25/ /dati/progetti/web1/
Come puoi vedere, i file/le directory vengono ripristinati dall'istantanea.
$ ls -lh /dati/progetti/web1
Infine, vediamo come recuperare file/directory dallo snapshot in modalità mirror. In modalità mirror, i file/directory del sottovolume saranno gli stessi dell'istantanea. Se ci sono file/directory nel sottovolume che non sono disponibili nello snapshot, verranno rimossi.
Creiamo un nuovo file nel sottovolume per differenziare l'albero dei file dall'istantanea.
Creare un LEGGIMI.TXT file nel /dati/progetti/web1 sottovolume come segue:
$ echo "ciao mondo 5" | sudo tee /data/projects/web1/README.TXT
Come puoi vedere, l'albero dei file del /dati/progetti/web1 il sottovolume è diverso da /dati/.istantanee/web1-2020-12-25 istantanea.
$ albero -a /dati
Per ripristinare i file/directory dal /dati/.istantanee/web1-2020-12-25 istantanea al /dati/progetti/web1 sottovolume in modalità mirror, eseguire il seguente comando:
$ sudo rsync -avz --delete /data/.istantanee/web1-2020-12-25/ /dati/progetti/web1/
Tutti i file/directory del /dati/progetti/web1 il sottovolume dovrebbe essere ripristinato (in modalità mirror) dal /dati/.istantanee/web1-2020-12-25 istantanea.
L'albero dei file del /dati/progetti/web1 sottovolume e il /dati/.istantanee/web1-2020-12-25 l'istantanea dovrebbe essere la stessa.
Come puoi vedere, l'indice.file e stile html.il contenuto del file css è lo stesso nel /dati/progetti/web1 sottovolume e il /dati/.istantanee/web1-2020-12-25 istantanea.
Contenuto del indice.html e stile.css file nel /dati/progetti/web1 sottovolume.
$ cat /data/projects/web1/index.html$ cat /dati/progetti/web1/stile.css
Contenuto del indice.html e stile.css file nel /dati/.istantanee/web1-2020-12-25 istantanea.
$ cat /data/projects/web1/index.html$ cat /dati/progetti/web1/stile.css
Aggiornamento di un'istantanea
Per impostazione predefinita, il filesystem Btrfs acquisisce snapshot scrivibili. Un'istantanea di Btrfs è proprio come un sottovolume. Quindi, puoi modificare/aggiornare i file/le directory di un'istantanea scrivibile.
Aggiorniamo il indice.html file nel /dati/progetti/web1 sottovolume.
Per prima cosa, apri il indice.html file dal /dati/progetti/web1 sottovolume con il nano editor di testo come segue:
$ sudo nano /data/projects/web1/index.html
Apporta le modifiche che desideri. Quando hai finito, premi
Come puoi vedere, l'indice.html del file /dati/progetti/web1 il sottovolume è diverso da /dati/.istantanee/web1-2020-12-25 istantanea.
$ cat /data/projects/web1/index.html$ gatto /dati/.istantanee/web1-2020-12-25/indice.html
Vuoi mantenere il indice.html file del /dati/progetti/web1 sottovolume.
Per aggiornare il indice.html file nel /dati/.istantanee/web1-2020-12-25 snapshot, eseguire il seguente comando:
$ sudo cp -v /data/projects/web1/index.html /dati/.istantanee/web1-2020-12-25/indice.html
Come puoi vedere, il indice.html file del /dati/.istantanee/web1-2020-12-25 l'istantanea è aggiornata.
Aggiornare un'istantanea è facile come copiare nuovi file nell'istantanea.
Acquisizione di istantanee di sola lettura di un sottovolume
A volte, non vuoi che le istantanee che hai scattato vengano aggiornate in alcun modo. In tal caso, puoi creare istantanee di sola lettura.
Ad esempio, per creare un'istantanea di sola lettura /dati/.istantanee/web1-2020-12-26 del /dati/progetti/web1 sottovolume, esegui il seguente comando:
$ sudo btrfs subvolume snapshot -r /data/projects/web1 /data/.istantanee/web1-2020-12-26
Come puoi vedere, un nuovo sottovolume .istantanee/web1-2020-12-26 è creato.
$ sudo btrfs sottovolume elenco /dati
Come puoi vedere, l'istantanea /dati/.istantanee/web1-2020-12-26 è di sola lettura.
$ sudo btrfs sottovolume mostra /data/.istantanee/web1-2020-12-26
Aggiorniamo il indice.html file dal /dati/progetti/web1 sottovolume.
Per farlo, apri il indice.html file dal /dati/progetti/web1 sottovolume con il nano editor di testo come segue:
$ sudo nano /data/projects/web1/index.html
Apporta le modifiche che desideri. Quando hai finito, premi
Come puoi vedere, il indice.html nel /dati/progetti/web1 il sottovolume è diverso da /dati/.istantanee/web1-2020-12-26 istantanea.
$ cat /data/projects/web1/index.html$ gatto /dati/.istantanee/web1-2020-12-26/indice.html
Proviamo ad aggiornare il indice.html file nel /dati/.istantanee/web1-2020-12-26 istantanea.
$ sudo cp -v /data/projects/web1/index.html /dati/.istantanee/web1-2020-12-26/indice.html
Come puoi vedere, non puoi aggiornare il indice.html file del /dati/.istantanee/web1-2020-12-26 snapshot perché lo snapshot è di sola lettura.
Rimozione di un'istantanea
Ti ho detto prima che un'istantanea di Btrfs è come un sottovolume. Quindi, puoi rimuovere un'istantanea Btrfs proprio come rimuovi un sottovolume Btrfs. Stesso comando.
Ecco come è stato montato l'albero dei file del filesystem Btrfs sul /dati la directory sembra al momento.
$ albero -a /dati
Rimuoviamo il .istantanee/web1-2020-12-25 istantanea.
$ sudo btrfs sottovolume elenco /dati
Per rimuovere il /dati/.istantanee/web1-2020-12-25 snapshot, eseguire il seguente comando:
$ sudo btrfs sottovolume cancella /data/.istantanee/web1-2020-12-25
Come puoi vedere, l'istantanea .istantanee/web1-2020-12-25 non è più.
$ sudo btrfs sottovolume elenco /dati
Come puoi vedere, i file/directory del /dati/.istantanee/web1-2020-12-25 anche l'istantanea viene rimossa.
$ albero -a /dati
Conclusione
Questo articolo ti ha mostrato come acquisire istantanee scrivibili e di sola lettura dei tuoi sottovolumi del filesystem Btrfs. Ti ho anche mostrato come aggiornare un'istantanea scrivibile e recuperare i file da un'istantanea. Ti ho mostrato come rimuovere anche un'istantanea Btrfs. Questo articolo dovrebbe aiutarti a iniziare con la funzione snapshot Btrfs.