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.
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,
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 -e7Seu 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 /SDB1Um sistema de arquivos BTRFS deve ser criado.
Crie um diretório /dados com o seguinte comando:
$ sudo mkdir -v /dadosPara montar o sistema de arquivos BTRFS criado no sdb1 partição no /dados Diretório, execute o seguinte comando:
$ sudo montagem /dev /sdb1 /dadosO sistema de arquivos BTRFS deve ser montado como você pode ver na captura de tela abaixo.
$ df -h /dadosPreparando 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 /projetosCrie um novo subvolume Web1 no /dados/projetos diretório da seguinte maneira:
$ sudo btrfs subvolume Create/Data/Projects/Web1Crie um novo arquivo índice.html no /dados/projetos/web1 subvolume da seguinte forma:
$ sudo nano/dados/projetos/web1/index.htmlDigite as seguintes linhas de códigos no índice.html arquivo.
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.CSSDigite as seguintes linhas de códigos no estilo.CSS arquivo.
H1Depois 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/web1Eu 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âneosTirando 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-25Um 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 subvolumeVocê 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-25Como 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 /dadosRecuperando 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.htmlFaç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.htmlNó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.htmlComo você pode ver, o índice.html O arquivo é restaurado do instantâneo.
$ cat/dados/projetos/web1/index.htmlAgora, 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/web1Por 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.TXTComo 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 /dadosPara 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.htmlConteúdo do índice.html e estilo.CSS arquivo no /dados/.Instantâneos/Web1-2020-12-25 instantâneo.
$ cat/dados/projetos/web1/index.htmlAtualizando 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.htmlFaç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.htmlVocê 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.htmlComo 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-26Como você pode ver, um novo subvolume .Instantâneos/Web1-2020-12-26 é criado.
$ sudo btrfs Lista /dados do subvolumeComo 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-26Vamos 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.htmlFaç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.htmlVamos 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.htmlComo 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 /dadosVamos remover o .Instantâneos/Web1-2020-12-25 instantâneo.
$ sudo btrfs Lista /dados do subvolumePara 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-25Como você pode ver, o instantâneo .Instantâneos/Web1-2020-12-25 não é mais.
$ sudo btrfs Lista /dados do subvolumeComo você pode ver, os arquivos/diretórios do /dados/.Instantâneos/Web1-2020-12-25 O instantâneo também é removido.
$ árvore -a /dadosConclusã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.