Aplica-se a SUSE Linux Enterprise Desktop 12

4 Recuperação de sistema e gerenciamento de instantâneos com o Snapper

Criar instantâneos do sistema de arquivos com a funcionalidade de fazer rollbacks no Linux era um recurso bastante solicitado no passado. O Snapper, em conjunto com o sistema de arquivos Btrfs ou os volumes LVM com aprovisionamento dinâmico, agora cumpre esse papel.

O Btrfs, um novo sistema de arquivos de gravação de cópia do Linux, suporta instantâneos de sistema de arquivos (uma cópia do estado de um subvolume em determinado ponto no tempo) de subvolumes (um ou mais sistemas de arquivos que podem ser montados separadamente em cada partição física). Os instantâneos também são suportados em volumes LVM com aprovisionamento dinâmico formatados com XFS, Ext4 ou Ext3. O Snapper permite criar e gerenciar esses instantâneos. Ele vem com uma linha de comando e uma interface do YaST. Desde o SUSE Linux Enterprise Server 12, também é possível inicializar de instantâneos Btrfs. Consulte a Seção 4.3, “Rollback do sistema por inicialização de instantâneos” para obter mais informações.

Usando o Snapper, é possível executar as seguintes tarefas:

4.1 Configuração padrão

O Snapper no SUSE Linux Enterprise Desktop foi configurado para atuar como uma ferramenta para desfazer e recuperar mudanças no sistema. Por padrão, a partição raiz (/) do SUSE Linux Enterprise Desktop está formatada com Btrfs. A captura de instantâneos será automaticamente habilitada se a partição raiz (/) for grande o suficiente (aproximadamente mais de 8 GB). A criação de instantâneos em partições diferentes de / não está habilitada por padrão.

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!

Nota
Nota: Local do instantâneo

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 os instantâneos precisam ser maiores que as partições normais. A quantidade exata depende bastante do número de instantâneos mantidos e da quantidade de modificações de dados. De acordo com a prática, convém usar o dobro do tamanho que seria usado normalmente.

Embora os próprios instantâneos não se diferenciem no sentido técnico, nós os distinguimos em três tipos, com base na ocasião em foram criados:

Tipos de instantâneos
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. Os instantâneos de linha do tempo estão habilitados por padrão, exceto para a partição 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.

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:

Diretórios que são excluídos dos instantâneos
/boot/grub2/x86_64-efi,

O rollback da configuração do carregador de boot não é suportado.

/home

Se /home não residir em uma partição separada, ele será excluído para evitar perda de dados nos rollbacks.

/opt, /var/opt

Geralmente, produtos de terceiros e complementos 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, /var/tmp, /var/crash

Todos os diretórios com arquivos temporários são excluídos dos instantâneos.

/var/lib/named

Contém dados da zona do servidor DNS. Excluído dos instantâneos para garantir que o servidor de nomes funcione após um rollback.

/var/lib/mailman, /var/spool

Diretórios com e-mails ou filas de e-mails são excluídos para evitar perda de e-mails após um rollback.

/var/lib/pgqsl

Contém dados do PostgreSQL.

/var/log

Localização do Arquivo de Registro. Excluído dos instantâneos para permitir a análise do arquivo de registro após o rollback de um sistema com defeito.

4.1.1 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.

4.1.1.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"

Os instantâneos de linha do tempo estão habilitados por padrão, exceto para a partição 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 como yes em /etc/sysconfig/yast2.

Desabilitar:  Defina USE_SNAPPER como no em /etc/sysconfig/yast2.

Instantâneos de administração são habilitados, por padrão.

4.1.1.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. O 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>

1

O atributo de correspondência define se o padrão é um curinga no estilo shell do Unix (w) ou uma expressão regular Python (re).

2

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.

3

Padrão de correspondência com o nome de um pacote. Com base na configuração do atributo match, caracteres especiais são interpretados como curingas do shell ou expressões regulares. Este padrão corresponde todos os nomes de pacotes que começam com kernel-.

4

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>

