Como usar instantâneos do BTRFS

Como usar instantâneos do BTRFS
O sistema de arquivos BTRFS possui suporte de instantâneo no nível de arquivos de arquivos integrado. Você pode criar um subvolume no seu sistema de arquivos BTRFS e tirar instantâneos dos arquivos/diretórios nesse subvolume. Tirando um instantâneo de um subvolume salvará o estado dos arquivos/diretórios naquele subvolume. Você pode recuperar quaisquer arquivos/diretórios do subvolume do instantâneo, caso precise.

O recurso de instantâneo do sistema de arquivos BTRFS usa o princípio da cópia sobre write (vaca). Portanto, não tem muito espaço em disco e você pode tirar instantâneos de um subvolume instantaneamente.

O sistema de arquivos BTRFS suporta 2 tipos de instantâneos.

  1. Instantâneos graváveis: Se você tirar um instantâneo gravável, poderá modificar os arquivos/diretórios do Snapshot posteriormente. Este é o tipo de instantâneo padrão do sistema de arquivos BTRFS.
  2. Instantâneos somente leitura: Se você tirar um instantâneo somente leitura, não poderá modificar os arquivos/diretórios da Snapshot mais tarde.

Este artigo mostrará como tomar instantâneos graváveis ​​e somente leitura de seus subvolumes do sistema de arquivos BTRFS. Também mostrarei como atualizar um instantâneo gravável e recuperar arquivos de um instantâneo. Vou mostrar como remover um instantâneo também. Então vamos começar.

Pré -requisitos

Para experimentar os exemplos deste artigo,

  • Você deve ter o sistema de arquivos BTRFS instalado no seu computador.
  • Você precisa ter um disco rígido ou SSD com pelo menos 1 partição grátis (de qualquer tamanho).

Eu tenho um disco rígido de 20 GB sdb Na minha máquina Ubuntu. Eu criei 2 partições sdb1 e sdb2 Neste disco rígido. Vou usar a partição sdb1 neste artigo.

$ sudo lsblk -e7

Seu disco rígido ou SSD pode ter um nome diferente do meu, assim como as partições. Então, certifique -se de substituí -los por seus a partir de agora.

Se você precisar de ajuda para instalar o sistema de arquivos BTRFS no Ubuntu, verifique meu artigo Instale e use BTRFs no Ubuntu 20.04 LTS.

Se você precisar de ajuda para instalar o sistema de arquivos BTRFS no Fedora, verifique meu artigo Instale e use BTRFs no Fedora 33.

Criando um sistema de arquivos BTRFS

Para experimentar subvolumes BTRFS, você precisa criar um sistema de arquivos BTRFS.

Para criar um sistema de arquivos BTRFS com o rótulo dados no sdb1 Partição, execute o seguinte comando:

$ sudo mkfs.BTRFS -L DATA /DEV /SDB1

Um sistema de arquivos BTRFS deve ser criado.

Crie um diretório /dados com o seguinte comando:

$ sudo mkdir -v /dados

Para montar o sistema de arquivos BTRFS criado no sdb1 partição no /dados Diretório, execute o seguinte comando:

$ sudo montagem /dev /sdb1 /dados

O sistema de arquivos BTRFS deve ser montado como você pode ver na captura de tela abaixo.

$ df -h /dados

Preparando o sistema de arquivos BTRFS para instantâneos

No BTRFS, você pode tirar instantâneos apenas de subvolumes BTRFs. A raiz principal de um sistema de arquivos BTRFS também é um subvolume. Portanto, você pode fazer o backup de todo o sistema de arquivos BTRFS, bem como subvolumes específicos.

Esta seção criará um subvolume BTRFS /dados/projetos/web1 e crie os arquivos necessários para as próximas seções deste artigo abaixo. Também vou criar um diretório onde você pode manter seus instantâneos. Nas próximas seções, mostrarei como tirar instantâneos (gravável e somente leitura), atualizar um instantâneo gravável e recuperar arquivos do instantâneo. Então vamos começar.

