Btrfs

Como usar instantâneos Btrfs

Como usar instantâneos Btrfs
O sistema de arquivos Btrfs possui suporte para instantâneos em nível de sistema de arquivos integrado. Você pode criar um subvolume em seu sistema de arquivos Btrfs e tirar instantâneos dos arquivos / diretórios nesse subvolume. Tirar um instantâneo de um subvolume salvará o estado dos arquivos / diretórios nesse 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 Copy-on-Write (CoW). Portanto, não ocupa 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, você pode modificar os arquivos / diretórios desse instantâneo mais tarde. 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 desse instantâneo mais tarde.

Este artigo mostrará como obter instantâneos graváveis ​​e somente leitura dos 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,

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. Portanto, certifique-se de substituí-los pelos seus a partir de agora.

Se você precisar de alguma ajuda na instalação do sistema de arquivos Btrfs no Ubuntu, verifique meu artigo Instale e use o Btrfs no Ubuntu 20.04 LTS.

Se você precisar de alguma ajuda na instalação do sistema de arquivos Btrfs no Fedora, verifique meu artigo Instale e use o Btrfs no Fedora 33.

Criando um sistema de arquivos Btrfs

Para experimentar com 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 / data

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

$ sudo mount / dev / sdb1 / data

O sistema de arquivos Btrfs deve ser montado como você pode ver na imagem abaixo.

$ df -h / data

Preparando o sistema de arquivos Btrfs para instantâneos

No Btrfs, você pode tirar instantâneos de subvolumes Btrfs apenas. 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 de subvolumes específicos.

