10 Recuperação de sistema e gerenciamento de instantâneos com o Snapper #
O Snapper permite criar e gerenciar instantâneos de sistema de arquivos. Os instantâneos de sistema de arquivos permitem manter uma cópia do estado de um sistema de arquivos em um determinado momento. A configuração padrão do Snapper foi projetada para permitir voltar modificações feitas no sistema. No entanto, você pode usá-la também para criar backups em disco dos dados dos usuários. Como base para essa funcionalidade, o Snapper usa o sistema de arquivos Btrfs ou os volumes LVM com aprovisionamento dinâmico com um sistema de arquivos XFS ou Ext4.
O Snapper tem uma interface de linha de comando e uma interface do YaST. O Snapper permite criar e gerenciar instantâneos nos seguintes tipos de sistema de arquivos:
Btrfs, um sistema de arquivos de cópia em gravação para Linux que suporta de forma nativa os instantâneos de sistema de arquivos de subvolumes. (Os subvolumes são sistemas de arquivos que podem ser montados separadamente em uma partição física.)
Também é possível inicializar por meio de instantâneos do
Btrfs
. Para obter mais informações, consulte a Seção 10.3, “Rollback do sistema por inicialização de instantâneos”.Volumes LVM com aprovisionamento dinâmico formatados com XFS ou Ext4.
Usando o Snapper, é possível executar as seguintes tarefas:
Desfazer mudanças no sistema feitas pelo
zypper
e pelo YaST. Consulte a Seção 10.2, “Usando o Snapper para desfazer mudanças” para obter os detalhes.Restaurar arquivos de instantâneos anteriores. Consulte a Seção 10.2.2, “Usando o Snapper para restaurar arquivos” para obter os detalhes.
Fazer rollback do sistema inicializando de um instantâneo. Consulte a Seção 10.3, “Rollback do sistema por inicialização de instantâneos” para obter os detalhes.
Criar e gerenciar instantâneos manualmente, no sistema em execução. Consulte a Seção 10.6, “Criando e gerenciando instantâneos manualmente” para obter os detalhes.
10.1 Configuração padrão #
O Snapper no SUSE Linux Enterprise Desktop foi configurado como uma ferramenta para desfazer e recuperar mudanças no sistema. Por padrão, a partição raiz (/
) do SUSE Linux Enterprise Desktop é formatada com Btrfs
. A captura de instantâneos será automaticamente habilitada se a partição raiz (/
) for grande o suficiente (mais do que aproximadamente 16 GB). Por padrão, os instantâneos estão desabilitados em partições que não são /
.
Se você desabilitou o Snapper durante a instalação, pode habilitá-lo a qualquer momento no futuro. Para fazer isso, crie uma configuração padrão do Snapper para o sistema de arquivos raiz executando:
>
sudo
snapper -c root create-config /
Em seguida, habilite os tipos diferentes de instantâneo conforme descrito na Seção 10.1.4.1, “Desabilitando/Habilitando instantâneos”.
Em um sistema de arquivos raiz Btrfs, observe que os instantâneos exigem um sistema de arquivos com subvolumes configurados conforme proposto pelo instalador e uma partição de pelo menos 16 GB.
Quando um instantâneo é criado, tanto o instantâneo quanto o original apontam para os mesmos blocos no sistema de arquivos. Por isso, o instantâneo inicialmente não ocupa espaço adicional no disco. Se os dados do sistema de arquivos original forem modificados, os blocos dos dados modificados serão copiados, enquanto os blocos dos dados antigos serão mantidos no instantâneo. Portanto, o instantâneo ocupa a mesma quantidade de espaço que os dados modificados. Ao longo do tempo, a quantidade de espaço alocada por um instantâneo cresce constantemente. Como consequência, a exclusão de arquivos do sistema de arquivos Btrfs
que contém instantâneos pode não liberar espaço em disco!
Os instantâneos residem sempre na mesma partição ou subvolume no qual foram criados. Não é possível armazenar os instantâneos em uma partição ou um subvolume diferente.
Como resultado, as partições com instantâneos precisam ser maiores do que as partições sem instantâneos. A quantidade exata depende bastante do número de instantâneos mantidos e do volume de modificações de dados. Como uma regra geral, atribua às partições o dobro de espaço do que o de costume. Para evitar que os discos fiquem sem espaço, os instantâneos antigos são limpos automaticamente. Consulte a Seção 10.1.4.4, “Controlando o armazenamento de instantâneos” para obter os detalhes.
10.1.1 Configurações padrão #
- Discos com mais de 16 GB
Arquivo de configuração:
/etc/snapper/configs/root
USE_SNAPPER=yes
TIMELINE_CREATE=no
- Discos com menos de 16 GB
Arquivo de configuração: não criado
USE_SNAPPER=no
TIMELINE_CREATE=yes
10.1.2 Tipos de instantâneos #
Embora os próprios instantâneos não se diferenciem no sentido técnico, nós os distinguimos entre três tipos, com base nos eventos em que foram acionados:
- Instantâneos de linha do tempo
Um único instantâneo é criado a cada hora. Instantâneos antigos são apagados automaticamente. Por padrão, o primeiro instantâneo dos últimos dez dias, meses e anos são mantidos. Usando o método de instalação de OS do YaST (padrão), os instantâneos de linha do tempo são habilitados, exceto para o sistema de arquivos raiz.
- Instantâneos de instalação
Sempre que um ou mais pacotes são instalados com o YaST ou o Zypper, um par de instantâneos é criado: um antes do início da instalação (“Pré”) e outro após o término da instalação (“Pós”). Se um componente importante do sistema, como o kernel, for instalado, o par de instantâneos será marcado como importante (
important=yes
). Instantâneos antigos são apagados automaticamente. Por padrão, os dez últimos instantâneos importantes e os dez últimos instantâneos “regulares” (incluindo os instantâneos de administração) são mantidos. Instantâneos de instalação são habilitados, por padrão.- Instantâneos de administração
Sempre que você administra o sistema com o YaST, um par de instantâneos é criado: um quando algum módulo do YaST é iniciado (“Pré”) e outro quando o módulo é fechado (“Pós”). Instantâneos antigos são apagados automaticamente. Por padrão, os dez últimos instantâneos importantes e os dez últimos instantâneos “regulares” (incluindo os instantâneos de instalação) são mantidos. Instantâneos de administração são habilitados, por padrão.
10.1.3 Diretórios que são excluídos dos instantâneos #
Alguns diretórios precisam ser excluídos dos instantâneos por diversos motivos. A seguinte lista mostra todos os diretórios que são excluídos:
/boot/grub2/i386-pc
,/boot/grub2/x86_64-efi
,/boot/grub2/powerpc-ieee1275
,/boot/grub2/s390x-emu
O rollback da configuração do carregador de boot não é suportado. Os diretórios listados acima são específicos da arquitetura. Os dois primeiros diretórios estão presentes nas máquinas AMD64/Intel 64, os dois últimos no IBM POWER e no IBM Z, respectivamente.
/home
Se
/home
não residir em uma partição separada, ele será excluído para evitar perda de dados nos rollbacks./opt
Os produtos de terceiros normalmente são instalados em
/opt
. Ele é excluído para evitar a desinstalação dos aplicativos nos rollbacks./srv
Contém dados de servidores Web e FTP. Ele é excluído para evitar perda de dados nos rollbacks.
/tmp
Todos os diretórios com arquivos temporários e caches são excluídos dos instantâneos.
/usr/local
Esse diretório é usado na instalação manual de softwares. Ele é excluído para evitar a desinstalação das instalações nos rollbacks.
/var
Esse diretório contém muitos arquivos variáveis, incluindo registros, caches temporários, produtos de terceiros em
/var/opt
e o local padrão para imagens de máquina virtual e bancos de dados. Portanto, o subvolume é criado para excluir todos esses dados variáveis dos instantâneos e tem o recurso Cópia em Gravação desabilitado.
10.1.4 Personalizando a configuração #
O SUSE Linux Enterprise Desktop vem com uma configuração padrão lógica, que deve ser suficiente na maioria dos casos de uso. No entanto, todos os aspectos da criação automática e da manutenção de instantâneos podem ser configurados de acordo com as suas necessidades.
10.1.4.1 Desabilitando/Habilitando instantâneos #
Cada um dos três tipos de instantâneos (linha do tempo, instalação, administração) pode ser habilitado ou desabilitado de forma independente.
- Desabilitando/Habilitando instantâneos de linha do tempo
Habilitar.
snapper -c root set-config "TIMELINE_CREATE=yes"
Desabilitar.
snapper -c root set-config "TIMELINE_CREATE=no"
Usando o método de instalação de OS do YaST (padrão), os instantâneos de linha do tempo são habilitados, exceto para o sistema de arquivos raiz.
- Desabilitando/Habilitando instantâneos de instalação
Habilitar: Instale o pacote
snapper-zypp-plugin
Desabilitar: Desinstale o pacote
snapper-zypp-plugin
Instantâneos de instalação são habilitados, por padrão.
- Desabilitando/Habilitando instantâneos de administração
Habilitar: Defina
USE_SNAPPER
comoyes
em/etc/sysconfig/yast2
.Desabilitar: Defina
USE_SNAPPER
comono
em/etc/sysconfig/yast2
.Instantâneos de administração são habilitados, por padrão.
10.1.4.2 Controlando instantâneos de instalação #
A criação de pares de instantâneos ao instalar pacotes com o YaST ou o Zypper é administrada pelo snapper-zypp-plugin
. Um arquivo de configuração XML, /etc/snapper/zypp-plugin.conf
, define quando criar instantâneos. Por padrão, o arquivo é parecido com o seguinte:
1 <?xml version="1.0" encoding="utf-8"?> 2 <snapper-zypp-plugin-conf> 3 <solvables> 4 <solvable match="w"1 important="true"2>kernel-*3</solvable> 5 <solvable match="w" important="true">dracut</solvable> 6 <solvable match="w" important="true">glibc</solvable> 7 <solvable match="w" important="true">systemd*</solvable> 8 <solvable match="w" important="true">udev</solvable> 9 <solvable match="w">*</solvable>4 10 </solvables> 11 </snapper-zypp-plugin-conf>
O atributo de correspondência define se o padrão é um curinga no estilo shell do Unix ( | |
Se houver correspondência do padrão especificado e o pacote correspondente estiver marcado como importante (por exemplo, pacotes do kernel), o instantâneo também será marcado como importante. | |
Padrão de correspondência com o nome de um pacote. Com base na configuração do atributo | |
Esta linha corresponde todos os pacotes incondicionalmente. |
Com este instantâneo de configuração, os pares são criados sempre que um pacote é instalado (linha 9). Quando são instalados pacotes do kernel, dracut, glibc, systemd ou udev marcados como importantes, o par de instantâneos também é marcado como importante (linhas 4 a 8). Todas as regras são avaliadas.
Para desabilitar uma regra, apague-a ou desative-a usando comentários XML. Para impedir que o sistema crie pares de instantâneos para cada pacote de instalação, por exemplo, comente na linha 9:
1 <?xml version="1.0" encoding="utf-8"?> 2 <snapper-zypp-plugin-conf> 3 <solvables> 4 <solvable match="w" important="true">kernel-*</solvable> 5 <solvable match="w" important="true">dracut</solvable> 6 <solvable match="w" important="true">glibc</solvable> 7 <solvable match="w" important="true">systemd*</solvable> 8 <solvable match="w" important="true">udev</solvable> 9 <!-- <solvable match="w">*</solvable> --> 10 </solvables> 11 </snapper-zypp-plugin-conf>
10.1.4.3 Criando e montando novos subvolumes #
A criação de um novo subvolume abaixo da hierarquia /
e sua montagem permanente são suportadas. Esse tipo de subvolume será excluído dos instantâneos. Não o crie dentro de um instantâneo existente, pois você não poderá mais apagar os instantâneos após um rollback.
O SUSE Linux Enterprise Desktop está configurado com o subvolume /@/
, que serve como uma raiz independente para subvolumes permanentes, como /opt
, /srv
, /home
etc. Qualquer subvolume novo que você cria e monta permanentemente precisa ser criado nesse sistema de arquivos raiz inicial.
Para isso, execute os comandos a seguir. Neste exemplo, um novo subvolume /usr/important
é criado do /dev/sda2
.
>
sudo
mount /dev/sda2 -o subvol=@ /mnt>
sudo
btrfs subvolume create /mnt/usr/important>
sudo
umount /mnt
A entrada correspondente em /etc/fstab
precisa ter a seguinte aparência:
/dev/sda2 /usr/important btrfs subvol=@/usr/important 0 0
Um subvolume pode conter arquivos que mudam constantemente, como imagens de disco virtualizado, arquivos de banco de dados ou arquivos de registro. Se este for o caso, considere desabilitar o recurso de cópia em gravação para este volume a fim de evitar a duplicação de blocos de disco. Use a opção de montagem nodatacow
em /etc/fstab
para fazer isso:
/dev/sda2 /usr/important btrfs nodatacow,subvol=@/usr/important 0 0
Como alternativa, para desabilitar a cópia em gravação para arquivos ou diretórios separados, use o comando chattr +C
PATH
.
10.1.4.4 Controlando o armazenamento de instantâneos #
Instantâneos ocupam espaço no disco. Para evitar que os discos fiquem sem espaço e, por essa razão, provoquem interrupções no sistema, os instantâneos antigos são apagados automaticamente. Por padrão, no máximo dez instantâneos de instalação e administração importantes e dez regulares são mantidos. Se esses instantâneos ocuparem mais do que 50% do tamanho do sistema de arquivos raiz, os instantâneos adicionais serão apagados. Sempre é mantido um mínimo de quatro instantâneos importantes e dois regulares.
Consulte a Seção 10.5.1, “Gerenciando configurações existentes” para ver instruções sobre como mudar os valores.
10.1.4.5 Usando o Snapper em volumes LVM com aprovisionamento dinâmico #
Além dos instantâneos nos sistemas de arquivos Btrfs
, o Snapper também suporta criação de instantâneos em volumes LVM com aprovisionamento dinâmico (instantâneos em volumes LVM regulares não são suportados) formatados com XFS, Ext4 ou Ext3. Para obter mais informações e instruções de configuração de volumes LVM, consulte o Section 6.2, “LVM configuration”.
Para usar o Snapper em um volume LVM com aprovisionamento dinâmico, você precisa criar para ele uma configuração do Snapper. No LVM, é necessário especificar o sistema de arquivos com --fstype=lvm(FILESYSTEM)
. ext3
, etx4
ou xfs
são valores válidos para FILESYSTEM. Exemplo:
>
sudo
snapper -c lvm create-config --fstype="lvm(xfs)" /thin_lvm
É possível ajustar essa configuração de acordo com as suas necessidades conforme descrito na Seção 10.5.1, “Gerenciando configurações existentes”.
10.2 Usando o Snapper para desfazer mudanças #
O Snapper no SUSE Linux Enterprise Desktop é pré-configurado para atuar como uma ferramenta capaz de desfazer as mudanças feitas pelo zypper
e pelo YaST. Para esta finalidade, o Snapper é configurado para criar um par de instantâneos antes e depois de cada execução do zypper
e do YaST. O Snapper permite também restaurar arquivos do sistema que foram acidentalmente apagados ou modificados. Os instantâneos de linha do tempo da partição raiz precisam ser habilitados para essa finalidade. Consulte a Seção 10.1.4.1, “Desabilitando/Habilitando instantâneos” para obter detalhes.
Por padrão, os instantâneos automáticos, conforme descrito anteriormente, são configurados para a partição raiz e seus subvolumes. Para disponibilizar os instantâneos para outras partições, como /home
, é possível criar configurações personalizadas.
Ao trabalhar com instantâneos para restaurar dados, é importante saber que há dois cenários fundamentalmente distintos nos quais o Snapper pode atuar:
- Desfazendo mudanças
Ao desfazer mudanças conforme descrito a seguir, dois instantâneos são comparados, e as mudanças entre eles são desfeitas. O uso deste método também permite selecionar explicitamente os arquivos que devem ser restaurados.
- Rollback
Ao fazer rollbacks conforme descrito na Seção 10.3, “Rollback do sistema por inicialização de instantâneos”, o sistema é redefinido para o estado do momento em que o instantâneo foi criado.
Ao desfazer mudanças, é possível também comparar um instantâneo com o sistema atual. Ao restaurar todos os arquivos com base nesta comparação, o resultado será igual a fazer rollback. No entanto, o uso do método descrito na Seção 10.3, “Rollback do sistema por inicialização de instantâneos” para rollbacks deve ser preferencial, pois é mais rápido e permite revisar o sistema antes de fazer rollback.
Não existe nenhum mecanismo que assegure a consistência dos dados ao criar um instantâneo. Sempre que um arquivo (por exemplo, um banco de dados) for gravado enquanto o instantâneo estiver sendo criado, o resultado será um arquivo corrompido ou parcialmente gravado. A restauração desse arquivo causa problemas. Além disso, determinados arquivos do sistema, como /etc/mtab
, nunca devem ser restaurados. Portanto, é altamente recomendável sempre revisar com cuidado a lista de arquivos modificados e suas diffs. Restaure apenas arquivos realmente relevantes à ação que deseja reverter.
10.2.1 Desfazendo mudanças do YaST e do Zypper #
Se você configurar a partição raiz com o Btrfs
durante a instalação, o Snapper (pré-configurado para fazer rollback das mudanças do YaST ou do Zypper) será instalado automaticamente. Sempre que você iniciar um módulo do YaST ou uma transação do Zypper, serão criados dois instantâneos: um “pré-instantâneo”, que captura o estado do sistema de arquivos antes do início do módulo, e um “pós-instantâneo” após o término do módulo.
Usando o módulo Snapper do YaST ou a ferramenta de linha de comando snapper
, é possível desfazer as mudanças feitas pelo YaST/Zypper restaurando os arquivos do “pré-instantâneo”. Pela comparação dos dois instantâneos, as ferramentas permitem ver quais arquivos foram modificados. É possível também exibir as diferenças entre as duas versões de um arquivo (diff).
Inicie o módulo
pela seção no YaST ou digitandoyast2 snapper
.Confirme se a
está definida como . Esse é sempre o caso, a não ser que você tenha adicionado manualmente configurações personalizadas do Snapper.Escolha o par de pré e pós-instantâneos na lista. Ambos os pares de instantâneos do YaST e do Zypper são do tipo
. Os instantâneos do YaST são denominadoszypp(y2base)
na . Os instantâneos do Zypper são denominadoszypp(zypper)
.Clique em
para abrir a lista de arquivos que são diferentes entre os dois instantâneos.Revise a lista de arquivos. Para exibir a diferença (“diff”) entre a versão pré e pós de um arquivo, selecione-o na lista.
Para restaurar um ou mais arquivos, selecione os arquivos ou diretórios relevantes marcando a respectiva caixa de seleção. Clique em
e clique em para confirmar a ação.Para restaurar um único arquivo, ative sua tela de comparação clicando em seu nome. Clique em
e clique em para confirmar sua seleção.
snapper
#Obtenha uma lista dos instantâneos do YaST e do Zypper executando o comando
snapper list -t pre-post
. Os instantâneos do YaST são denominadosyast MODULE_NAME
na . Os instantâneos do Zypper são denominadoszypp(zypper)
.>
sudo
snapper list -t pre-post Pre # | Post # | Pre Date | Post Date | Description ------+--------+-------------------------------+-------------------------------+-------------- 311 | 312 | Tue 06 May 2018 14:05:46 CEST | Tue 06 May 2018 14:05:52 CEST | zypp(y2base) 340 | 341 | Wed 07 May 2018 16:15:10 CEST | Wed 07 May 2018 16:15:16 CEST | zypp(zypper) 342 | 343 | Wed 07 May 2018 16:20:38 CEST | Wed 07 May 2018 16:20:42 CEST | zypp(y2base) 344 | 345 | Wed 07 May 2018 16:21:23 CEST | Wed 07 May 2018 16:21:24 CEST | zypp(zypper) 346 | 347 | Wed 07 May 2018 16:41:06 CEST | Wed 07 May 2018 16:41:10 CEST | zypp(y2base) 348 | 349 | Wed 07 May 2018 16:44:50 CEST | Wed 07 May 2018 16:44:53 CEST | zypp(y2base) 350 | 351 | Wed 07 May 2018 16:46:27 CEST | Wed 07 May 2018 16:46:38 CEST | zypp(y2base)Obtenha uma lista dos arquivos modificados de um par de instantâneos com
snapper status
PRE.POST à esquerda. Os arquivos com mudanças de conteúdo são marcados com , os arquivos que foram adicionados são marcados com e os arquivos apagados são marcados com .>
sudo
snapper status 350..351 +..... /usr/share/doc/packages/mikachan-fonts +..... /usr/share/doc/packages/mikachan-fonts/COPYING +..... /usr/share/doc/packages/mikachan-fonts/dl.html c..... /usr/share/fonts/truetype/fonts.dir c..... /usr/share/fonts/truetype/fonts.scale +..... /usr/share/fonts/truetype/みかちゃん-p.ttf +..... /usr/share/fonts/truetype/みかちゃん-pb.ttf +..... /usr/share/fonts/truetype/みかちゃん-ps.ttf +..... /usr/share/fonts/truetype/みかちゃん.ttf c..... /var/cache/fontconfig/7ef2298fde41cc6eeb7af42e48b7d293-x86_64.cache-4 c..... /var/lib/rpm/Basenames c..... /var/lib/rpm/Dirnames c..... /var/lib/rpm/Group c..... /var/lib/rpm/Installtid c..... /var/lib/rpm/Name c..... /var/lib/rpm/Packages c..... /var/lib/rpm/Providename c..... /var/lib/rpm/Requirename c..... /var/lib/rpm/Sha1header c..... /var/lib/rpm/Sigmd5Para exibir a diff de determinado arquivo, execute
snapper diff
PRE.POST FILENAME à esquerda. Se você não especificar FILENAME, será exibida a diff de todos os arquivos.>
sudo
snapper diff 350..351 /usr/share/fonts/truetype/fonts.scale --- /.snapshots/350/snapshot/usr/share/fonts/truetype/fonts.scale 2014-04-23 15:58:57.000000000 +0200 +++ /.snapshots/351/snapshot/usr/share/fonts/truetype/fonts.scale 2014-05-07 16:46:31.000000000 +0200 @@ -1,4 +1,4 @@ -1174 +1486 ds=y:ai=0.2:luximr.ttf -b&h-luxi mono-bold-i-normal--0-0-0-0-c-0-iso10646-1 ds=y:ai=0.2:luximr.ttf -b&h-luxi mono-bold-i-normal--0-0-0-0-c-0-iso8859-1 [...]Para restaurar um ou mais arquivos, execute
snapper -v undochange
PRE.POST FILENAMES à esquerda. Se você não especificar FILENAMES, todos os arquivos modificados serão restaurados.>
sudo
snapper -v undochange 350..351 create:0 modify:13 delete:7 undoing change... deleting /usr/share/doc/packages/mikachan-fonts deleting /usr/share/doc/packages/mikachan-fonts/COPYING deleting /usr/share/doc/packages/mikachan-fonts/dl.html deleting /usr/share/fonts/truetype/みかちゃん-p.ttf deleting /usr/share/fonts/truetype/みかちゃん-pb.ttf deleting /usr/share/fonts/truetype/みかちゃん-ps.ttf deleting /usr/share/fonts/truetype/みかちゃん.ttf modifying /usr/share/fonts/truetype/fonts.dir modifying /usr/share/fonts/truetype/fonts.scale modifying /var/cache/fontconfig/7ef2298fde41cc6eeb7af42e48b7d293-x86_64.cache-4 modifying /var/lib/rpm/Basenames modifying /var/lib/rpm/Dirnames modifying /var/lib/rpm/Group modifying /var/lib/rpm/Installtid modifying /var/lib/rpm/Name modifying /var/lib/rpm/Packages modifying /var/lib/rpm/Providename modifying /var/lib/rpm/Requirename modifying /var/lib/rpm/Sha1header modifying /var/lib/rpm/Sigmd5 undoing change done
Não é recomendado reverter adições de usuário desfazendo mudanças com o Snapper. Como alguns diretórios são excluídos dos instantâneos, os arquivos pertencentes a estes usuários permanecerão no sistema de arquivos. Se for criado um usuário com o mesmo ID de usuário daquele que foi apagado, ele herdará os arquivos. Portanto, é altamente recomendável usar a ferramenta
do YaST para remover usuários.10.2.2 Usando o Snapper para restaurar arquivos #
Além dos instantâneos de instalação e administração, o Snapper cria instantâneos de linha do tempo. É possível usar os instantâneos de backup para restaurar arquivos que foram apagados acidentalmente ou para restaurar a versão anterior de um arquivo. Usando o recurso diff do Snapper, é possível também descobrir quais modificações foram feitas em um período específico.
A capacidade de restaurar arquivos é interessante principalmente no que diz respeito a dados, que podem residir em subvolumes ou partições dos quais os instantâneos não são criados por padrão. Para restaurar arquivos de diretórios pessoais, por exemplo, crie uma configuração separada do Snapper para /home
capturando instantâneos de linha do tempo automáticos. Consulte a Seção 10.5, “Criando e modificando as configurações do Snapper” para obter instruções.
Os instantâneos criados do sistema de arquivos raiz (definido pela configuração raiz do Snapper) podem ser usados para fazer rollback do sistema. A forma recomendada de fazer o rollback é inicializar do instantâneo e depois fazer o rollback. Consulte a Seção 10.3, “Rollback do sistema por inicialização de instantâneos” para obter os detalhes.
É possível também fazer rollback restaurando todos os arquivos de um instantâneo do sistema de arquivos raiz, conforme descrito a seguir. No entanto, isso não é recomendado. É possível restaurar arquivos únicos, por exemplo, um arquivo de configuração do diretório /etc
, mas não a lista completa de arquivos do instantâneo.
Esta restrição afeta apenas os instantâneos criados do sistema de arquivos raiz.
Inicie o módulo
pela seção no YaST ou digitandoyast2 snapper
.Selecione a
da qual escolher o instantâneo.Selecione o instantâneo de linha do tempo do qual restaurar o arquivo e escolha
. Os instantâneos de linha do tempo são do tipo , com um valor descritivo de .Selecione um arquivo na caixa de texto clicando no nome dele. A diferença entre a versão do instantâneo e o sistema atual é exibida. Marque a caixa de seleção para escolher o arquivo para restauração. Faça isso para todos os arquivos que deseja restaurar.
Clique em
e clique em para confirmar a ação.
snapper
#Obtenha a lista de instantâneos de linha do tempo para determinada configuração executando o seguinte comando:
>
sudo
snapper -c CONFIG list -t single | grep timelineCONFIG precisa ser substituído pela configuração existente do Snapper. Use
snapper list-configs
para exibir uma lista.Obtenha a lista de arquivos modificados de determinado instantâneo executando o seguinte comando:
>
sudo
snapper -c CONFIG status SNAPSHOT_ID..0Substitua SNAPSHOT_ID pelo ID do instantâneo do qual deseja restaurar os arquivos.
Se preferir, liste as diferenças entre a versão do arquivo atual e a versão do instantâneo executando
>
sudo
snapper -c CONFIG diff SNAPSHOT_ID..0 FILE NAMESe você não especificar <FILE NAME>, será mostrada a diferença de todos os arquivos.
Para restaurar um ou mais arquivos, execute
>
sudo
snapper -c CONFIG -v undochange SNAPSHOT_ID..0 FILENAME1 FILENAME2Se você não especificar nomes de arquivos, todos os arquivos mudados serão restaurados.
10.3 Rollback do sistema por inicialização de instantâneos #
A versão GRUB 2 incluída no SUSE Linux Enterprise Desktop pode inicializar de instantâneos Btrfs. Juntamente com o recurso de rollback do Snapper, ela permite recuperar um sistema mal configurado. Apenas os instantâneos criados com a configuração padrão do Snapper (root
) são inicializáveis.
A partir do SUSE Linux Enterprise Desktop 15 SP5, os rollbacks de sistema apenas serão suportados se a configuração de subvolume padrão da partição raiz não tiver sido mudada.
Ao inicializar um instantâneo, as partes do sistema de arquivos incluídas no instantâneo são montadas como apenas leitura; todos os outros sistemas de arquivos e partes excluídos dos instantâneos são montados como leitura-gravação e podem ser modificados.
Ao trabalhar com instantâneos para restaurar dados, é importante saber que há dois cenários fundamentalmente distintos nos quais o Snapper pode atuar:
- Desfazendo mudanças
Ao desfazer mudanças conforme descrito na Seção 10.2, “Usando o Snapper para desfazer mudanças”, dois instantâneos são comparados e as mudanças entre eles são revertidas. O uso deste método também permite excluir explicitamente os arquivos selecionados para não serem restaurados.
- Rollback
Ao fazer rollbacks conforme descrito a seguir, o sistema é redefinido para o estado do momento em que o instantâneo foi criado.
Para fazer rollback de um instantâneo inicializável, os seguintes requisitos devem ser atendidos. Em uma instalação padrão, o sistema é configurado apropriadamente.
O sistema de arquivos raiz precisa ser o Btrfs. A inicialização de instantâneos de volume LVM não é suportada.
O sistema de arquivos raiz precisa estar em um único dispositivo, uma única partição e um único subvolume. Os diretórios excluídos dos instantâneos, como
/srv
(consulte Seção 10.1.3, “Diretórios que são excluídos dos instantâneos” para ver a lista completa) podem residir em partições separadas.O sistema precisa ser inicializável pelo carregador de boot instalado.
Para fazer rollback de um instantâneo inicializável, faça o seguinte:
Inicialize o sistema. No menu de boot, escolha
(Instantâneos inicializáveis) e selecione o instantâneo que deseja inicializar. A lista de instantâneos é classificada por data: o instantâneo mais recente é listado primeiro.Efetue login no sistema. Verifique com atenção se tudo funciona conforme esperado. Observe que você não pode gravar em nenhum diretório que faça parte do instantâneo. Os dados gravados em outros diretórios não serão perdidos, independentemente do que você faça a seguir.
Dependendo se você deseja ou não fazer rollback, escolha a próxima etapa:
Se o sistema está em um estado no qual você não deseja fazer rollback, reinicialize-o para inicializá-lo no estado atual do sistema. Em seguida, você pode escolher um instantâneo diferente ou iniciar o sistema de recuperação.
Para fazer o rollback, execute
>
sudo
snapper rollbacke reinicialize posteriormente. Na tela de boot, escolha a entrada de boot padrão para reinicializar no sistema restaurado. É criado um instantâneo do status do sistema de arquivos antes do rollback. O subvolume padrão da raiz será substituído por um novo instantâneo de leitura-gravação. Para obter os detalhes, consulte a Seção 10.3.1, “Instantâneos após rollback”.
Isso é útil para adicionar uma descrição para o instantâneo com a opção
-d
. Por exemplo:New file system root since rollback on DATE TIME
Se os instantâneos não forem desabilitados durante a instalação, um instantâneo inicializável inicial será criado ao término da instalação do sistema inicial. É possível voltar para esse estado a qualquer momento inicializando o instantâneo. É possível identificar o instantâneo pela descrição after installation
.
Um instantâneo inicializável também é criado ao iniciar o upgrade do sistema para um service pack ou uma nova versão principal (desde que os instantâneos não estejam desabilitados).
10.3.1 Instantâneos após rollback #
Antes da execução de um rollback, é criado um instantâneo do sistema de arquivos em execução. A descrição faz referência ao ID do instantâneo que foi restaurado no rollback.
Os instantâneos criados por rollbacks recebem o valor number
para o atributo Cleanup
. Portanto, os instantâneos de rollback são automaticamente apagados quando o número definido de instantâneos é atingido. Consulte a Seção 10.7, “Limpeza automática de instantâneos” para obter os detalhes. Se o instantâneo contém dados importantes, extraia os dados dele antes que ele seja removido.
10.3.1.1 Exemplo de instantâneo de rollback #
Por exemplo, após uma nova instalação, os seguintes instantâneos estarão disponíveis no sistema:
#
snapper
--iso list Type | # | | Cleanup | Description | Userdata -------+---+ ... +---------+-----------------------+-------------- single | 0 | | | current | single | 1 | | | first root filesystem | single | 2 | | number | after installation | important=yes
Após a execução do comando sudo snapper rollback
, o instantâneo 3
será criado com o estado do sistema antes da execução do rollback. O instantâneo 4
é o novo subvolume Btrfs padrão e, portanto, o sistema após uma reinicialização.
#
snapper
--iso list Type | # | | Cleanup | Description | Userdata -------+---+ ... +---------+-----------------------+-------------- single | 0 | | | current | single | 1 | | number | first root filesystem | single | 2 | | number | after installation | important=yes single | 3 | | number | rollback backup of #1 | important=yes single | 4 | | | |
10.3.2 Acessando e identificando entradas de boot de instantâneos #
Para inicializar de um instantâneo, reinicialize a máquina e escolha ↓ e ↑ para navegar e pressione Enter para ativar o instantâneo selecionado. A ativação de um instantâneo pelo menu de boot não reinicializa a máquina imediatamente; mas, em vez disso, abre o carregador de boot do instantâneo selecionado.
(Iniciar Carregador de Boot de instantâneo apenas leitura). Aparece uma tela com todos os instantâneos inicializáveis. O instantâneo mais recente é listado primeiro, o mais antigo por último. Use as teclasConsulte https://www.suse.com/support/kb/doc/?id=000020602 para obter mais detalhes.
Cada entrada de instantâneo no carregador de boot segue um esquema de nomeação que torna possível identificá-lo facilmente:
[*]1OS2 (KERNEL3,DATE4TTIME5,DESCRIPTION6)
Se o instantâneo foi marcado como | |
Rótulo do sistema operacional. | |
Data no formato | |
Horário no formato | |
Esse campo mostra a descrição do instantâneo. No caso de um instantâneo criado manualmente, trata-se da string criada com a opção |
É possível substituir a string padrão no campo da descrição de um instantâneo por uma string personalizada. Isso é útil, por exemplo, quando uma descrição criada automaticamente não é suficiente, ou quando uma descrição inserida pelo usuário é muito longa. Para definir uma string personalizada STRING para o instantâneo NUMBER, use o seguinte comando:
>
sudo
snapper modify --userdata "bootloader=STRING" NUMBER
A descrição deve ter no máximo 25 caracteres, tudo o que ultrapassar esse tamanho não poderá ser lido na tela de boot.
10.3.3 Limitações #
O rollback do sistema completo, restauração do sistema completo para o estado idêntico ao que ele estava quando o instantâneo foi capturado, não é possível.
10.3.3.1 Diretórios excluídos dos instantâneos #
Os instantâneos do sistema de arquivos raiz não contêm todos os diretórios. Consulte Seção 10.1.3, “Diretórios que são excluídos dos instantâneos” para ver os detalhes e motivos. Como consequência geral, os dados desses diretórios não são restaurados, resultando nas seguintes limitações.
- Complementos e software de terceiros podem se tornar inutilizáveis após um rollback
Os aplicativos e complementos que instalam dados em subvolumes excluídos do instantâneo, como
/opt
, poderão não funcionar após o rollback, se outras partes dos dados dos aplicativos também forem instaladas em subvolumes incluídos no instantâneo. Reinstale o aplicativo ou complemento para resolver o problema.- Problemas de acesso a arquivos
Se um aplicativo mudar as permissões e/ou a propriedade do arquivo no meio tempo entre o instantâneo e o sistema atual, o aplicativo talvez não consiga acessar o arquivo. Redefina as permissões e/ou a propriedade dos arquivos afetados após o rollback.
- Formatos de dados incompatíveis
Se um serviço ou aplicativo estabelecer um novo formato de dados no meio tempo entre o instantâneo e o sistema atual, o aplicativo talvez não consiga ler os arquivos de dados afetados após o rollback.
- Subvolumes com mistura de códigos e dados
Subvolumes como
/srv
podem incluir uma mistura de códigos e dados. O rollback pode resultar em código não funcional. A instalação de uma versão PHP menos eficiente, por exemplo, pode resultar em scripts PHP com defeito no servidor Web.- Dados do usuário
Se o rollback remover usuários do sistema, os dados de propriedade desses usuários nos diretórios excluídos do instantâneo serão removidos. Se for criado um usuário com o mesmo ID de usuário, ele herdará os arquivos. Use uma ferramenta como
find
para localizar e remover arquivos órfãos.
10.3.3.2 Nenhum rollback dos dados do carregador de boot #
Não é possível fazer rollback do carregador de boot, pois todas as “fases” do carregador de boot devem se ajustar. Isso não é garantido no caso de rollbacks de /boot
.
10.4 Habilitando o Snapper em diretórios pessoais dos usuários #
É possível habilitar instantâneos para os diretórios /home
dos usuários, o que suporta vários casos de uso:
Usuários individuais podem gerenciar seus próprios instantâneos e rollbacks.
Usuários do sistema, por exemplo, administradores de banco de dados, sistema e rede, que desejam monitorar cópias de arquivos de configuração, documentação, etc.
Compartilhamentos do Samba com diretórios pessoais e back end btrfs.
O diretório de cada usuário é um subvolume Btrfs de /home
. É possível configurar isso manualmente (consulte a Seção 10.4.3, “Habilitando manualmente os instantâneos em diretórios pessoais”). Entretanto, o modo mais prático é usar o pam_snapper
. O pacote pam_snapper
instala o módulo pam_snapper.so
e os scripts ajudantes, o que automatiza a criação de usuário e a configuração do Snapper.
O pam_snapper
permite a integração com o comando useradd
, os PAMs (Pluggable Authentication Modules – Módulos de Autenticação Conectáveis) e o Snapper. Por padrão, ele cria instantâneos no login e logout do usuário e também cria instantâneos com base no tempo, pois determinados usuários permanecem conectados por longos períodos. Você pode mudar os padrões usando os comandos e arquivos de configuração normais do Snapper.
10.4.1 Instalando o pam_snapper e criando usuários #
A maneira mais fácil é começar com um novo diretório /home
formatado com Btrfs e nenhum usuário existente. Instale o pam_snapper
:
#
zypper in pam_snapper
Adicione esta linha a /etc/pam.d/common-session
:
session optional pam_snapper.so
Use o script /usr/lib/pam_snapper/pam_snapper_useradd.sh
para criar um novo usuário e um diretório pessoal. Por padrão, o script executa um dry run. Edite o script para mudar DRYRUN=1
para DRYRUN=0
. Agora você pode criar um novo usuário:
#
/usr/lib/pam_snapper/pam_snapper_useradd.sh \
username group passwd=password
Create subvolume '/home/username'
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Os arquivos de /etc/skel
serão copiados para o diretório pessoal do usuário na primeira vez que ele efetuar login. Liste suas configurações do Snapper para verificar se a configuração do usuário foi criada:
#
snapper list --all
Config: home_username, subvolume: /home/username
Type | # | Pre # | Date | User | Cleanup | Description | Userdata
-------+---+-------+------+------+---------+-------------+---------
single | 0 | | | root | | current |
Ao longo do tempo, essa saída será preenchida com uma lista de instantâneos, que o usuário poderá gerenciar com os comandos padrão do Snapper.
10.4.2 Removendo usuários #
Remova usuários com o script /usr/lib/pam_snapper/pam_snapper_userdel.sh
. Por padrão, ele executa um dry run, portanto edite-o para mudar DRYRUN=1
para DRYRUN=0
. Isso remove o usuário, o subvolume pessoal do usuário, a configuração do Snapper e apaga todos os instantâneos.
#
/usr/lib/pam_snapper/pam_snapper_userdel.sh username
10.4.3 Habilitando manualmente os instantâneos em diretórios pessoais #
Estas são as etapas para a configuração manual dos diretórios pessoais dos usuários com o Snapper. O /home
deve ser formatado com Btrfs sem nenhum usuário criado.
#
btrfs subvol create /home/username#
snapper -c home_username create-config /home/username#
sed -i -e "s/ALLOW_USERS=\"\"/ALLOW_USERS=\"username\"/g" \ /etc/snapper/configs/home_username#
yast users add username=username home=/home/username password=password#
chown username.group /home/username#
chmod 755 /home/username/.snapshots
10.5 Criando e modificando as configurações do Snapper #
O modo como o Snapper se comporta é definido em um arquivo de configuração específico a cada partição ou subvolume Btrfs
. Esses arquivos de configuração residem em /etc/snapper/configs/
.
Caso o sistema de arquivos raiz seja grande o suficiente (aproximadamente 12 GB), os instantâneos serão habilitados automaticamente no sistema de arquivos raiz /
na instalação. A configuração padrão correspondente é denominada root
. Ela cria e gerencia os instantâneos do YaST e do Zypper. Consulte a Seção 10.5.1.1, “Dados de configuração” para obter uma lista dos valores padrão.
Conforme explicado na Seção 10.1, “Configuração padrão”, a habilitação de instantâneos requer espaço livre adicional no sistema de arquivos raiz. A quantidade depende do número de pacotes instalados e de mudanças feitas no volume que está incluído nos instantâneos. A frequência e o número de instantâneos que são armazenados também são considerados.
Há um tamanho mínimo de sistema de arquivos raiz que é necessário para habilitar instantâneos automaticamente durante a instalação. Atualmente, esse tamanho está por volta de 12 GB. Esse valor pode mudar no futuro, dependendo da arquitetura e do tamanho do sistema básico. Ele depende dos valores para as seguintes tags no arquivo /control.xml
da mídia de instalação:
<root_base_size> <btrfs_increase_percentage>
Ele é calculado com a seguinte fórmula: ROOT_BASE_SIZE * (1 + BTRFS_INCREASE_PERCENTAGE/100)
Lembre-se de que esse valor é um tamanho mínimo. Considere usar mais espaço para o sistema de arquivos raiz. Como regra geral, dobre o tamanho que você usa quando não tem instantâneos habilitados.
É possível criar suas próprias configurações para outras partições formatadas com Btrfs
ou subvolumes existentes em uma partição Btrfs
. No exemplo a seguir, nós definimos uma configuração do Snapper para backup dos dados do servidor Web que residem em uma partição separada formatada por Btrfs
montada em /srv/www
.
Após a criação de uma configuração, é possível usar o próprio snapper
ou o módulo do YaST para restaurar arquivos desses instantâneos. No YaST, você precisa selecionar a e especificar a configuração do snapper
com o switch global -c
(por exemplo, snapper -c myconfig
list
).
Para criar uma nova configuração do Snapper, execute snapper
create-config
:
>
sudo
snapper -c www-data1 create-config /srv/www2
Nome do arquivo de configuração. | |
Ponto de montagem da partição ou subvolume |
Este comando cria um novo arquivo de configuração /etc/snapper/configs/www-data
com valores padrão lógicos (obtidos de /etc/snapper/config-templates/default
). Consulte a Seção 10.5.1, “Gerenciando configurações existentes” para obter instruções de como ajustar os padrões.
Os valores padrão para uma nova configuração são obtidos de /etc/snapper/config-templates/default
. Para usar seu próprio conjunto de padrões, crie uma cópia desse arquivo no mesmo diretório e ajuste-o de acordo com as suas necessidades. Para usá-lo, especifique a opção -t
com o comando create-config:
>
sudo
snapper -c www-data create-config -t MY_DEFAULTS /srv/www
10.5.1 Gerenciando configurações existentes #
O comando snapper
oferece vários subcomandos para gerenciar as configurações existentes. É possível listar, mostrar, apagar e modificá-las:
- Listando configurações
Use o subcomando
snapper list-configs
para obter todas as configurações existentes:>
sudo
snapper list-configs Config | Subvolume -------+---------- root | / usr | /usr local | /local- Mostrando uma configuração
Use o subcomando
snapper -c CONFIG get-config
para exibir a configuração especificada. Substitua CONFIG por um dos nomes de configuração mostrados pelosnapper list-configs
. Para obter mais informações sobre as opções de configuração, consulte Seção 10.5.1.1, “Dados de configuração”.Para exibir a configuração padrão, execute:
>
sudo
snapper -c root get-config- Modificando uma configuração
Use o subcomando
snapper -c CONFIG set-config OPTION=VALUE
para modificar uma opção na configuração especificada. Substitua CONFIG por um dos nomes de configuração mostrados pelosnapper list-configs
. Os valores possíveis para OPTION e VALUE estão listados na Seção 10.5.1.1, “Dados de configuração”.- Apagando uma configuração
Use o subcomando
snapper -c CONFIG delete-config
para apagar uma configuração. Substitua CONFIG por um dos nomes de configuração mostrados pelosnapper list-configs
.
10.5.1.1 Dados de configuração #
Cada configuração possui uma lista das opções que podem ser modificadas por linha de comando. A seguinte lista mostra os detalhes de cada opção. Para mudar um valor, execute snapper -c CONFIG
set-config
"KEY=VALUE"
.
ALLOW_GROUPS
,ALLOW_USERS
Conceder permissões para usar instantâneos a usuários regulares. Consulte a Seção 10.5.1.2, “Usando o Snapper como usuário comum” para obter mais informações.
O valor padrão é
""
.BACKGROUND_COMPARISON
Define se os instantâneos pré e pós devem ser comparados em segundo plano após a criação.
O valor padrão é
"yes"
.EMPTY_*
Define o algoritmo de limpeza de pares de instantâneos com instantâneos pré e pós idênticos. Consulte a Seção 10.7.3, “Limpando pares de instantâneos que não são diferentes” para obter os detalhes.
FSTYPE
Tipo de sistema de arquivos da partição. Não alterar.
O valor padrão é
"btrfs"
.NUMBER_*
Define o algoritmo de limpeza para instantâneos de instalação e de administração. Consulte a Seção 10.7.1, “Limpando instantâneos numerados” para obter os detalhes.
QGROUP
/SPACE_LIMIT
Adiciona suporte a cotas aos algoritmos de limpeza. Consulte a Seção 10.7.5, “Adicionando suporte a cotas de disco” para obter os detalhes.
SUBVOLUME
Ponto de montagem da partição ou do subvolume para o instantâneo. Não alterar.
O valor padrão é
"/"
.SYNC_ACL
Se o Snapper for utilizado por usuários regulares (consulte a Seção 10.5.1.2, “Usando o Snapper como usuário comum”), eles deverão ter acesso e ler os arquivos dos diretórios
.snapshot
. Se SYNC_ACL estiver definido comoyes
, o Snapper os tornará acessíveis automaticamente usando ACLs para usuários e grupos das entradas ALLOW_USERS ou ALLOW_GROUPS.O valor padrão é
"no"
.TIMELINE_CREATE
Se definido como
yes
, serão criados instantâneos por hora. Valores válidos:yes
,no
.O valor padrão é
"no"
.TIMELINE_CLEANUP
/TIMELINE_LIMIT_*
Define o algoritmo de limpeza de instantâneos de linha do tempo. Consulte a Seção 10.7.2, “Limpando instantâneos de linha do tempo” para obter os detalhes.
10.5.1.2 Usando o Snapper como usuário comum #
Por padrão, o Snapper só pode ser usado pelo root
. No entanto, há casos em que determinados grupos ou usuários precisam criar instantâneos ou desfazer mudanças revertendo um instantâneo:
administradores de site na Web que desejam criar instantâneos de
/srv/www
Usuários que desejam capturar um instantâneo de seu diretório pessoal
Para essas finalidades, você pode criar configurações do Snapper que concedam permissões a usuários e/ou grupos. Os usuários especificados devem conseguir ler e acessar o diretório .snapshots
correspondente. A maneira mais fácil de fazer isso é definir a opção SYNC_ACL como yes
.
Todas as etapas deste procedimento devem ser executadas pelo root
.
Se ainda não existir uma configuração do Snapper, crie uma para a partição ou o subvolume em que o usuário poderá usar o Snapper. Consulte a Seção 10.5, “Criando e modificando as configurações do Snapper” para obter instruções. Exemplo:
>
sudo
snapper --config web_data create /srv/wwwO arquivo de configuração é criado em
/etc/snapper/configs/CONFIG
, em que CONFIG é o valor que você especificou com-c/--config
na etapa anterior (por exemplo,/etc/snapper/configs/web_data
). Ajuste-o de acordo com as suas necessidades. Para obter mais informações, consulte a Seção 10.5.1, “Gerenciando configurações existentes”.Defina os valores de
ALLOW_USERS
eALLOW_GROUPS
para conceder permissões a usuários e grupos, respectivamente. Separe várias entradas com Space. Para conceder permissões ao usuáriowww_admin
, por exemplo, execute:>
sudo
snapper -c web_data set-config "ALLOW_USERS=www_admin" SYNC_ACL="yes"Agora o(s) usuário(s) e grupo(s) pode(m) utilizar a configuração especificada do Snapper. É possível testá-la com o comando
list
, por exemplo:www_admin:~ >
snapper -c web_data list
10.6 Criando e gerenciando instantâneos manualmente #
Não é possível apenas criar e gerenciar os instantâneos automaticamente pela configuração do Snapper, você também pode criar pares de instantâneos (“antes e após”) ou instantâneos únicos manualmente usando a ferramenta de linha de comando ou o módulo do YaST.
Todas as operações do Snapper são executadas de acordo com uma configuração existente (consulte a Seção 10.5, “Criando e modificando as configurações do Snapper” para obter os detalhes). Você só pode criar instantâneos de partições ou volumes em que exista uma configuração. Por padrão, a configuração do sistema (root
) é usada. Para criar ou gerenciar instantâneos com sua própria configuração, selecione-a de maneira clara. Use a caixa suspensa no YaST ou especifique -c
na linha de comando (snapper -c MYCONFIG
COMMAND
).
10.6.1 Metadados de instantâneos #
Cada instantâneo consiste no próprio instantâneo e em determinados metadados. Ao criar um instantâneo, você também precisa especificar os metadados. A modificação de um instantâneo também altera seus metadados; não é possível modificar seu conteúdo. Use snapper list
para mostrar os instantâneos existentes e seus metadados:
snapper --config home list
Lista os instantâneos da configuração
home
. Para listar os instantâneos da configuração padrão (raiz), usesnapper -c root list
ousnapper list
.snapper list -a
Lista os instantâneos de todas as configurações existentes.
snapper list -t pre-post
Lista todos os pares pré-instantâneo e pós-instantâneo da configuração padrão (
root
).snapper list -t single
Lista todos os instantâneos do tipo
single
da configuração padrão (root
).
Os seguintes metadados estão disponíveis para cada instantâneo:
Tipo: tipo do instantâneo. Consulte a Seção 10.6.1.1, “Tipos de instantâneos” para obter os detalhes. Esses dados não podem ser mudados.
Número: número exclusivo do instantâneo. Esses dados não podem ser mudados.
Número do Pré: especifica o número do pré-instantâneo correspondente. Apenas para instantâneos do tipo pós. Esses dados não podem ser mudados.
Descrição: uma descrição do instantâneo.
Dados de usuário: uma descrição estendida que especifica os dados personalizados no formato de uma lista de chave=valor separada por vírgula:
reason=testing, project=foo
. Este campo também é usado para marcar um instantâneo como importante (important=yes
) e listar o usuário que criou o instantâneo (user=tux).Algoritmo de Limpeza: algoritmo de limpeza do instantâneo. Consulte a Seção 10.7, “Limpeza automática de instantâneos” para obter os detalhes.
10.6.1.1 Tipos de instantâneos #
O Snapper reconhece três tipos diferentes de instantâneos: pre (pré) post (pós) e single (único). Eles são iguais fisicamente, mas o Snapper trabalha com eles de forma diferente.
pre
Instantâneo de um sistema de arquivos antes da modificação. Cada instantâneo
pre
corresponde a um instantâneopost
. Por exemplo, ele é usado para instantâneos automáticos do YaST/Zypper.post
Instantâneo de um sistema de arquivos após a modificação. Cada instantâneo
post
corresponde a um instantâneopre
. Por exemplo, ele é usado para instantâneos automáticos do YaST/Zypper.single
Instantâneo independente. Por exemplo, ele é usado para os instantâneos automáticos por hora. Esse é o tipo padrão quando se cria instantâneos.
10.6.1.2 Algoritmos de limpeza #
O Snapper oferece três algoritmos para limpeza de instantâneos antigos. Os algoritmos são executados em uma tarefa cron
diária. É possível definir o número de tipos diferentes de instantâneos para serem mantidos na configuração do Snapper (consulte a Seção 10.5.1, “Gerenciando configurações existentes” para obter detalhes).
- number
Apaga instantâneos antigos quando determinado número de instantâneos é atingido.
- timeline
Apaga os instantâneos antigos que passaram de uma determinada duração, mas mantém vários instantâneos por hora, dia, mês e ano.
- empty-pre-post
Apaga os pares de pré/pós-instantâneos com diffs vazias.
10.6.2 Criando instantâneos #
Para criar um instantâneo, execute o snapper create
ou clique em no módulo do YaST. Os exemplos a seguir explicam como criar instantâneos da linha de comando. A interface do YaST para o Snapper não está especificamente descrita aqui, mas oferece uma funcionalidade equivalente.
Especifique sempre uma descrição significativa para, no futuro, conseguir identificar sua finalidade. Você também pode especificar mais informações pela opção --userdata
.
snapper create --from 17 --description "with package2"
Cria um instantâneo independente (tipo único) com base em um instantâneo existente, que é especificado pelo número do instantâneo de
snapper list
. (Isso se aplica a partir da versão 0.8.4 do Snapper.)snapper create --description "Snapshot for week 2 2014"
Cria um instantâneo independente (tipo único) na configuração padrão (
root
) com uma descrição. Como nenhum algoritmo de limpeza foi especificado, o instantâneo nunca será apagado automaticamente.snapper --config home create --description "Cleanup in ~tux"
Cria um instantâneo independente (tipo único) em uma configuração personalizada chamada
home
com uma descrição. Como nenhum algoritmo de limpeza foi especificado, o instantâneo nunca será apagado automaticamente.snapper --config home create --description "Daily data backup" --cleanup-algorithm timeline
>Cria um instantâneo independente (tipo único) em uma configuração personalizada chamada
home
com uma descrição. O instantâneo é apagado automaticamente quando atende aos critérios especificados para o algoritmo de limpeza de linha do tempo na configuração.snapper create --type pre --print-number --description "Before the Apache config cleanup" --userdata "important=yes"
Cria um instantâneo do tipo
pre
e imprime o número do instantâneo. Primeiro comando necessário para criar um par de instantâneos usado para gravar o estado “antes” e “após. ” O instantâneo é marcado como importante.snapper create --type post --pre-number 30 --description "After the Apache config cleanup" --userdata "important=yes"
Cria um instantâneo do tipo
post
ligado a seu parpre
de número30
. Segundo comando necessário para criar um par de instantâneos usado para gravar o estado “antes” e “após. ” O instantâneo é marcado como importante.snapper create --command COMMAND --description "Before and after COMMAND"
Cria automaticamente um par de instantâneos antes e após a execução do COMMAND. Essa opção só está disponível ao usar o snapper na linha de comando.
10.6.3 Modificando os metadados do instantâneo #
O Snapper permite modificar a descrição, o algoritmo de limpeza e os dados do usuário de um instantâneo. Todos os outros metadados não podem ser mudados. Os exemplos a seguir explicam como modificar instantâneos da linha de comando. Eles são fáceis de adotar ao usar a interface do YaST.
Para modificar um instantâneo na linha de comando, você precisa saber o número dele. Use snapper list
para exibir todos os instantâneos e seus números.
O módulo
do YaST já lista todos os instantâneos. Escolha um na lista e clique em .snapper modify --cleanup-algorithm "timeline"
10Modifica os metadados do instantâneo 10 na configuração padrão (
root
). O algoritmo de limpeza é definido comotimeline
.snapper --config home modify --description "daily backup" -cleanup-algorithm "timeline" 120
Modifica os metadados do instantâneo 120 na configuração personalizada chamada
home
. Uma nova descrição é definida e o algoritmo de limpeza fica indefinido.
10.6.4 Apagando instantâneos #
Para apagar um instantâneo com o módulo
do YaST, escolha-o na lista e clique em .
Para apagar um instantâneo com a ferramenta de linha de comando, você precisa saber o número dele. Para saber, execute snapper list
. Para apagar um instantâneo, execute snapper delete
NUMBER.
Não é permitido apagar o instantâneo do subvolume padrão atual.
Ao apagar instantâneos com o Snapper, o espaço liberado é requerido pelo processo do Btrfs que está sendo executado em segundo plano. Portanto, há um atraso na visibilidade e disponibilidade do espaço livre. Se você precisar que o espaço liberado após apagar um instantâneo fique disponível imediatamente, use a opção --sync
com o comando delete (apagar).
Ao apagar um instantâneo pre
, sempre apague seu post
correspondente (e vice-versa).
snapper delete 65
Apaga o instantâneo 65 na configuração padrão (
root
).snapper -c home delete 89 90
Apaga os instantâneos 89 e 90 na configuração personalizada chamada
home
.snapper delete --sync 23
Apaga o instantâneo 23 da configuração padrão (
root
) e torna o espaço liberado disponível imediatamente.
Às vezes, o instantâneo do Btrfs está presente, mas o arquivo XML que contém os metadados do Snapper está ausente. Nesse caso, o instantâneo não fica visível para o Snapper e precisa se apagado manualmente:
btrfs subvolume delete /.snapshots/SNAPSHOTNUMBER/snapshot rm -rf /.snapshots/SNAPSHOTNUMBER
Se você apagar instantâneos para liberar espaço no disco rígido, apague primeiro os instantâneos antigos. Quanto mais antigo for o instantâneo, mais espaço em disco ele ocupa.
Os instantâneos também são automaticamente apagados por uma tarefa cron diária. Consulte a Seção 10.6.1.2, “Algoritmos de limpeza” para obter os detalhes.
10.7 Limpeza automática de instantâneos #
Os instantâneos ocupam espaço em disco e, ao longo do tempo, a quantidade de espaço em disco ocupado pelos instantâneos pode ficar grande. Para evitar que os discos fiquem sem espaço, o Snapper oferece algoritmos para apagar automaticamente os instantâneos antigos. Esses algoritmos diferenciam entre instantâneos de linha do tempo e numerados (pares de instantâneos de administração e instalação). Você pode especificar quantos instantâneos de cada tipo devem ser mantidos.
Além disso, você pode especificar uma cota de espaço em disco definindo a quantidade máxima de espaço em disco que os instantâneos podem ocupar. Também é possível apagar automaticamente pares de instantâneos pré e pós que não são diferentes.
Um algoritmo de limpeza está sempre associado a uma única configuração do Snapper, portanto, talvez seja necessário definir algoritmos para cada configuração. Para impedir que determinados instantâneos sejam automaticamente apagados, consulte Um instantâneo pode ser protegido contra exclusão? .
A configuração padrão (root
) é definida para limpar instantâneos numerados e esvaziar os pares pré-instantâneo e pós-instantâneo. O suporte a cotas está habilitado, os instantâneos não podem ocupar mais do que 50% do espaço em disco disponível da partição raiz. Por padrão, os instantâneos de linha do tempo estão desabilitados, portanto, o algoritmo de limpeza de linha do tempo também está desabilitado.
10.7.1 Limpando instantâneos numerados #
A limpeza de instantâneos numerados, pares de instantâneos de administração e de instalação, é controlada pelos seguintes parâmetros de uma configuração do Snapper.
NUMBER_CLEANUP
Habilita ou desabilita a limpeza de pares de instantâneos de instalação e admin. Se habilitado, os pares de instantâneos são apagados quando o número total de instantâneos exceder o número especificado com
NUMBER_LIMIT
e/ouNUMBER_LIMIT_IMPORTANT
e uma duração especificada comNUMBER_MIN_AGE
. Valores válidos:yes
(habilitar),no
(desabilitar).O valor padrão é
"yes"
.Exemplo de comando para mudar ou definir:
>
sudo
snapper -c CONFIG set-config "NUMBER_CLEANUP=no"NUMBER_LIMIT
/NUMBER_LIMIT_IMPORTANT
Define quantos pares de instantâneos de instalação e administração regulares e/ou importantes devem ser mantidos. Ignorado se
NUMBER_CLEANUP
for definido como"no"
.O valor padrão é
"2-10"
paraNUMBER_LIMIT
e"4-10"
paraNUMBER_LIMIT_IMPORTANT
. Os algoritmos de limpeza apagam os instantâneos acima do valor máximo especificado, sem levar em consideração o espaço do instantâneo e do sistema de arquivos. Os algoritmos também apagam os instantâneos acima do valor mínimo até que os limites do instantâneo e do sistema de arquivos sejam atingidos.Exemplo de comando para mudar ou definir:
>
sudo
snapper -c CONFIG set-config "NUMBER_LIMIT=10"Importante: Comparação entre valores de faixa e constantesSe o suporte a cotas estiver habilitado (consulte a Seção 10.7.5, “Adicionando suporte a cotas de disco”), o limite deverá ser especificado como uma faixa de mínimo-máximo, por exemplo,
2-10
. Se o suporte a cotas estiver desabilitado, um valor constante, como10
, deverá ser informado; do contrário, haverá falha na limpeza com um erro.NUMBER_MIN_AGE
Define a duração mínima em segundos do instantâneo antes de ser automaticamente apagado. Os instantâneos mais novos do que o valor especificado aqui não serão apagados, independentemente de quantos existirem.
O valor padrão é
"1800"
.Exemplo de comando para mudar ou definir:
>
sudo
snapper -c CONFIG set-config "NUMBER_MIN_AGE=864000"
NUMBER_LIMIT
, NUMBER_LIMIT_IMPORTANT
e NUMBER_MIN_AGE
sempre são avaliados. Os instantâneos são apagados apenas quando ocorrem todas as condições.
Para manter sempre o número de instantâneos definido com NUMBER_LIMIT*
, independentemente da duração deles, defina NUMBER_MIN_AGE
como 0
.
O exemplo a seguir mostra uma configuração para manter os 10 últimos instantâneos importantes e regulares, independentemente da data em que foram criados:
NUMBER_CLEANUP=yes NUMBER_LIMIT_IMPORTANT=10 NUMBER_LIMIT=10 NUMBER_MIN_AGE=0
Se você não quiser manter os instantâneos além de uma determinada duração, defina NUMBER_LIMIT*
como 0
e insira a duração com NUMBER_MIN_AGE
.
O exemplo a seguir mostra uma configuração para manter apenas instantâneos com menos de dez dias:
NUMBER_CLEANUP=yes NUMBER_LIMIT_IMPORTANT=0 NUMBER_LIMIT=0 NUMBER_MIN_AGE=864000
10.7.2 Limpando instantâneos de linha do tempo #
A limpeza de instantâneos de linha do tempo é controlada pelos seguintes parâmetros de uma configuração do Snapper.
TIMELINE_CLEANUP
Habilita ou desabilita a limpeza de instantâneos de linha do tempo. Se habilitado, os instantâneos serão apagados quando o número total exceder o número especificado com
TIMELINE_LIMIT_*
e a duração especificada comTIMELINE_MIN_AGE
. Valores válidos:yes
,no
.O valor padrão é
"yes"
.Exemplo de comando para mudar ou definir:
>
sudo
snapper -c CONFIG set-config "TIMELINE_CLEANUP=yes"TIMELINE_LIMIT_DAILY
,TIMELINE_LIMIT_HOURLY
,TIMELINE_LIMIT_MONTHLY
,TIMELINE_LIMIT_WEEKLY
,TIMELINE_LIMIT_YEARLY
Número de instantâneos para manter por hora, dia, mês, semana e ano.
O valor padrão de cada entrada é
"10"
, exceto paraTIMELINE_LIMIT_WEEKLY
que, por padrão, está definido como"0"
.TIMELINE_MIN_AGE
Define a duração mínima em segundos do instantâneo antes de ser automaticamente apagado.
O valor padrão é
"1800"
.
TIMELINE_CLEANUP="yes" TIMELINE_CREATE="yes" TIMELINE_LIMIT_DAILY="7" TIMELINE_LIMIT_HOURLY="24" TIMELINE_LIMIT_MONTHLY="12" TIMELINE_LIMIT_WEEKLY="4" TIMELINE_LIMIT_YEARLY="2" TIMELINE_MIN_AGE="1800"
Este exemplo de configuração habilita os instantâneos por hora, que são limpos automaticamente. TIMELINE_MIN_AGE
e TIMELINE_LIMIT_*
sempre são avaliados juntos. Neste exemplo, a duração mínima de um instantâneo, antes de ser apagado, está definida como 30 minutos (1800 segundos). Como nós criamos instantâneos por hora, isso garante que apenas os instantâneos mais recentes sejam mantidos. Se TIMELINE_LIMIT_DAILY
não estiver definido como zero, significa que o primeiro instantâneo do dia também será mantido.
Horário: os últimos 24 instantâneos que foram capturados.
Diariamente: o primeiro instantâneo diário que foi capturado é mantido para os últimos sete dias.
Mensal: o primeiro instantâneo capturado no último dia do mês é mantido para os últimos 20 meses.
Semanalmente: o primeiro instantâneo capturado no último dia da semana é mantido para as últimas quatro semanas.
Anualmente: o primeiro instantâneo capturado no último dia do ano é mantido para os últimos dois anos.
10.7.3 Limpando pares de instantâneos que não são diferentes #
Conforme explicado em Seção 10.1.2, “Tipos de instantâneos”, sempre que você executar um módulo do YaST ou o Zypper, um pré-instantâneo é criado na inicialização, e um pós-instantâneo é criado durante o encerramento. Se você não fez nenhuma mudança, não haverá diferença entre os instantâneos pré e pós. Esses tipos de pares de instantâneos “vazios” podem ser automaticamente apagados ao definir os seguintes parâmetros em uma configuração do Snapper:
EMPTY_PRE_POST_CLEANUP
Se definido como
yes
(sim), os pares de instantâneos pré e pós que forem iguais serão apagados.O valor padrão é
"yes"
.EMPTY_PRE_POST_MIN_AGE
Define a duração mínima, em segundos, do par de instantâneos pré e pós iguais antes de ser automaticamente apagado.
O valor padrão é
"1800"
.
10.7.4 Limpando instantâneos criados manualmente #
O Snapper não oferece algoritmos de limpeza personalizados para instantâneos criados manualmente. No entanto, você pode atribuir o algoritmo de limpeza de número ou linha do tempo a um instantâneo criado manualmente. Se você fizer isso, o instantâneo ingressará na “fila de limpeza” do algoritmo especificado. Você pode especificar um algoritmo de limpeza ao criar um instantâneo ou modificar um instantâneo existente:
snapper create --description "Test" --cleanup-algorithm number
Cria um instantâneo independente (tipo único) para a configuração padrão (raiz) e atribui o algoritmo de limpeza
number
.snapper modify --cleanup-algorithm "timeline" 25
Modifica o instantâneo com o número 25 e atribui o algoritmo de limpeza
timeline
.
10.7.5 Adicionando suporte a cotas de disco #
Além dos algoritmos de limpeza de número e/ou linha do tempo descritos anteriormente, o Snapper suporta cotas. Você pode definir a porcentagem de espaço disponível que os instantâneos podem ocupar. Esse valor percentual é sempre aplicado ao subvolume Btrfs definido na respectiva configuração do Snapper.
As cotas do Btrfs são aplicadas aos subvolumes, e não aos usuários. Você pode aplicar as cotas de espaço em disco a usuários e grupos (por exemplo, com o comando quota
), além de usar as cotas do Btrfs.
Se o Snapper foi habilitado durante a instalação, o suporte a cotas é automaticamente habilitado. Se você habilitar manualmente o Snapper em algum momento futuro, poderá habilitar o suporte a cotas executando snapper
setup-quota
. Isso exige uma configuração válida (consulte a Seção 10.5, “Criando e modificando as configurações do Snapper” para obter mais informações).
O suporte a cotas é controlado pelos seguintes parâmetros de uma configuração do Snapper.
QGROUP
O grupo de cotas Btrfs usado pelo Snapper. Se não foi definido, execute
snapper setup-quota
. Se já foi definido, apenas mude se você estiver familiarizado comman 8 btrfs-qgroup
. Esse valor é definido comsnapper setup-quota
e não deve ser mudado.SPACE_LIMIT
Limite de espaço que os instantâneos podem ocupar em frações de 1 (100%). Os valores válidos são de 0 a 1 (0,1 = 10%, 0,2 = 20%, etc.).
As seguintes diretrizes e limitações são aplicadas:
As cotas apenas são ativadas adicionalmente a um algoritmo de limpeza de número e/ou linha do tempo existente. Se nenhum algoritmo de limpeza estiver ativo, as restrições de cotas não serão aplicadas.
Com o suporte a cotas habilitado, o Snapper executa duas limpezas, se necessário. A primeira execução aplica-se às regras especificadas para os instantâneos de número e linha do tempo. Apenas se a cota for excedida após essa execução, as regras específicas da cota serão aplicadas em uma segunda execução.
Mesmo se o suporte a cotas estiver habilitado, o Snapper sempre manterá o número de instantâneos especificado com os valores
NUMBER_LIMIT*
eTIMELINE_LIMIT*
, até quando a cota for excedida. Portanto, é recomendável especificar valores de faixa (MIN-MAX
) paraNUMBER_LIMIT*
eTIMELINE_LIMIT*
para garantir que a cota seja aplicada.Por exemplo, se for definido
NUMBER_LIMIT=5-20
, o Snapper executará uma primeira limpeza e reduzirá o número de instantâneos numerados regulares para 20. Se esses 20 instantâneos excederem a cota, o Snapper apagará os mais antigos em uma segunda execução até que a cota seja atendida. Um mínimo de cinco instantâneos é sempre mantido, independentemente da quantidade de espaço que ocupam.
10.8 Mostrando o espaço em disco exclusivo usado pelos instantâneos #
Os instantâneos compartilham dados para uso eficiente do espaço de armazenamento, portanto, o uso de comandos comuns como du
e df
não medirá o espaço em disco usado com precisão. Para liberar espaço em disco no Btrfs com as cotas habilitadas, você precisa saber quanto espaço em disco exclusivo é usado por cada instantâneo, em vez do espaço compartilhado. A partir do Snapper 0.6, o espaço em disco usado é relatado para cada instantâneo na coluna Used Space
:
#
snapper--iso list
# | Type | Pre # | Date | User | Used Space | Cleanup | Description | Userdata
----+--------+-------+---------------------+------+------------+---------+-----------------------+--------------
0 | single | | | root | | | current |
1* | single | | 2019-07-22 13:08:38 | root | 16.00 KiB | | first root filesystem |
2 | single | | 2019-07-22 14:21:05 | root | 14.23 MiB | number | after installation | important=yes
3 | pre | | 2019-07-22 14:26:03 | root | 144.00 KiB | number | zypp(zypper) | important=no
4 | post | 3 | 2019-07-22 14:26:04 | root | 112.00 KiB | number | | important=no
5 | pre | | 2019-07-23 08:19:36 | root | 128.00 KiB | number | zypp(zypper) | important=no
6 | post | 5 | 2019-07-23 08:19:43 | root | 80.00 KiB | number | | important=no
7 | pre | | 2019-07-23 08:20:50 | root | 256.00 KiB | number | yast sw_single |
8 | pre | | 2019-07-23 08:23:22 | root | 112.00 KiB | number | zypp(ruby.ruby2.5) | important=no
9 | post | 8 | 2019-07-23 08:23:35 | root | 64.00 KiB | number | | important=no
10 | post | 7 | 2019-07-23 08:24:05 | root | 16.00 KiB | number | |
O comando btrfs
apresenta outra exibição do espaço usado pelos instantâneos:
#
btrfs qgroup show -p /
qgroupid rfer excl parent
-------- ---- ---- ------
0/5 16.00KiB 16.00KiB ---
[...]
0/272 3.09GiB 14.23MiB 1/0
0/273 3.11GiB 144.00KiB 1/0
0/274 3.11GiB 112.00KiB 1/0
0/275 3.11GiB 128.00KiB 1/0
0/276 3.11GiB 80.00KiB 1/0
0/277 3.11GiB 256.00KiB 1/0
0/278 3.11GiB 112.00KiB 1/0
0/279 3.12GiB 64.00KiB 1/0
0/280 3.12GiB 16.00KiB 1/0
1/0 3.33GiB 222.95MiB ---
A coluna qgroupid
exibe o número de identificação de cada subvolume, atribuindo uma combinação de nível/ID do qgroup.
A coluna rfer
exibe o volume total de dados mencionados no subvolume.
A coluna excl
exibe os dados exclusivos em cada subvolume.
A coluna parent
mostra o qgroup pai dos subvolumes.
O item final 1/0
mostra os totais para o qgroup pai. No exemplo acima, 222,95 MiB serão liberados se todos os subvolumes forem removidos. Execute o comando a seguir para ver os instantâneos que estão associados a cada subvolume:
#
btrfs subvolume list -st /
ID gen top level path
-- --- --------- ----
267 298 266 @/.snapshots/1/snapshot
272 159 266 @/.snapshots/2/snapshot
273 170 266 @/.snapshots/3/snapshot
274 171 266 @/.snapshots/4/snapshot
275 287 266 @/.snapshots/5/snapshot
276 288 266 @/.snapshots/6/snapshot
277 292 266 @/.snapshots/7/snapshot
278 296 266 @/.snapshots/8/snapshot
279 297 266 @/.snapshots/9/snapshot
280 298 266 @/.snapshots/10/snapshot
Um upgrade de um pacote de serviço para outro resulta em instantâneos que ocupam muito espaço em disco nos subvolumes do sistema. É recomendada a exclusão manual dos instantâneos quando eles não são mais necessários. Consulte a Seção 10.6.4, “Apagando instantâneos” para obter os detalhes.
10.9 Perguntas freqüentes #
- P:
Por que o Snapper nunca mostra as mudanças em
/var/log
,/tmp
e outros diretórios? Para determinados diretórios, decidimos excluí-los dos instantâneos. Consulte a Seção 10.1.3, “Diretórios que são excluídos dos instantâneos” para ver a lista e os motivos. Para excluir um caminho dos instantâneos, nós criamos um subvolume para esse caminho.
- P: Posso inicializar um instantâneo do carregador de boot?
Sim, veja os detalhes na Seção 10.3, “Rollback do sistema por inicialização de instantâneos”.
- P: Um instantâneo pode ser protegido contra exclusão?
Atualmente, o Snapper não oferece meios para evitar que um instantâneo seja apagado manualmente. No entanto, você pode impedir que os instantâneos sejam automaticamente apagados por algoritmos de limpeza. Os instantâneos criados manualmente (consulte a Seção 10.6.2, “Criando instantâneos”) não têm algoritmo de limpeza atribuído, a menos que você especifique um com
--cleanup-algorithm
. Os instantâneos criados automaticamente sempre têm o algoritmonumber
outimeline
atribuído. Para remover esse tipo de atribuição de um ou mais instantâneos, faça o seguinte:Liste todos os instantâneos disponíveis:
>
sudo
snapper list -aMemorize o número dos instantâneos que você não deseja que sejam apagados.
Execute o seguinte comando e substitua os marcadores de número pelos números que você memorizou:
>
sudo
snapper modify --cleanup-algorithm "" #1 #2 #nVerifique o resultado executando
snapper list -a
novamente. Agora, a entrada na colunaCleanup
deve estar vazia para os instantâneos que você modificou.
- P: Onde encontro mais informações sobre o Snapper?
Consulte a home page do Snapper em http://snapper.io/.