Primeiro, crie um novo diretório /dados/projetos do seguinte modo:

$ sudo mkdir -v /dados /projetos

Crie um novo subvolume Web1 no /dados/projetos diretório da seguinte maneira:

$ sudo btrfs subvolume Create/Data/Projects/Web1

Crie um novo arquivo índice.html no /dados/projetos/web1 subvolume da seguinte forma:

$ sudo nano/dados/projetos/web1/index.html

Digite as seguintes linhas de códigos no índice.html arquivo.




Site de demonstração



Olá, mundo 4



Depois de terminar, pressione + X seguido pela Y e Para salvar o índice.html arquivo.

Crie um novo arquivo estilo.CSS no /dados/projetos/web1 subvolume da seguinte forma:

$ sudo nano/dados/projetos/web1/estilo.CSS

Digite as seguintes linhas de códigos no estilo.CSS arquivo.

H1
cor verde;

Depois de terminar, pressione + X seguido pela Y e Para salvar o estilo.CSS arquivo.

Agora o /dados/projetos/web1 Subvolume tem o índice.html e estilo.CSS arquivo.

$ ls -lh/dados/projetos/web1

Eu quero manter todos os instantâneos deste sistema de arquivos BTRFS no /dados/.Instantâneos diretório.

Crie o /dados/.Instantâneos Diretório com o seguinte comando:

$ sudo mkdir -v /data /.Instantâneos

Tirando instantâneos de um subvolume

Para tirar um instantâneo do /dados/projetos/web1 subvolume no /dados/.Instantâneos/Web1-2020-12-25 Diretório (será criado automaticamente), execute o seguinte comando:

$ sudo btrfs subvolume instantâneo/dados/projetos/web1/data/.Instantâneos/Web1-2020-12-25

Um instantâneo do /dados/projetos/web1 o diretório deve ser criado no /dados/.Instantâneos/Web1-2020-12-25 diretório.

Como você pode ver na captura de tela abaixo, um novo subvolume .Instantâneos/Web1-2020-12-25 é criado. Um instantâneo é na verdade um subvolume.

$ sudo btrfs Lista /dados do subvolume

Você pode ver mais informações sobre o instantâneo que você criou no /dados/.Instantâneos/Web1-2020-12-25 diretório da seguinte maneira:

$ sudo btrfs subvolume Show /Data /Data /.Instantâneos/Web1-2020-12-25

Como você pode ver, todos os arquivos que estão no /dados/projetos/web1 subvolume estão no /dados/.Instantâneos/Web1-2020-12-25 instantâneo.

$ árvore -a /dados

Recuperando arquivos de instantâneos

Nesta seção, vou mostrar como recuperar arquivos dos instantâneos do BTRFS.

Primeiro, vou mostrar como recuperar um único arquivo do instantâneo.

Abra o /dados/projetos/web1/index.html Arquivo com o editor de texto Nano da seguinte forma:

$ sudo nano/dados/projetos/web1/index.html

Faça as alterações que você quiser.

Depois de terminar, pressione + X seguido pela Y e Para salvar o arquivo.

Como você pode ver, o principal índice.html o arquivo é diferente do índice.html arquivo no instantâneo.

$ cat/dados/projetos/web1/index.html
$ cat /dados /.Instantâneos/Web1-2020-12-25/índice.html

Nós fizemos as alterações no principal índice.html o arquivo é indesejado e queremos recuperar o índice.html arquivo do instantâneo.

Você pode restaurar o índice.html Arquivo do instantâneo da seguinte forma:

$ sudo cp -v /dados /.Instantâneos/Web1-2020-12-25/índice.html/dados/projetos/web1/index.html

Como você pode ver, o índice.html O arquivo é restaurado do instantâneo.

$ cat/dados/projetos/web1/index.html
$ cat /dados /.Instantâneos/Web1-2020-12-25/índice.html