4.1.1.3 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 de sistema, os instantâneos antigos são apagados automaticamente. Por padrão, os seguintes instantâneos são mantidos:

  • o primeiro instantâneo dos últimos dez dias, meses e anos

  • os últimos dez pares de instantâneos de instalação marcados como importantes

  • os últimos dez instantâneos de instalação/administração

Consulte a Seção 4.4.1, “Gerenciando configurações existentes” para ver instruções sobre como mudar os valores.

4.1.1.4 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 a Section “LVM Configuration”, Chapter 12, Advanced Disk Setup, Deployment Guide.

Para usar o Snapper em um volume LVM com aprovisionamento dinâmico, crie para ele uma configuração do Snapper. No LVM, é necessário especificar o sistema de arquivos com --fstype=lvm(SISTEMADEARQUIVOS). ext3, etx4 ou xfs são valores válidos para SISTEMADEARQUIVOS. Exemplo:

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 4.4.1, “Gerenciando configurações existentes”.

4.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 4.1.1.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.

Importante
Importante: Desfazendo mudanças X rollback

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 4.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 4.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.

Atenção
Atenção: Consistência de dados

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 com defeito ou parcialmente gravado. A restauração desse arquivo causa problemas. Além disso, alguns 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.

4.2.1 Desfazendo mudanças do YaST e Zypper

Se você configurar a partição raiz com o Btrfs durante a instalação, o Snapper, pré-configurado para fazer rollbacks 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).

Procedimento 4.1 Desfazendo mudanças usando o módulo Snapper do YaST
  1. Inicie o módulo Snapper pela seção Diversos no YaST ou digitando yast2 snapper.

  2. Confirme se a Configuração Atual está definida como root. Esse é sempre o caso, a não ser que você tenha adicionado manualmente configurações personalizadas do Snapper.

  3. 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 Pré e Pós. Os instantâneos do YaST são denominados zypp(y2base) na coluna Descrição; os instantâneos do Zypper são denominados zypp(zypper).

  4. Clique em Mostrar Mudanças para abrir a lista de arquivos que são diferentes entre os dois instantâneos.

  5. 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.

  6. Para restaurar um ou mais arquivos, selecione os arquivos ou diretórios relevantes marcando a respectiva caixa de seleção. Clique em Restaurar Selecionados e clique em Sim para confirmar a ação.

    Para restaurar um único arquivo, ative sua tela de comparação clicando em seu nome. Clique em Restaurar a partir do Primeiro e clique em Sim para confirmar sua seleção.

Procedimento 4.2 Desfazendo mudanças usando o comando snapper
  1. 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 denominados yast nome_do_módulo na coluna Descrição; os instantâneos do Zypper são denominados zypp(zypper).

    
    
    
    root # snapper list -t pre-post
    Pre # | Post # | Pre Date                      | Post Date                     | Description  
    ------+--------+-------------------------------+-------------------------------+--------------
    311   | 312    | Tue 06 May 2014 14:05:46 CEST | Tue 06 May 2014 14:05:52 CEST | zypp(y2base) 
    340   | 341    | Wed 07 May 2014 16:15:10 CEST | Wed 07 May 2014 16:15:16 CEST | zypp(zypper) 
    342   | 343    | Wed 07 May 2014 16:20:38 CEST | Wed 07 May 2014 16:20:42 CEST | zypp(y2base) 
    344   | 345    | Wed 07 May 2014 16:21:23 CEST | Wed 07 May 2014 16:21:24 CEST | zypp(zypper) 
    346   | 347    | Wed 07 May 2014 16:41:06 CEST | Wed 07 May 2014 16:41:10 CEST | zypp(y2base) 
    348   | 349    | Wed 07 May 2014 16:44:50 CEST | Wed 07 May 2014 16:44:53 CEST | zypp(y2base) 
    350   | 351    | Wed 07 May 2014 16:46:27 CEST | Wed 07 May 2014 16:46:38 CEST | zypp(y2base) 
  2. Obtenha uma lista dos arquivos modificados de um par de instantâneos com snapper status PRÉ..PÓS. Os arquivos com mudanças de conteúdo são marcados com c, os arquivos que foram adicionados são marcados com + e os arquivos apagados são marcados com -.

    root # 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/Sigmd5
  3. Para exibir a diff de determinado arquivo, execute snapper diff PRÉ..PÓS NOMEDOARQUIVO. Se você não especificar NOMEDOARQUIVO, será exibida a diff de todos os arquivos.

    root # 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
    [...]
  4. Para restaurar um ou mais arquivos, execute snapper -v undochange PRÉ..PÓS NOMESDOSARQUIVOS. Se você não especificar os NOMESDOSARQUIVOS, todos os arquivos serão restaurados.

    root # 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
