Como criar instantâneos com BtrFS no Linux

Deseja criar instantâneos de dados em seu PC Linux apenas no caso de algo ser excluído? Com o sistema de arquivos BtrFS, você pode. Antes de criar um instantâneo BtrFS, você deve primeiro ter um dispositivo de bloco no Linux que esteja usando o sistema de arquivos BtrFS. Se você deseja transformar uma unidade existente em uma unidade BtrFS para dados diversos, siga as instruções abaixo. Deseja usar o BtrFS como seu sistema de arquivos raiz? Certifique-se de selecionar “instalação personalizada” durante o processo de instalação e selecione BtrFS como seu sistema de arquivos de escolha.

Além de ter um dispositivo de bloco com o sistema de arquivos BtrFS formatado para ele, o usuário também deve instalar o btrfs-progs pacote.

Observação: talvez seja necessário executar o comando lsblk para determinar qual dispositivo de bloco deve ser formatado.

BtrFS no Linux

Para formatar uma unidade, primeiro faça backup de todos os dados nela e depois abra um terminal. No terminal ganhe root usando: sudo -s. Com acesso root, use o comando mkfs para criar um novo sistema de arquivos no dispositivo. Neste exemplo, usaremos /dev/sdd1

mkfs.btrfs -f /dev/sdd1

Solução de problemas

A unidade não funciona após a formatação para BtrFS? Pode ser necessário criar uma nova tabela de partição. Aqui está como fazê-lo:

parted /dev/sdd
mklabel gpt
mkpart primary btrfs 1MiB 100%

Saia da ferramenta parted com:

quit

Em seguida, execute novamente o comando format.

mkfs.btrfs -f /dev/sdd1

Criar instantâneos com BtrFS

Antes de tirar snapshots, você precisará fazer alguns sub-volumes. O principal sistema de arquivos do Linux é o BtrFS? Pule esta etapa e vá direto para a configuração de subvolumes. Siga esta parte do processo apenas se estiver usando uma unidade secundária com o sistema de arquivos BtrFS, você precisará montá-la. Neste exemplo, o disco rígido será /dev/sdd.

  Como usar rclone para fazer backup no Google Drive no Linux

sudo -s 
mkdir /btrfs
mount -t btrfs /dev/sdd1 /btrfs

A pasta principal do BtrFS foi criada, montada e está pronta para ser usada. É hora de criar um subvolume. O que é um subvolume? É um recurso especial que vem com o sistema de arquivos BtrFS que permite que os volumes criados funcionem de maneira semelhante a um dispositivo de bloco (pense em /dev/sda1 e etc).

A realidade é que eles não são dispositivos de bloqueio. Em vez disso, são diretórios sofisticados que aproveitam uma tecnologia chamada “espaços de nomes”. Sem ficar muito complicado, o BtrFS aproveita essa tecnologia de espaço de nomes para permitir que os usuários criem vários subvolumes individuais e montáveis ​​que agem e se comportam como dispositivos de bloco.

Para criar seu próprio subvolume, siga estas etapas. Neste exemplo, mostraremos uma estrutura básica de subvolume que começa na pasta principal /btrfs. Lembre-se de que você pode criar seus próprios volumes onde quiser, desde que seja feito em um sistema de arquivos BtrFS.

  As 5 melhores distribuições Linux de lançamento para experimentar

Primeiro, ganhe um shell de raiz. Esses comandos podem ser feitos com privilégios sudo, mas como interagir com o sistema de arquivos (como root) pode ser tedioso, é melhor obter o root imediatamente. Use sudo -s ou faça login no root usando su. Então faça:

btrfs subvolume create /btrfs/vol_a

O primeiro comando cria um subvolume BtrFS em /mnt/btrfs em nossa unidade de exemplo /dev/sdd1. Se você quiser, pode parar aqui e usar isso como um volume para salvar todos os dados importantes. Como alternativa, você pode criar sub-sub volumes (quantos quiser). Para criar um volume dentro de um volume, você faria:

btrfs subvolume create /btrfs/vol_a/vol_b

Para criar um instantâneo, primeiro mova/copie todos os dados importantes em um subvolume. Por exemplo:

cp -R ~/Documents /btrfs/vol_a/

em seguida, use o sistema de arquivos para criar um instantâneo.

btrfs subvolume snapshot /btrfs/vol_a/ /btrfs/vol_a/backup_1

Nota: substitua “backup_1” pelo que você gostaria de chamar de seu snapshot. Rotule-os claramente para que você possa classificá-los mais tarde.

Restaure qualquer instantâneo com: mv /btrfs/vol_a/ /mnt/btrfs/vol_a/backup_1

Montagem de subvolumes como dispositivos de bloco

Parte da grande vantagem dos subvolumes é a capacidade de montá-los individualmente, como dispositivos independentes. Para fazer isso, primeiro liste todos os volumes conhecidos usando o comando btrfs.

btrfs subvolume list /btrfs

Percorra a lista e encontre o número de ID para o subvolume e, em seguida, monte-o com o comando mount. Em seguida, desmonte-o assim que tiver o ID.

mount -o subvolid=XXX /dev/sdX /btrfs

Substitua XXX pelo ID e /dev/sdX pela unidade onde está o volume a ser montado. Apenas tenha em mente que você não pode montar um subvolume na mesma partição que a partição de nível superior. Em vez disso, monte em outra partição ou unidade formatada em BtrFS. Por exemplo:

mount -o subvolid=38 /dev/sdc1 /btrfs

Subvol 38 está localizado em /dev/sdd1, mas /dev/sdc1 também é BtrFS, então os snapshots podem ser montados lá. Isso não precisa ser feito em unidades individuais. Em vez disso, você pode montá-lo em /dev/sdc2 e etc.

  Como jogar Total War: ROME II no Linux

Definir o subvolume padrão

Definir o subvolume padrão do BtrFS é útil, pois facilita a interação com ele. Para definir um padrão, primeiro use o comando de lista de subvolume para localizar o ID. Pegue o ID e conecte-o ao comando set-default:

btrfs subvolume set-default XXX /btrfs

Para se livrar de um padrão que você definiu, use o mesmo comando, exceto que, em vez de usar um ID de volume da lista de subvolumes, use o número 0. Isso retornará às configurações de fábrica e você estará livre para usar outros subvolumes como padrões.

btrfs subvolume set-default 0 /btrfs

Excluir um subvolume

Se a qualquer momento você quiser se livrar de um volume, poderá excluí-lo usando o BtrFS. Por favor, não exclua o subvolume manualmente do disco rígido, com comandos como “rmdir” ou “rm -rf”. É melhor usar as ferramentas do sistema de arquivos BtrFS.

Para excluir um volume, faça:

btrfs subvolume delete /btrfs/volume-name