Agora, vamos ver como recuperar todos os arquivos/diretórios do instantâneo.

Remova todos os arquivos do /dados/projetos/web1 Instantâneo da seguinte forma:

$ sudo rm -rv/dados/projetos/web1/*

Para recuperar todos os arquivos/diretórios do instantâneo, execute o seguinte comando:

$ sudo rsync -avz /data /.Instantâneos/Web1-2020-12-25//Data/Projects/Web1/

Como você pode ver, os arquivos/diretórios são restaurados do instantâneo.

$ ls -lh/dados/projetos/web1

Por fim, vamos ver como recuperar arquivos/diretórios do instantâneo no modo espelho. No modo Mirror, os arquivos/diretórios do subvolume serão os mesmos que no instantâneo. Se houver algum arquivo/diretórios no subvolume que não estiverem disponíveis no instantâneo, eles serão removidos.

Vamos criar um novo arquivo no subvolume para diferenciar a árvore de arquivos do instantâneo.

Criar uma Leia-me.TXT arquivo no /dados/projetos/web1 subvolume da seguinte forma:

$ eco "Hello World 5" | sudo tee/dados/projetos/web1/readme.TXT

Como você pode ver, a árvore do arquivo do /dados/projetos/web1 o subvolume é diferente do /dados/.Instantâneos/Web1-2020-12-25 instantâneo.

$ árvore -a /dados

Para restaurar os arquivos/diretórios do /dados/.Instantâneos/Web1-2020-12-25 Instantâneo para o /dados/projetos/web1 Subvolume no modo Mirror, execute o seguinte comando:

$ sudo rsync -avz - -delete /dados /.Instantâneos/Web1-2020-12-25//Data/Projects/Web1/

Todos os arquivos/diretórios do /dados/projetos/web1 o subvolume deve ser restaurado (no modo espelhado) do /dados/.Instantâneos/Web1-2020-12-25 instantâneo.

A árvore de arquivos do /dados/projetos/web1 subvolume e o /dados/.Instantâneos/Web1-2020-12-25 O instantâneo deve ser o mesmo.

Como você pode ver, o índice.Arquivo e estilo HTML.O conteúdo do arquivo CSS é o mesmo no /dados/projetos/web1 subvolume e o /dados/.Instantâneos/Web1-2020-12-25 instantâneo.

Conteúdo do índice.html e estilo.CSS arquivo no /dados/projetos/web1 Subvolume.

$ cat/dados/projetos/web1/index.html
$ cat/dados/projetos/web1/estilo.CSS

Conteúdo do índice.html e estilo.CSS arquivo no /dados/.Instantâneos/Web1-2020-12-25 instantâneo.

$ cat/dados/projetos/web1/index.html
$ cat/dados/projetos/web1/estilo.CSS

Atualizando um instantâneo

Por padrão, o sistema de arquivos BTRFS tira instantâneos graváveis. Um instantâneo BTRFS é como um subvolume. Portanto, você pode modificar/atualizar os arquivos/diretórios de um instantâneo gravável.

Vamos atualizar o índice.html arquivo no /dados/projetos/web1 Subvolume.

Primeiro, abra o índice.html arquivo do /dados/projetos/web1 subvolume com o Nano Editor de texto da seguinte forma:

$ sudo nano/dados/projetos/web1/index.html

Faça as alterações que você quiser. Depois de terminar, pressione + X seguido pela Y e Para salvar o índice.html arquivo.

Como você pode ver, o índice.arquivo html do /dados/projetos/web1 o subvolume é diferente do /dados/.Instantâneos/Web1-2020-12-25 instantâneo.

$ cat/dados/projetos/web1/index.html
$ cat /dados /.Instantâneos/Web1-2020-12-25/índice.html

Você quer manter o índice.html arquivo do /dados/projetos/web1 Subvolume.

Para atualizar o índice.html arquivo no /dados/.Instantâneos/Web1-2020-12-25 Instantâneo, execute o seguinte comando:

$ sudo cp -v/dados/projetos/web1/index.html /dados /.Instantâneos/Web1-2020-12-25/índice.html

Como você pode ver, o índice.html arquivo do /dados/.Instantâneos/Web1-2020-12-25 O instantâneo é atualizado.

Atualizar um instantâneo é tão fácil quanto copiar novos arquivos para o instantâneo.

Tirando instantâneos somente leitura de um subvolume

Às vezes, você não quer os instantâneos que você levou para ser atualizado de alguma forma. Nesse caso, você pode criar instantâneos somente leitura.

Por exemplo, para criar um instantâneo somente leitura /dados/.Instantâneos/Web1-2020-12-26 do /dados/projetos/web1 Subvolume, execute o seguinte comando:

$ sudo btrfs subvolume instantâneo -r/data/projects/web1/data/.Instantâneos/Web1-2020-12-26

Como você pode ver, um novo subvolume .Instantâneos/Web1-2020-12-26 é criado.

$ sudo btrfs Lista /dados do subvolume

Como você pode ver, o instantâneo /dados/.Instantâneos/Web1-2020-12-26 é somente leitura.

$ sudo btrfs subvolume Show /Data /Data /.Instantâneos/Web1-2020-12-26

Vamos atualizar o índice.html arquivo do /dados/projetos/web1 Subvolume.

Para fazer isso, abra o índice.html arquivo do /dados/projetos/web1 subvolume com o Nano Editor de texto da seguinte forma:

$ sudo nano/dados/projetos/web1/index.html

Faça as alterações que você quiser. Depois de terminar, pressione + X seguido pela Y e Para salvar as mudanças.

Como você pode ver, o índice.html no /dados/projetos/web1 o subvolume é diferente do /dados/.Instantâneos/Web1-2020-12-26 instantâneo.

$ cat/dados/projetos/web1/index.html
$ cat /dados /.Instantâneos/Web1-2020-12-26/índice.html

Vamos tentar atualizar o índice.html arquivo no /dados/.Instantâneos/Web1-2020-12-26 instantâneo.

$ sudo cp -v/dados/projetos/web1/index.html /dados /.Instantâneos/Web1-2020-12-26/índice.html

Como você pode ver, você não pode atualizar o índice.html arquivo do /dados/.Instantâneos/Web1-2020-12-26 Instantâneo porque o instantâneo é somente leitura.

Removendo um instantâneo

Eu te disse anteriormente que um instantâneo do BTRFS é como um subvolume. Então, você pode remover um instantâneo BTRFS, assim como você remove um subvolume BTRFS. Mesmo comando.

É assim que a árvore de arquivos do sistema de arquivos BTRFS montada no /dados o diretório se parece no momento.

$ árvore -a /dados

Vamos remover o .Instantâneos/Web1-2020-12-25 instantâneo.

$ sudo btrfs Lista /dados do subvolume

Para remover o /dados/.Instantâneos/Web1-2020-12-25 Instantâneo, execute o seguinte comando:

$ sudo btrfs subvolume excluir /dados /dados /.Instantâneos/Web1-2020-12-25

Como você pode ver, o instantâneo .Instantâneos/Web1-2020-12-25 não é mais.

$ sudo btrfs Lista /dados do subvolume

Como você pode ver, os arquivos/diretórios do /dados/.Instantâneos/Web1-2020-12-25 O instantâneo também é removido.

$ árvore -a /dados

Conclusão

Este artigo mostrou a você como tomar instantâneos graváveis ​​e somente leitura de seus subvolumes do sistema de arquivos BTRFS. Eu também mostrei como atualizar um instantâneo gravável e recuperar arquivos de um instantâneo. Eu mostrei como remover um instantâneo BTRFS também. Este artigo deve ajudá -lo a começar com o recurso de instantâneo do BTRFS.