La funzionalità snapshot del filesystem BTRFS utilizza il principio di Copy-on-Write (Cow). Quindi, non ci vuole molto spazio su disco e puoi scattare istantanee di un subolume istantaneamente.
Il filesystem BTRFS supporta 2 tipi di istantanee.
Questo articolo ti mostrerà come prendere istantanee scrivibili e di sola lettura dei sottovolumi del filesystem BTRFS. Ti mostrerò anche come aggiornare un'istantanea scrivibile e recuperare i file da un'istantanea. Ti mostrerò come rimuovere anche un'istantanea. Quindi iniziamo.
Prerequisiti
Per provare gli esempi di questo articolo,
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 -e7Il tuo disco rigido o SSD può avere un nome diverso dal mio, così anche le partizioni. Quindi, assicurati di sostituirli con il tuo da ora in poi.
Se hai bisogno di assistenza sull'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 Installare e utilizzare BTRFS su Fedora 33.
Creazione di un filesystem BTRFS
Per sperimentare 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 Data /Dev /SDB1Dovrebbe essere creato un filesystem BTRFS.
Crea una directory /dati con il seguente comando:
$ sudo mkdir -v /datiPer montare il filesystem BTRFS creato su SDB1 partizione nel /dati Directory, eseguire il seguente comando:
$ sudo Mount /Dev /SDB1 /DataIl filesystem BTRFS dovrebbe essere montato come puoi vedere nello screenshot seguente.
$ df -h /datiPreparazione del filesystem BTRFS per le snapshot
In BTRFS, puoi prendere solo istantanee di sottovolumi BTRFS. La radice principale di un filesystem BTRFS è anche un sottovolume. Quindi, puoi eseguire il backup dell'intero filesystem BTRFS e di sottovolumi specifici.
Questa sezione creerà un sottovolume BTRFS /Data/Projects/Web1 e creare i file necessari per le sezioni successive di questo articolo di seguito. Creerò anche una directory in cui puoi mantenere le tue istantanee. Nelle prossime sezioni ti mostrerò come prendere le istantanee (scrivibili e di sola lettura), aggiornare un'istantanea scrivibile e recuperare i file dall'istantanea. Quindi iniziamo.
Innanzitutto, crea una nuova directory /dati/progetti come segue:
$ sudo mkdir -v /dati /progettiCrea un nuovo sottovolume Web1 nel /dati/progetti directory come segue:
$ sudo btrfs sub -volume create/data/progetti/web1Crea un nuovo file indice.html nel /Data/Projects/Web1 Subolume come segue:
$ sudo nano/data/progetti/web1/indice.htmlDigitare le seguenti righe di codici in indice.html file.
Una volta che hai finito, premere + X seguito da Y E per salvare il indice.html file.
Crea un nuovo file stile.CSS nel /Data/Projects/Web1 Subolume come segue:
$ sudo nano/data/progetti/web1/stile.CSSDigitare le seguenti righe di codici in stile.CSS file.
H1Una volta che hai finito, premere + X seguito da Y E per salvare il stile.CSS file.
Ora il /Data/Projects/Web1 Il sub -volume ha il indice.html E stile.CSS file.
$ ls -lh/dati/progetti/web1Voglio conservare tutte le snapshot di questo filesystem BTRFS nel /dati/.istantanee directory.
Creare il /dati/.istantanee Directory con il seguente comando:
$ sudo mkdir -v /dati /.istantaneePrendendo istantanee di un subolume
Per prendere un'istantanea del /Data/Projects/Web1 sub -volume nel /dati/.Snapshots/Web1-2020-12-25 Directory (verrà creata automaticamente), esegui il seguente comando:
$ Sudo BTRFS Subvolume Snapshot/Data/Projects/Web1/Data/.Snapshots/Web1-2020-12-25Un'istantanea del /Data/Projects/Web1 La directory dovrebbe essere creata su /dati/.Snapshots/Web1-2020-12-25 directory.
Come puoi vedere nello screenshot qui sotto, un nuovo sottovolume .Snapshots/Web1-2020-12-25 è creato. Un'istantanea è in realtà un sottovolume.
$ Sudo BTRFS Elenco dei sub -volum /datiPuoi vedere ulteriori informazioni sull'istantanea che hai creato in /dati/.Snapshots/Web1-2020-12-25 directory come segue:
$ sudo btrfs sub -volume show /data /.Snapshots/Web1-2020-12-25Come puoi vedere, tutti i file che si trovano in /Data/Projects/Web1 il sub -volume è nel /dati/.Snapshots/Web1-2020-12-25 istantanea.
$ Tree -A /DataRecupero di file da istantanee
In questa sezione, ti mostrerò come recuperare i file dalle istantanei BTRFS.
Innanzitutto, ti mostrerò come recuperare un singolo file dall'istantanea.
Apri il /Data/Projects/Web1/Index.html File con l'editor di testo nano come segue:
$ sudo nano/data/progetti/web1/indice.htmlApportare qualsiasi modifica che desideri.
Una volta che hai finito, premere + X seguito da Y E Per salvare il file.
Come puoi vedere, il principale indice.html Il file è diverso da indice.html File nell'istantanea.
$ cat/dati/progetti/web1/indice.htmlAbbiamo apportato le modifiche al principale indice.html Il file non è indesiderato e vogliamo recuperare il indice.html File dall'istantanea.
Puoi ripristinare il indice.html File dall'istantanea come segue:
$ sudo cp -v /data /.Snapshots/Web1-2020-12-25/INDICE.HTML/Data/Projects/Web1/Index.htmlCome puoi vedere, il indice.html Il file viene ripristinato dall'istantanea.
$ cat/dati/progetti/web1/indice.htmlOra, vediamo come recuperare tutti i file/directory dall'istantanea.
Rimuovere tutti i file da /Data/Projects/Web1 Snapshot come segue:
$ sudo rm -rv/dati/progetti/web1/*Per recuperare tutti i file/directory dall'istantanea, eseguire il comando seguente:
$ sudo rsync -avz /dati /.Snapshots/Web1-2020-12-25//Data/Projects/Web1/Come puoi vedere, i file/directory vengono ripristinati dall'istantanea.
$ ls -lh/dati/progetti/web1Infine, vediamo come recuperare file/directory dall'istantanea in modalità mirror. In modalità mirror, i file/directory del sub -volume saranno gli stessi dell'istantanea. Se ci sono file/directory nel sottovolume che non sono disponibili nell'istantanea, verranno rimossi.
Creiamo un nuovo file nel sottovolume per differenziare l'albero del file dall'istantanea.
Creare un Readme.TXT file in /Data/Projects/Web1 Subolume come segue:
$ echo "Hello World 5" | sudo tee/data/progetti/web1/readme.TXTCome puoi vedere, il file di file del /Data/Projects/Web1 Il sub -volume è diverso da /dati/.Snapshots/Web1-2020-12-25 istantanea.
$ Tree -A /DataPer ripristinare i file/directory da /dati/.Snapshots/Web1-2020-12-25 istantanea al /Data/Projects/Web1 SUBOLUME IN MODALITÀ MIRROR, eseguire il comando seguente:
$ sudo rsync -avz - -delete /data /.Snapshots/Web1-2020-12-25//Data/Projects/Web1/Tutti i file/directory del /Data/Projects/Web1 Il sub -volume deve essere ripristinato (in modalità mirror) da /dati/.Snapshots/Web1-2020-12-25 istantanea.
Il file di file del /Data/Projects/Web1 Subolume e il /dati/.Snapshots/Web1-2020-12-25 L'istantanea dovrebbe essere la stessa.
Come puoi vedere, l'indice.file e stile html.I contenuti del file CSS sono gli stessi in /Data/Projects/Web1 Subolume e il /dati/.Snapshots/Web1-2020-12-25 istantanea.
Contenuto del indice.html E stile.CSS file in /Data/Projects/Web1 Subolume.
$ cat/dati/progetti/web1/indice.htmlContenuto del indice.html E stile.CSS file in /dati/.Snapshots/Web1-2020-12-25 istantanea.
$ cat/dati/progetti/web1/indice.htmlAggiornamento di un'istantanea
Per impostazione predefinita, il filesystem BTRFS prende snapshot scrivibili. Un'istantanea di BTRFS è proprio come un sottovolume. Quindi, è possibile modificare/aggiornare i file/le directory di un'istantanea scrivibile.
Aggiorniamo il indice.html file in /Data/Projects/Web1 Subolume.
Innanzitutto, apri il indice.html file da /Data/Projects/Web1 Subolume con il nano Editor di testo come segue:
$ sudo nano/data/progetti/web1/indice.htmlApportare qualsiasi modifica che desideri. Una volta che hai finito, premere + X seguito da Y E per salvare il indice.html file.
Come puoi vedere, l'indice.file html del /Data/Projects/Web1 Il sub -volume è diverso da /dati/.Snapshots/Web1-2020-12-25 istantanea.
$ cat/dati/progetti/web1/indice.htmlVuoi mantenere il indice.html File del /Data/Projects/Web1 Subolume.
Per aggiornare il indice.html file in /dati/.Snapshots/Web1-2020-12-25 Snapshot, eseguire il seguente comando:
$ sudo cp -v/dati/progetti/web1/indice.html /dati /.Snapshots/Web1-2020-12-25/INDICE.htmlCome puoi vedere, il indice.html File del /dati/.Snapshots/Web1-2020-12-25 L'istantanea viene aggiornata.
L'aggiornamento di un'istantanea è facile come copiare nuovi file all'istantanea.
Prendendo istantanee di sola lettura di un subolume
A volte, non vuoi che le istantanee che hai preso per essere aggiornate in alcun modo. In tal caso, puoi creare snapshot di sola lettura.
Ad esempio, per creare un'istantanea di sola lettura /dati/.Snapshots/Web1-2020-12-26 del /Data/Projects/Web1 SUBOLUME, eseguire il seguente comando:
$ sudo btrfs Subolume Snapshot -R/Data/Projects/Web1/Data/.Snapshots/Web1-2020-12-26Come puoi vedere, un nuovo sottovolume .Snapshots/Web1-2020-12-26 è creato.
$ Sudo BTRFS Elenco dei sub -volum /datiCome puoi vedere, l'istantanea /dati/.Snapshots/Web1-2020-12-26 è di sola lettura.
$ sudo btrfs sub -volume show /data /.Snapshots/Web1-2020-12-26Aggiorniamo il indice.html file da /Data/Projects/Web1 Subolume.
Per farlo, aprire il indice.html file da /Data/Projects/Web1 Subolume con il nano Editor di testo come segue:
$ sudo nano/data/progetti/web1/indice.htmlApportare qualsiasi modifica che desideri. Una volta che hai finito, premere + X seguito da Y E Per salvare le modifiche.
Come puoi vedere, il indice.html nel /Data/Projects/Web1 Il sub -volume è diverso da /dati/.Snapshots/Web1-2020-12-26 istantanea.
$ cat/dati/progetti/web1/indice.htmlProviamo ad aggiornare il indice.html file in /dati/.Snapshots/Web1-2020-12-26 istantanea.
$ sudo cp -v/dati/progetti/web1/indice.html /dati /.Snapshots/Web1-2020-12-26/INDICE.htmlCome puoi vedere, non puoi aggiornare il indice.html File del /dati/.Snapshots/Web1-2020-12-26 Snapshot perché l'istantanea è di sola lettura.
Rimozione di un'istantanea
Ti ho detto in precedenza che un'istantanea BTRFS è come un sottovolume. Quindi, puoi rimuovere un'istantanea BTRFS proprio come rimuovi un sub -voluume BTRFS. Stesso comando.
Ecco come il file di file del filesystem BTRFS montato su /dati La directory sembra al momento.
$ Tree -A /DataRimuoviamo il .Snapshots/Web1-2020-12-25 istantanea.
$ Sudo BTRFS Elenco dei sub -volum /datiPer rimuovere il /dati/.Snapshots/Web1-2020-12-25 Snapshot, eseguire il seguente comando:
$ sudo btrfs sub -volume elimina /data /.Snapshots/Web1-2020-12-25Come puoi vedere, l'istantanea .Snapshots/Web1-2020-12-25 non è più.
$ Sudo BTRFS Elenco dei sub -volum /datiCome puoi vedere, i file/directory del /dati/.Snapshots/Web1-2020-12-25 Anche l'istantanea viene rimossa.
$ Tree -A /DataConclusione
Questo articolo ti ha mostrato come prendere le istantanei scrivibili e di sola lettura dei 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 di istantanea BTRFS.