Esta seção irá criar um subvolume Btrfs / data / projects / web1 e crie os arquivos necessários para as próximas seções deste artigo abaixo. Também criarei um diretório onde você pode manter seus instantâneos. Nas próximas seções, mostrarei como tirar instantâneos (graváveis ​​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 / data / projects do seguinte modo:

$ sudo mkdir -v / data / projects

Crie um novo subvolume web1 no / data / projects diretório da seguinte forma:

$ sudo btrfs subvolume create / data / projects / web1

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

$ sudo nano / data / projects / web1 / index.html

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




Site de demonstração



Hello World 4



Assim que terminar, pressione + X seguido pela Y e para salvar o índice.html Arquivo.

Crie um novo arquivo estilo.css no / data / projects / web1 subvolume da seguinte forma:

$ sudo nano / data / projects / web1 / style.css

Digite as seguintes linhas de códigos no estilo.css Arquivo.

h1
cor verde;

Assim que terminar, pressione + X seguido pela Y e para salvar o estilo.css Arquivo.

Agora o / data / projects / web1 subvolume tem o índice.html e estilo.css Arquivo.

$ ls -lh / data / projects / 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 fotos de um subvolume

Para tirar um instantâneo do / data / projects / web1 subvolume no /dados/.snapshots / web1-2020-12-25 diretório (será criado automaticamente), execute o seguinte comando:

$ sudo btrfs subvolume snapshot / data / projects / web1 / data /.snapshots / web1-2020-12-25

Um instantâneo do / data / projects / web1 diretório deve ser criado no /dados/.snapshots / web1-2020-12-25 diretório.

Como você pode ver na imagem abaixo, um novo subvolume .snapshots / web1-2020-12-25 é criado. Um instantâneo é na verdade um subvolume.

Lista / dados de subvolume $ sudo btrfs

Você pode ver mais informações sobre o instantâneo que criou no /dados/.snapshots / web1-2020-12-25 diretório da seguinte forma:

$ sudo btrfs subvolume show / data /.snapshots / web1-2020-12-25

Como você pode ver, todos os arquivos que estão no / data / projects / web1 subvolume estão no /dados/.snapshots / web1-2020-12-25 instantâneo.

$ tree -a / data

Recuperando arquivos de instantâneos

Nesta seção, vou mostrar como recuperar arquivos de instantâneos Btrfs.

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

Abra o / data / projects / web1 / index.html arquivo com o editor de texto nano da seguinte maneira:

$ sudo nano / data / projects / web1 / index.html

Faça as alterações que desejar.

Assim que terminar, pressione + X seguido pela Y e para salvar o arquivo.

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

$ cat / data / projects / web1 / index.html
$ cat / data /.snapshots / web1-2020-12-25 / index.html

Fizemos as alterações no principal índice.html arquivo são indesejados, e queremos recuperar o índice.html arquivo do instantâneo.

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

$ sudo cp -v / data /.snapshots / web1-2020-12-25 / index.html / data / projects / web1 / index.html

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

$ cat / data / projects / web1 / index.html
$ cat / data /.snapshots / web1-2020-12-25 / index.html

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

Remova todos os arquivos do / data / projects / web1 instantâneo da seguinte forma:

$ sudo rm -rv / data / projects / web1 / *

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

$ sudo rsync -avz / data /.snapshots / web1-2020-12-25 / / data / projects / web1 /

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

$ ls -lh / data / projects / web1

Finalmente, vamos ver como recuperar arquivos / diretórios do instantâneo no modo espelho. No modo espelho, os arquivos / diretórios do subvolume serão os mesmos do instantâneo. Se houver arquivos / diretórios no subvolume que não estão 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 / data / projects / web1 subvolume da seguinte forma:

$ echo "hello world 5" | sudo tee / data / projects / web1 / README.TXT

Como você pode ver, a árvore de arquivos do / data / projects / web1 subvolume é diferente do /dados/.snapshots / web1-2020-12-25 instantâneo.

$ tree -a / data

Para restaurar os arquivos / diretórios do /dados/.snapshots / web1-2020-12-25 instantâneo para o / data / projects / web1 subvolume no modo espelho, execute o seguinte comando:

$ sudo rsync -avz --delete / data /.snapshots / web1-2020-12-25 / / data / projects / web1 /

Todos os arquivos / diretórios do / data / projects / web1 o subvolume deve ser restaurado (no modo espelho) do /dados/.snapshots / web1-2020-12-25 instantâneo.

A árvore de arquivos do / data / projects / web1 subvolume e o /dados/.snapshots / web1-2020-12-25 o instantâneo deve ser o mesmo.

Como você pode ver, o índice.arquivo html e estilo.o conteúdo do arquivo css é o mesmo no / data / projects / web1 subvolume e o /dados/.snapshots / web1-2020-12-25 instantâneo.

Conteúdo do índice.html e estilo.css arquivo no / data / projects / web1 subvolume.

$ cat / data / projects / web1 / index.html
$ cat / data / projects / web1 / style.css

Conteúdo do índice.html e estilo.css arquivo no /dados/.snapshots / web1-2020-12-25 instantâneo.

$ cat / data / projects / web1 / index.html
$ cat / data / projects / web1 / style.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 / data / projects / web1 subvolume.

Primeiro, abra o índice.html arquivo do / data / projects / web1 subvolume com o nano editor de texto da seguinte forma:

$ sudo nano / data / projects / web1 / index.html

Faça as alterações que desejar. Assim que terminar, pressione + X seguido pela Y e para salvar o índice.html Arquivo.

Como você pode ver, o índice.arquivo html do / data / projects / web1 subvolume é diferente do /dados/.snapshots / web1-2020-12-25 instantâneo.

$ cat / data / projects / web1 / index.html
$ cat / data /.snapshots / web1-2020-12-25 / index.html

Você quer manter o índice.html arquivo do / data / projects / web1 subvolume.

Para atualizar o índice.html arquivo no /dados/.snapshots / web1-2020-12-25 instantâneo, execute o seguinte comando:

$ sudo cp -v / data / projects / web1 / index.html / data /.snapshots / web1-2020-12-25 / index.html

Como você pode ver, o índice.html arquivo do /dados/.snapshots / web1-2020-12-25 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 que os instantâneos que você tirou sejam atualizados de forma alguma. Nesse caso, você pode criar instantâneos somente leitura.

Por exemplo, para criar um instantâneo somente leitura /dados/.snapshots / web1-2020-12-26 do / data / projects / web1 subvolume, execute o seguinte comando:

$ sudo btrfs subvolume snapshot -r / data / projects / web1 / data /.snapshots / web1-2020-12-26

Como você pode ver, um novo subvolume .snapshots / web1-2020-12-26 é criado.

Lista / dados de subvolume $ sudo btrfs

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

$ sudo btrfs subvolume show / data /.snapshots / web1-2020-12-26

Vamos atualizar o índice.html arquivo do / data / projects / web1 subvolume.

Para fazer isso, abra o índice.html arquivo do / data / projects / web1 subvolume com o nano editor de texto da seguinte forma:

$ sudo nano / data / projects / web1 / index.html

Faça as alterações que desejar. Assim que terminar, pressione + X seguido pela Y e para salvar as mudanças.

Como você pode ver, o índice.html no / data / projects / web1 subvolume é diferente do /dados/.snapshots / web1-2020-12-26 instantâneo.

$ cat / data / projects / web1 / index.html
$ cat / data /.snapshots / web1-2020-12-26 / index.html

Vamos tentar atualizar o índice.html arquivo no /dados/.snapshots / web1-2020-12-26 instantâneo.

$ sudo cp -v / data / projects / web1 / index.html / data /.snapshots / web1-2020-12-26 / index.html

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

Removendo um Instantâneo

Eu disse antes que um instantâneo Btrfs é como um subvolume. Portanto, você pode remover um instantâneo Btrfs da mesma forma que remove um subvolume Btrfs. Mesmo comando.

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

$ tree -a / data

Vamos remover o .snapshots / web1-2020-12-25 instantâneo.

Lista / dados de subvolume $ sudo btrfs

Para remover o /dados/.snapshots / web1-2020-12-25 instantâneo, execute o seguinte comando:

$ sudo btrfs subvolume delete / data /.snapshots / web1-2020-12-25

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

Lista / dados de subvolume $ sudo btrfs

Como você pode ver, os arquivos / diretórios do /dados/.snapshots / web1-2020-12-25 o instantâneo também é removido.

$ tree -a / data

Conclusão

Este artigo mostrou como obter instantâneos graváveis ​​e somente leitura dos subvolumes do sistema de arquivos Btrfs. 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.

Melhores aplicativos de mapeamento de gamepad para Linux
Se você gosta de jogar no Linux com um gamepad em vez de um teclado típico e sistema de entrada de mouse, existem alguns aplicativos úteis para você. ...
Ferramentas úteis para jogadores de Linux
Se você gosta de jogar no Linux, é provável que tenha usado aplicativos e utilitários como Wine, Lutris e OBS Studio para melhorar a experiência de jo...
Jogos HD Remasterizados para Linux que nunca tiveram uma versão Linux anterior
Muitos desenvolvedores e editores de jogos estão apresentando remasterização em HD de jogos antigos para estender a vida da franquia, por favor, os fã...