Atenção
Atenção: Revertendo adições de usuário

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 Gerenciamento de Usuários e Grupos do YaST para remover usuários.

4.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 determinado momento.

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 para criar instantâneos de linha do tempo automáticos. Consulte a Seção 4.4, “Criando e modificando as configurações do Snapper” para obter instruções.

Atenção
Atenção: Restauração de arquivos X rollback

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 4.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!

Procedimento 4.3 Restaurando arquivos usando o módulo Snapper do YaST
  1. Inicie o módulo Snapper pela seção Diversos no YaST ou digitando yast2 snapper.

  2. Selecione a Configuração Atual da qual escolher o instantâneo.

  3. Selecione o instantâneo de linha do tempo do qual restaurar o arquivo e escolha Mostrar Mudanças. Os instantâneos de linha do tempo são do tipo Único, com um valor descritivo de linha do tempo.

  4. 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.

  5. Clique em Restaurar Selecionados e clique em Sim para confirmar a ação.

Procedimento 4.4 Restaurando arquivos usando o comando snapper
  1. Obtenha a lista de instantâneos de linha do tempo para determinada configuração executando o seguinte comando:

    snapper -c CONFIG list -t single | grep timeline

    CONFIG precisa ser substituído pela configuração existente do Snapper. Use snapper list-configs para exibir uma lista.

  2. Obtenha a lista de arquivos modificados de determinado instantâneo executando o seguinte comando:

    snapper -c CONFIG status SNAPSHOT_ID>..0

    Substitua ID_DO_INSTANTÂNEO pelo ID do instantâneo do qual deseja restaurar o(s) arquivo(s).

  3. Se preferir, liste as diferenças entre a versão do arquivo atual e a versão do instantâneo executando

    snapper -c CONFIG diff SNAPSHOT_ID..0 FILE NAME

    Se você não especificar <NOME DE ARQUIVO>, será mostrada a diferença de todos os arquivos.

  4. Para restaurar um ou mais arquivos, execute

    snapper -c CONFIG -v undochange
          SNAPSHOT_ID..0 FILENAME1 FILENAME2

    Se você não especificar nomes de arquivos, todos os arquivos mudados serão restaurados.

4.3 Rollback do sistema por inicialização de instantâneos

A versão GRUB 2 incluída no SUSE Linux Enterprise Desktop é capaz de inicializar de instantâneos Btrfs. Juntamente com o recurso de rollback do Snapper, ela permite recuperar um sistema mal configurado. Todos os instantâneos criados pelo Snapper estão disponíveis para inicialização e podem ser selecionados no menu de boot.

Importante
Importante: Instantâneos inicializáveis

Apenas os instantâneos do sistema de arquivos raiz (definido na configuração raiz do Snapper) são inicializáveis.

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.

Importante
Importante: Desfazendo mudanças X rollback

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 4.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.

