Come utilizzare le istantanei BTRFS

Come utilizzare le istantanei BTRFS
Il filesystem BTRFS ha supporto snapshot a livello di filesystem integrato. È possibile creare un sottovolume nel filesystem BTRFS e prendere istantanee dei file/directory in quel sottovolume. Prendere un'istantanea di un subolume salverà lo stato dei file/directory in quel sub -volume. È possibile recuperare qualsiasi file/directory del sottovolume dall'istantanea nel caso in cui ne abbia bisogno.

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.

  1. Snapshot scrivibili: Se prendi un'istantanea scrivibile, puoi modificare i file/directory di quella snapshot in seguito. Questo è il tipo di snapshot predefinito del filesystem BTRFS.
  2. Snapshot di sola lettura: Se prendi un'istantanea di sola lettura, non è possibile modificare i file/directory di quella snapshot in seguito.

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,

  • È necessario installare il filesystem BTRFS sul tuo computer.
  • Devi avere un disco rigido o un SSD con almeno 1 partizione gratuita (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 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 /SDB1

Dovrebbe essere creato un filesystem BTRFS.

Crea una directory /dati con il seguente comando:

$ sudo mkdir -v /dati

Per montare il filesystem BTRFS creato su 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 seguente.

$ df -h /dati

Preparazione 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 /progetti

Crea un nuovo sottovolume Web1 nel /dati/progetti directory come segue:

$ sudo btrfs sub -volume create/data/progetti/web1

Crea un nuovo file indice.html nel /Data/Projects/Web1 Subolume come segue:

$ sudo nano/data/progetti/web1/indice.html

Digitare le seguenti righe di codici in indice.html file.




Sito web demo



Ciao mondo 4



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.CSS

Digitare le seguenti righe di codici in stile.CSS file.

H1
Colore: verde;

Una 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/web1

Voglio 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 /.istantanee

Prendendo 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-25

Un'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 /dati

Puoi 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-25

Come 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 /Data

Recupero 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.html

Apportare 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.html
$ cat /dati /.Snapshots/Web1-2020-12-25/INDICE.html

Abbiamo 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.html

Come puoi vedere, il indice.html Il file viene ripristinato dall'istantanea.

$ cat/dati/progetti/web1/indice.html
$ cat /dati /.Snapshots/Web1-2020-12-25/INDICE.html

Ora, 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/web1

Infine, 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.TXT

Come puoi vedere, il file di file del /Data/Projects/Web1 Il sub -volume è diverso da /dati/.Snapshots/Web1-2020-12-25 istantanea.

$ Tree -A /Data

Per 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.html
$ cat/dati/progetti/web1/stile.CSS

Contenuto del indice.html E stile.CSS file in /dati/.Snapshots/Web1-2020-12-25 istantanea.

$ cat/dati/progetti/web1/indice.html
$ cat/dati/progetti/web1/stile.CSS

Aggiornamento 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.html

Apportare 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.html
$ cat /dati /.Snapshots/Web1-2020-12-25/INDICE.html

Vuoi 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.html

Come 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-26

Come puoi vedere, un nuovo sottovolume .Snapshots/Web1-2020-12-26 è creato.

$ Sudo BTRFS Elenco dei sub -volum /dati

Come puoi vedere, l'istantanea /dati/.Snapshots/Web1-2020-12-26 è di sola lettura.

$ sudo btrfs sub -volume show /data /.Snapshots/Web1-2020-12-26

Aggiorniamo 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.html

Apportare 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.html
$ cat /dati /.Snapshots/Web1-2020-12-26/INDICE.html

Proviamo 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.html

Come 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 /Data

Rimuoviamo il .Snapshots/Web1-2020-12-25 istantanea.

$ Sudo BTRFS Elenco dei sub -volum /dati

Per rimuovere il /dati/.Snapshots/Web1-2020-12-25 Snapshot, eseguire il seguente comando:

$ sudo btrfs sub -volume elimina /data /.Snapshots/Web1-2020-12-25

Come puoi vedere, l'istantanea .Snapshots/Web1-2020-12-25 non è più.

$ Sudo BTRFS Elenco dei sub -volum /dati

Come puoi vedere, i file/directory del /dati/.Snapshots/Web1-2020-12-25 Anche l'istantanea viene rimossa.

$ Tree -A /Data

Conclusione

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.