Sumário
Resumo
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). O Snapper permite gerenciar esses instantâneos. O Snapper vem com uma linha de comando e uma interface do YaST.
Por padrão, o Snapper e o Btrfs no SUSE Linux Enterprise Desktop são configurados para atuar como uma “ferramenta de desfazer” mudanças no sistema realizadas com o YaST e o zypper. Antes e após a execução de um módulo do YaST ou do zypper, um instantâneo é criado. O Snapper permite comparar os dois instantâneos e dispõe de meios para reverter as diferenças entre ambos. As ferramentas também oferecem backups do sistema criando instantâneos a cada hora dos subvolumes do sistema.
Como o Btrfs é o único sistema de arquivos no SUSE Linux Enterprise Desktop que suporta instantâneos, ele é necessário em todas as partições ou subvolumes dos quais você deseja criar “instantâneos”.
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!
![]() | Local do instantâneo |
|---|---|
Os instantâneos residem sempre na mesma partição ou subvolume do qual foi “criado o instantâneo”. 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.
![]() | Liberando espaço/utilização do disco |
|---|---|
Para liberar espaço em uma partição do
Como o df não mostra a utilização do disco correta nos sistemas de arquivos 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 desses instantâneos quando eles não são mais necessários. | |
O Snapper também pode ser usado para criar e gerenciar instantâneos em volumes LVM com aprovisionamento dinâmico formatados com ext3 ou XFS (consulte a Seção 4.6, “Usando o Snapper em volumes LVM com aprovisionamento dinâmico”).
O Snapper no SUSE Linux Enterprise Desktop vem pré-configurado para atuar como uma ferramenta que permite desfazer mudanças realizadas pelo zypper e pelo YaST. Para essa finalidade, o Snapper foi configurado para criar um par de instantâneos antes e após cada execução do zypper e do YaST. O Snapper permite também restaurar arquivos do sistema que foram acidentalmente apagados ou modificados. Backups são criados de hora em hora para essa finalidade.
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.
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. Toda vez que você iniciar um módulo do YaST ou uma transação do zypper, serão criados dois instantâneos: um “pré-instantâneo” para captura do 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 modificações realizadas 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).
Como o Linux é um sistema multitarefa, processos diferentes do YaST ou do zypper podem modificar os dados no período entre o pré e o pós-instantâneo. Se esse for o caso, a reversão completa para o pré-instantâneo vai desfazer também as mudanças realizadas por outros processos. Na maioria dos casos, isso seria indesejado; no entanto, é altamente recomendável para revisar detalhadamente as mudanças entre os dois instantâneos antes de iniciar o rollback. Se houver mudanças de outros processos para manter, selecione os arquivos para voltar.
![]() | Limitações |
|---|---|
Você deve conhecer as limitações do Snapper antes de tentar usar seu mecanismo de rollback. Consulte a Seção 4.4, “Limitações” para obter os detalhes. | |
![]() | Tempo de armazenamento de instantâneos |
|---|---|
Por padrão, os últimos 100 instantâneos do YaST e do zypper são mantidos. Se esse número for excedido, o(s) instantâneo(s) mais antigo(s) será(ão) apagado(s). | |
Procedimento 4.1. Desfazendo mudanças usando o módulo do YaST¶
Inicie o módulo da seção no YaST ou digitando o comando yast2 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 denominados yast na ; os instantâneos do zypper são denominados nome_do_módulozypp (zypper).
![]() |
Clique em para abrir a lista de arquivos que são diferentes entre os dois instantâneos. A imagem a seguir mostra uma lista dos arquivos que foram modificados após adicionarem o testador do usuário.
![]() |
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. As imagens a seguir mostram as mudanças em /etc/passwd após a adição do testador do usuário.
![]() |
Para restaurar um conjunto de 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 diff clicando em seu nome. Clique em e clique em para confirmar sua seleção.
Procedimento 4.2. Desfazendo mudanças usando o comando 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 denominados yast na ; os instantâneos do zypper são denominados nome_do_módulozypp (zypper).
~ # snapper list -t pre-post
Pre # | Post # | Pre Date | Post Date | Description
------+--------+--------------------------+--------------------------+----------------------+
4 | 5 | Tue Jan 10 14:39:14 2012 | Tue Jan 10 14:39:33 2012 | yast system_settings
65 | 66 | Thu Jan 12 17:18:10 2012 | Thu Jan 12 17:18:23 2012 | zypp(zypper)
68 | 69 | Thu Jan 12 17:25:46 2012 | Thu Jan 12 17:27:09 2012 | zypp(zypper)
73 | 74 | Thu Jan 12 17:32:55 2012 | Thu Jan 12 17:33:13 2012 | yast system_settings
75 | 76 | Thu Jan 12 17:33:56 2012 | Thu Jan 12 17:34:42 2012 | yast users
77 | 92 | Thu Jan 12 17:38:36 2012 | Thu Jan 12 23:13:13 2012 | yast snapper
83 | 84 | Thu Jan 12 22:10:33 2012 | Thu Jan 12 22:10:39 2012 | zypp(zypper)
85 | 86 | Thu Jan 12 22:16:58 2012 | Thu Jan 12 22:17:09 2012 | zypp(zypper)
88 | 89 | Thu Jan 12 23:10:42 2012 | Thu Jan 12 23:10:46 2012 | zypp(zypper)
90 | 91 | Thu Jan 12 23:11:40 2012 | Thu Jan 12 23:11:42 2012 | zypp(zypper)
108 | 109 | Fri Jan 13 13:01:06 2012 | Fri Jan 13 13:01:10 2012 | zypp(zypper)
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 , os arquivos que foram adicionados são marcados com e os arquivos apagados são marcados com . O exemplo a seguir mostra o par de instantâneos da instalação do pacote ncftp.
~ # snapper status 108..109
+... /usr/bin/ncftp
+... /usr/bin/ncftpbatch
+... /usr/bin/ncftpget
+... /usr/bin/ncftpls
[...]
+... /usr/share/man/man1/ncftpspooler.1.gz
c... /var/cache/zypp/solv/@System/cookie
c... /var/cache/zypp/solv/@System/solv
c... /var/lib/rpm/Basenames
c... /var/lib/rpm/Dirnames
c... /var/lib/rpm/Filemd5s
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/Provideversion
c... /var/lib/rpm/Requirename
c... /var/lib/rpm/Requireversion
c... /var/lib/rpm/Sha1header
c... /var/lib/rpm/Sigmd5
c... /var/lib/zypp/SoftLocks
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.
~ # snapper diff 108..109 /var/lib/zypp/SoftLocks
--- /.snapshots/108/snapshot/var/lib/zypp/SoftLocks 2012-01-12 23:15:22.408009164 +0100
+++ /.snapshots/109/snapshot/var/lib/zypp/SoftLocks 2012-01-13 13:01:08.724009131 +0100
@@ -1,4 +1,2 @@
-# zypp::SoftLocksFile generated Thu Jan 12 23:10:46 2012
-#
-ncftp
-#
+# zypp::SoftLocksFile generated Fri Jan 13 13:01:08 2012
+##
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.
~ # snapper -v undochange 108..109
create:0 modify:16 delete:21
undoing change...
deleting /usr/share/man/man1/ncftpspooler.1.gz
deleting /usr/share/man/man1/ncftpput.1.gz
[...]
deleting /usr/bin/ncftpls
deleting /usr/bin/ncftpget
deleting /usr/bin/ncftpbatch
deleting /usr/bin/ncftp
modifying /var/cache/zypp/solv/@System/cookie
modifying /var/cache/zypp/solv/@System/solv
modifying /var/lib/rpm/Basenames
modifying /var/lib/rpm/Dirnames
modifying /var/lib/rpm/Filemd5s
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/Provideversion
modifying /var/lib/rpm/Requirename
modifying /var/lib/rpm/Requireversion
modifying /var/lib/rpm/Sha1header
modifying /var/lib/rpm/Sigmd5
modifying /var/lib/zypp/SoftLocks
undoing change done
Além dos instantâneos do YaST e do zypper, o Snapper cria instantâneos a cada hora da partição do sistema (/). É possível usar os instantâneos do backup para restaurar arquivos apagados ou modificados por engano sem meios de recuperação. Usando o recurso diff do Snapper, é possível também descobrir quais modificações foram feitas em determinado momento.
Os instantâneos do backup por hora são do tipo Single e estão marcados com a descrição timeline. Para restaurar os arquivos desses instantâneos conforme descrito em Procedimento 4.1, “Desfazendo mudanças usando o módulo do YaST” ou Procedimento 4.2, “Desfazendo mudanças usando o comando snapper”.
![]() | Tempo de armazenamento de instantâneos |
|---|---|
Por padrão, o primeiro instantâneo dos últimos dez dias, meses e anos são mantidos. Para saber os detalhes, consulte Exemplo 4.1, “Exemplo de configuração de linha do tempo”. | |
O comportamento do Snapper é definido em um arquivo de configuração específico de cada partição ou subvolume Btrfs. Esses arquivos de configuração residem em /etc/snapper/configs/. A configuração padrão instalada com o Snapper do diretório / é chamada root. Ela cria e gerencia os instantâneos do YaST e do zypper e também o instantâneo do 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.
É 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 sua ao especificar sua configuração para o snapper com o switch global -c (ex. snapper -c myconfig list).
Para criar uma nova configuração do Snapper, execute snapper create-config:
snapper -c www-datacreate-config /srv/www
Nome do arquivo de configuração. | |
Ponto de montagem da partição ou do subvolume |
Esse comando cria um novo arquivo de configuração /etc/snapper/config-templates/www-data com valores padrão razoáveis (obtidos de /etc/snapper/config-templates/default).
![]() | Padrões de configuração |
|---|---|
Os valores padrão de uma nova configuração são obtidos de snapper -c www-data create-config -t my_defaults /srv/www | |
Para ajustar o arquivo de configuração, modifique-o com um editor. Ele inclui os pares de chave/valor no formato de . Só é possível mudar o chave=valorvalor.
SUBVOLUME
Ponto de montagem da partição ou do subvolume para o instantâneo. Não alterar.
FSTYPE
Tipo de sistema de arquivos da partição. Não alterar.
NUMBER_CLEANUP
Define se é para apagar automaticamente os instantâneos antigos quando a quantidade total exceder o número especificado com NUMBER_LIMIT e a duração especificada com NUMBER_MIN_AGE. Valores válidos: yes, no
![]() | Limite e duração |
|---|---|
| |
NUMBER_LIMIT
Define quantos instantâneos manter quando NUMBER_CLEANUP está definido como yes.
NUMBER_MIN_AGE
Define a duração mínima em segundos do instantâneo antes de ser automaticamente apagado.
TIMELINE_CREATE
Se definido como yes, serão criados instantâneos de hora em hora. Essa é a única forma de criar automaticamente os instantâneos, embora seja altamente recomendável defini-lo como yes. Valores válidos: yes, no
TIMELINE_CLEANUP
Define se é para apagar automaticamente os instantâneos antigos quando a quantidade exceder o número especificado com as opções e a duração especificada com TIMELINE_LIMIT_*TIMELINE_MIN_AGE. Valores válidos: yes, no
TIMELINE_MIN_AGE
Define a duração mínima em segundos do instantâneo antes de ser automaticamente apagado.
TIMELINE_LIMIT_HOURLY, TIMELINE_LIMIT_DAILY, TIMELINE_LIMIT_MONTHLY, TIMELINE_LIMIT_YEARLY
Número de instantâneos para manter por hora, dia, mês, ano.
Exemplo 4.1. Exemplo de configuração de linha do tempo¶
TIMELINE_CREATE="yes"
TIMELINE_CLEANUP="yes"
TIMELINE_MIN_AGE="1800"
TIMELINE_LIMIT_HOURLY="10"
TIMELINE_LIMIT_DAILY="10"
TIMELINE_LIMIT_MONTHLY="10"
TIMELINE_LIMIT_YEARLY="10"
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.
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:
um administrador de site na Web deseja criar um instantâneo de /srv/www.
um administrador de banco de dados deseja criar um instantâneo dos bancos de dados.
um usuário deseja criar um 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. Além da mudança nessa configuração, os usuários especificados devem conseguir ler e acessar o diretório .snapshots correspondente.
Procedimento 4.3. Habilitando usuários comuns a usar o Snapper
Observe que todas as etapas deste procedimento devem ser executadas pelo root.
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.2.3, “Criando e modificando as configurações do Snapper” para obter instruções. Exemplo:
snapper --config web_data create /srv/www
O arquivo de configuração é criado em /etc/snapper/configs/, em que NOME é o valor que você especificou com NOME-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.2.3.1, “Ajustando o arquivo de configuração” para obter os detalhes.
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, digite:
ALLOW_USERS="www_admin"
Conceda permissões de leitura e acesso ao diretório de instantâneos CAMINHO/.snapshots. CAMINHO deve ser substituído pelo subvolume especificado na primeira etapa deste procedimento. Exemplo:
chmod a+rx /srv/www/.snapshots
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
Se você configurou a partição raiz com Btrfs durante a instalação, o Snapper criará automaticamente instantâneos do sistema por hora, além de pré e pós-instantâneos para transações do YaST e do zypper. Cada uma dessas tarefas pode ser desabilitada da seguinte forma:
Edite /etc/snapper/configs/root e defina TIMELINE_CREATE como no:
TIMELINE_CREATE="no"
Desinstale o pacote snapper-zypp-plugin
Edite /etc/sysconfig/yast2 e defina USE_SNAPPER como no:
USE_SNAPPER="no"
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.2.3, “Criando e modificando as configurações do Snapper” para obter os detalhes). Você só pode criar instantâneo 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 o menu suspenso no YaST ou especifique a opção -c na linha de comando (snapper -c MINHACONFIG COMANDO).
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.3.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_stuff, user=tux
Algoritmo de Limpeza: Algoritmo de limpeza do instantâneo. Consulte a Seção 4.3.1.2, “Algoritmos de limpeza” para obter os detalhes.
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. Por exemplo, 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 tem o seu pre correspondente. Por exemplo, usado para instantâneos automáticos do YaST/zypper.
singleInstantâneo independente. Usado, por exemplo, para instantâneos automáticos por hora. Esse é o tipo padrão quando se cria instantâneos.
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.2.3.1, “Ajustando o arquivo de configuração” para obter os detalhes).
Apaga instantâneos antigos quando determinado número de instantâneos é atingido.
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.
Apaga os pares de pré/pós-instantâneos com diffs vazias.
A criação do instantâneo é feita executando o comando snapper create ou clicando em no módulo do YaST. Os exemplos a seguir explicam como criar instantâneos da linha de comando. Eles são fáceis de adotar na hora de usar a interface do YaST.
![]() | 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. | |
--description "Snapshot for week 2 2013"
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.
--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.
--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.
--type pre--print-number--description "Before the Apache config cleanup"
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”.
--type post--pre-number 30--description "After the Apache config cleanup"
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”.
--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.
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 na hora de 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 .
--cleanup-algorithm "timeline" 10
Modifica os metadados do instantâneo 10 na configuração padrão (root). O algoritmo de limpeza é definido como timeline.
--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.
Para apagar um instantâneo com o módulo do YaST, escolha o instantâneo 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 NÚMERO.
![]() | Apagando pares de instantâneos |
|---|---|
Ao apagar um instantâneo | |
Apaga o instantâneo 65 na configuração padrão (root).
-c home delete 89 90
Apaga os instantâneos 89 e 90 na configuração personalizada chamada home.
![]() | Instantâneos antigos ocupam mais espaço em disco |
|---|---|
Se você apagar instantâneos para liberar espaço no disco rígido (consulte a Seção 4.1.1, “Instantâneos e espaço em disco” para obter os detalhes), 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.3.1.2, “Algoritmos de limpeza” para obter os detalhes.
Apesar de estarem prontos para produção, o Btrfs e o Snapper estão em constante desenvolvimento. As seguintes limitações existem no momento. Há planos de se resolver estes problemas em versões futuras.
Não existe um mecanismo que garanta a consistência dos dados na hora de criar um instantâneo. Sempre que um arquivo é gravado (ex. um banco de dados) ao mesmo tempo que um instantâneo é criado, o resultado é um arquivo danificado ou gravado parcialmente. A restauração desse arquivo causa problemas. Portanto, é altamente recomendável sempre revisar com cuidado a lista de arquivos modificados e suas diffs. Apenas restaure arquivos que realmente tenham que fazer parte da ação que deseja voltar.
Normalmente, /home reside em uma partição separada. Essa partição separada não faz parte da configuração padrão de rollbacks do YaST. Portanto, a partição pessoal do usuário não será apagada durante a reversão de uma adição de usuário com o Snapper. É altamente recomendável usar a ferramenta do YaST para remover usuários.
/boot e no carregador de boot¶
No momento, o SUSE Linux Enterprise Desktop não pode ser inicializado de partições Btrfs. Portanto, uma partição separada para /boot é criada durante a instalação ao usar o Btrfs para a partição do sistema. Como /boot não suporta instantâneos, as seguintes restrições se aplicam aos rollbacks do YaST/zypper:
O único arquivo que pode ser voltado é o arquivo de configuração do carregador de boot em /etc. Os arquivos principais de configuração residem em /boot e não podem ser voltados.
O Kernel e seu initrd são instalados na partição /boot, enquanto os módulos ou as fontes do Kernel são instalados em /var/lib e /usr/src, respectivamente. Além disso, cada instalação do Kernel também muda os arquivos de configuração do carregador de boot em /boot. Portanto, sempre que fizer um rollback que envolva desfazer uma instalação do Kernel, você precisará remover manualmente o Kernel e seu initrd de /boot e ajustar a configuração do carregador de boot removendo a entrada de boot do Kernel.
/var/log, /tmp e em outros diretórios?
Para alguns diretórios, nós decidimos desabilitar a “criação de instantâneo”; por exemplo, /var/log, já que a reversão de registros dificulta a pesquisa por problemas. Para excluir um caminho de “criação de instantâneo”, nós criamos um subvolume para esse caminho. Os pontos de montagem a seguir são excluídos da “criação de instantâneo” no SUSE Linux Enterprise Desktop:
/opt
/srv
/tmp
/var/crash
/var/log
/var/run
/var/spool
/var/tmp
Isso não é possível no momento. O carregador de boot no SUSE Linux Enterprise Desktop não suporta inicialização da partição Btrfs.
Além dos instantâneos em sistemas de arquivos Btrfs, o snapper também suporta a “criação de instantâneo” em volumes LVM com aprovisionamento dinâmico (instantâneos em volumes LVM comuns não são suportados) formatados com ext3 ou XFS. Para obter mais informações e instruções de configuração, consulte a Seção “LVM Configuration” (Capítulo 12, Advanced Disk Setup, ↑Guia de Implantação).
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(. Os dados ext3 e XFS são suportados, portanto SISTEMADEARQUIVOS)ext3 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.2.3.1, “Ajustando o arquivo de configuração”. Agora, é possível usar o Snapper para criar e gerenciar instantâneos, restaurar arquivos e desfazer mudanças, conforme descrito anteriormente.