Requisitos para rollback de um instantâneo inicializável
  • 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 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:

  1. Inicialize o sistema. No menu de boot, escolha Bootable snapshots (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.

  2. Efetue login no sistema. Verifique com atenção se tudo funciona conforme esperado. Observe que você não poderá 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.

  3. Dependendo se você deseja ou não fazer rollback, escolha a próxima etapa:

    1. Se o sistema estiver em um estado no qual você não deseja fazer rollback, reinicialize para inicializar no estado atual do sistema, escolher um instantâneo diferente ou iniciar o sistema de recuperação.

    2. Para fazer o rollback, execute

      sudo snapper rollback

      e reinicialize na sequência. Na tela de boot, escolha a entrada de boot padrão para reinicializar no sistema restaurado.

4.3.1 Limitações

O rollback do sistema completo, restauração do sistema completo exatamente para o mesmo estado em que estava quando o instantâneo foi criado, não é possível.

4.3.1.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 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 o 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.

4.3.1.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.

4.4 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. Estes arquivos de configuração residem em /etc/snapper/configs/. A configuração padrão instalada com o Snapper para o diretório / é denominada root. Ela cria e gerencia os instantâneos do YaST e do Zypper, além do instantâneo de backup por hora do /.

É 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 Snapper do YaST para restaurar arquivos desses instantâneos. No YaST, você precisa selecionar a Configuração Atual 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:

snapper -c www-data1 create-config /srv/www2

1

Nome do arquivo de configuração.

2

Ponto de montagem da partição ou subvolume Btrfs no qual criar instantâneos.

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 4.4.1, “Gerenciando configurações existentes” para obter instruções de como ajustar os padrões.

Dica
Dica: Padrões de configuração

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:

snapper -c www-data create-config -t my_defaults /srv/www

4.4.1 Gerenciando configurações existentes

O snapper oferece vários subcomandos para gerenciar configurações existentes. É possível listar, mostrar, apagar e modificá-las:

Listar Configurações

Use o comando snapper list-configs para obter todas as configurações existentes:

root # snapper list-configs
Config | Subvolume
-------+----------
root   | /        
usr    | /usr     
local  | /local
Apagar uma Configuração

Use o subcomando snapper -c CONFIG delete-config para apagar uma configuração. Config deve ser substituído pelo nome da configuração mostrado pelo snapper list-configs.

Mostrar uma Configuração

Use o subcomando snapper -c CONFIG get-config para exibir a configuração especificada. Config deve ser substituído pelo nome da configuração mostrado pelo snapper list-configs. Consulte a Seção 4.4.1.1, “Dados de configuração” para obter mais informações sobre opções de configuração.

Use o subcomando snapper -c CONFIG set-config OPÇÃO=VALOR para modificar uma opção na configuração especificada. Config deve ser substituído pelo nome da configuração mostrado pelo snapper list-configs. Os valores possíveis para OPÇÃO e VALOR estão listados na Seção 4.4.1.1, “Dados de configuração”.

4.4.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:

ALLOW_GROUPS, ALLOW_USERS

Conceder permissões para usar instantâneos a usuários regulares. Consulte a Seção 4.4.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" (sim).

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 é "no" (não).

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".

FSTYPE

Tipo de sistema de arquivos da partição. Não alterar.

O valor padrão é "btrfs".

NUMBER_CLEANUP

Define se é para apagar automaticamente os pares de instantâneos de instalação e administração antigos quando o total de instantâneos exceder o número especificado com NUMBER_LIMIT e a duração especificada com NUMBER_MIN_AGE. Valores válidos: yes, no

O valor padrão é "no".

Nota
Nota: Limite e duração

NUMBER_LIMIT, NUMBER_LIMIT_IMPORTANT e NUMBER_MIN_AGE são sempre avaliados. Os instantâneos são apagados apenas quando ocorrem todas as condições. Para sempre manter determinado número de instantâneos independentemente de sua duração, defina NUMBER_MIN_AGE como 0. Por outro lado, para não manter os instantâneos após certa duração, defina NUMBER_LIMIT e NUMBER_LIMIT_IMPORTANT como 0.

NUMBER_LIMIT

Define quantos pares de instantâneos de instalação e administração não marcados como importantes manter se NUMBER_CLEANUP estiver definido como yes. Apenas os instantâneos mais recentes são mantidos.

O valor padrão é "50".

NUMBER_LIMIT_IMPORTANT

Define quantos pares de instantâneos marcados como importantes manter se NUMBER_CLEANUP estiver definido como yes. Apenas os instantâneos mais recentes são mantidos.

O valor padrão é "10".

NUMBER_MIN_AGE

Define a duração mínima, em segundos, do par de instantâneos antes de ser automaticamente apagado.

O valor padrão é "1800".

SUBVOLUME

Ponto de montagem da partição ou do subvolume para o instantâneo. Não alterar.

SYNC_ACL

Se o Snapper for utilizado por usuários regulares (consulte a Seção 4.4.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 como yes, 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_CLEANUP

Define se é para apagar automaticamente os instantâneos antigos quando a quantidade exceder o número especificado com as opções TIMELINE_LIMIT_* e a duração especificada com TIMELINE_MIN_AGE. Valores válidos: yes, no

O valor padrão é "no".

TIMELINE_CREATE

Se definido como yes, serão criados instantâneos por hora. No momento, esta é a única forma de criar instantâneos automaticamente, portanto, é altamente recomendável defini-lo como yes. Valores válidos: yes, no

O valor padrão é "no".

TIMELINE_LIMIT_DAILY, TIMELINE_LIMIT_HOURLY, TIMELINE_LIMIT_MONTHLY, TIMELINE_LIMIT_YEARLY

Número de instantâneos para manter por hora, dia, mês, ano.

O valor padrão de cada entrada é "10".

Exemplo 4.1 Exemplo de configuração de linha do tempo
TIMELINE_CLEANUP="yes"
TIMELINE_CREATE="yes"
TIMELINE_LIMIT_DAILY="10"
TIMELINE_LIMIT_HOURLY="10"
TIMELINE_LIMIT_MONTHLY="10"
TIMELINE_LIMIT_YEARLY="10"
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_* são sempre 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.

Instantâneos para manter
  • De hora em hora: Os últimos dez instantâneos que foram criados.

  • Diariamente: O primeiro instantâneo diário criado é mantido para os últimos dez dias.

  • Mensalmente: O primeiro instantâneo criado no último dia do mês é mantido para os últimos dez meses.

  • Anualmente: O primeiro instantâneo criado no último dia do ano é mantido para os últimos dez anos.

TIMELINE_MIN_AGE

Define a duração mínima em segundos do instantâneo antes de ser automaticamente apagado.

O valor padrão é "1800".

4.4.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 criar instantâneo de seu diretório pessoal

Para essas finalidades, é possível criar configurações do Snapper que concedam permissões a usuários 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.

Procedimento 4.5 Habilitando usuários comuns a usar o Snapper

Observe que todas as etapas deste procedimento devem ser executadas pelo root.

  1. Se não houver um, crie uma configuração do Snapper para a partição ou o subvolume em que o usuário consiga utilizar o Snapper. Consulte a Seção 4.4, “Criando e modificando as configurações do Snapper” para obter instruções. Exemplo:

    snapper --config web_data create /srv/www
  2. O 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. Consulte a Seção 4.4.1, “Gerenciando configurações existentes” para obter os detalhes.

  3. Defina os valores de ALLOW_USERS e ALLOW_GROUPS para conceder permissões a usuários e grupos, respectivamente. Separe várias entradas com Space. Para conceder permissões ao usuário www_admin, por exemplo, execute:

    snapper -c web_data set-config "ALLOW_USERS=www_admin" SYNC_ACL="yes"
  4. 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

4.5 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 4.4, “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 Configuração Atual no YaST ou especifique -c na linha de comando (snapper -c MINHACONFIG COMANDO).

4.5.1 Metadados de instantâneos

Cada instantâneo consiste no próprio instantâneo e em alguns 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. Os seguintes metadados estão disponíveis para cada instantâneo:

  • Tipo: Tipo do instantâneo, consulte a Seção 4.5.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: A 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 4.5.1.2, “Algoritmos de limpeza” para obter os detalhes.

4.5.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 tem o seu post correspondente. Usado para os instantâneos automáticos do YaST/Zypper, por exemplo.

post

Instantâneo de um sistema de arquivos após a modificação. Cada instantâneo post tem o seu pre correspondente. Usado para os instantâneos automáticos do YaST/Zypper, por exemplo.

single

Instantâneo independente. Usado, por exemplo, para os instantâneos automáticos por hora. Esse é o tipo padrão quando se cria instantâneos.

4.5.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. A frequência de limpeza é definida na configuração do Snapper para a partição ou o subvolume (consulte a Seção 4.4.1, “Gerenciando configurações existentes” para obter os detalhes).

number

Apaga instantâneos antigos quando determinado número de instantâneos é atingido.

timeline

Apaga instantâneos antigos que passaram de certa duração, mas mantém um número de instantâneos por hora, dia, mês e ano.

empty-pre-post

Apaga os pares de pré/pós-instantâneos com diffs vazias.

4.5.2 Criando instantâneos

A criação do instantâneo é feita executando o comando snapper create ou clicando em Criar no módulo Snapper do YaST. Os exemplos a seguir explicam como criar instantâneos da linha de comando. Eles são fáceis de adotar ao usar a interface do YaST.

Dica
Dica: Descrição do instantâneo

Especifique sempre uma descrição significativa para no futuro conseguir identificar sua finalidade. É possível especificar ainda mais informações na opção de dados do usuário.

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 arquivo é apagado automaticamente quando atende aos critérios especificados no algoritmo de limpeza de linha do tempo da 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 par pre de número 30. 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 COMANDO--description "Before and after COMANDO"

Cria automaticamente um par de instantâneos antes e após a execução do COMANDO. Essa opção só está disponível ao usar o snapper na linha de comando.

4.5.3 Modificando os metadados do instantâneo

O Snapper permite modificar a descrição, o algoritmo de limpeza e os dados de 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 Snapper do YaST já lista todos os instantâneos. Escolha um na lista e clique em Modificar.

snapper modify --cleanup-algorithm "timeline" 10

Modifica os metadados do instantâneo 10 na configuração padrão (root). O algoritmo de limpeza é definido como timeline.

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.

4.5.4 Apagando instantâneos

Para apagar um instantâneo com o módulo Snapper do YaST, escolha-o na lista e clique em Apagar.

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 NÚMERO.

Dica
Dica: Apagando pares de instantâneos

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.

Dica
Dica: Apagar instantâneo sem referência

Às vezes, o instantâneo btrfs está presente, mas não o arquivo xml do snapper com os metadados. Portanto, para o snapper, o instantâneo não existe. Você precisa primeiro apagar o subvolume btrfs para poder apagar o diretório NÚMERO_DO_INSTANTÂNEO:

btrfs subvolume delete /.snapshots/SNAPSHOTNUMBER/snapshot
    rm -rf /.snapshots/SNAPSHOTNUMBER
    
Dica
Dica: Instantâneos antigos ocupam mais espaço em disco

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 4.5.1.2, “Algoritmos de limpeza” para obter os detalhes.

4.6 Perguntas mais frequentes

Por que o Snapper nunca mostra as mudanças em /var/log, /tmp e em outros diretórios?

Para alguns diretórios, nós decidimos excluí-los dos instantâneos. Consulte 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.

Quanto espaço no disco está sendo usado por instantâneos? Como liberar espaço no disco?

Como o df não mostra a utilização do disco correta nos sistemas de arquivos Btrfs, você precisa usar o comando btrfs filesystem df PONTO_DE_MONTAGEM. A exibição da quantidade de espaço em disco alocada por um instantâneo não é suportada pelas ferramentas do Btrfs.

Para liberar espaço em uma partição do Btrfs com instantâneos, é preciso apagar instantâneos desnecessários, e não arquivos. Os instantâneos antigos ocupam mais espaço do que os novos. Consulte a Seção 4.1.1.3, “Controlando o armazenamento de instantâneos” para obter os detalhes.

O upgrade de um service pack para outro resulta em instantâneos que ocupam muito espaço em disco nos subvolumes do sistema, porque muitos dados são modificados (atualizações de pacotes). É recomendada a exclusão manual dos instantâneos quando eles não são mais necessários. Consulte a Seção 4.5.4, “Apagando instantâneos” para obter os detalhes.

Posso inicializar um instantâneo do carregador de boot?

Sim, veja os detalhes na Seção 4.3, “Rollback do sistema por inicialização de instantâneos”.

Onde encontro mais informações sobre o Snapper?

Consulte a home page do Snapper em http://snapper.io/.

Imprimir esta página