Snapshots Btrfs
Introdução
Seção intitulada “Introdução”O que é um snapshot Btrfs?
Seção intitulada “O que é um snapshot Btrfs?”Vamos começar pelo básico:
Os snapshots Btrfs derivam da funcionalidade de subvolumes. O que é um subvolume, pergunta você? Pense num subvolume como um sistema de ficheiros separado dentro do sistema de ficheiros Btrfs. Isto permite-lhe segmentar os seus dados em diferentes partes. É por isso que, por exemplo, no CachyOS temos diferentes subvolumes para:
- Sistema de ficheiros raiz: (
/) - Diretório root: (
/root) - Diretório Home: (
/home) - Diretórios Var: (
/var/cache,/var/tmp,/var/log) - Diretório Srv: (
/srv)
Ao termos subvolumes diferentes para estes diretórios, podemos geri-los de forma independente, aplicar definições distintas e, mais importante, criar snapshots para cada um deles.
É aqui que nasce um snapshot. Um snapshot é essencialmente uma cópia de leitura-apenas ou de leitura-escrita (padrão) de um subvolume num momento específico. Isto significa que pode capturar o estado do seu sistema de ficheiros, incluindo todos os ficheiros e diretórios, naquele instante.
Assim, os snapshots tornam-se uma referência temporal; quando o ficheiro de destino diverge dos dados do snapshot, o snapshot manterá o ficheiro original e o destino criará um novo ficheiro com as alterações, permanecendo o snapshot inalterado para sempre. É por isso que alguns utilizadores se referem a um snapshot como “dados congelados no tempo”.
Imagine tirar uma fotografia do seu sistema de ficheiros num momento específico: poderá sempre voltar a essa fotografia sempre que precisar.
Uma das principais vantagens dos snapshots é o facto de serem muito eficientes em termos de espaço, pois são apenas uma referência aos dados originais até que sejam feitas alterações.
Contudo, é aqui que um snapshot diverge de um backup tradicional. Imaginemos que o seu disco avaria: se tivesse um backup tradicional, poderia restaurar os seus dados a partir desse backup. No entanto, se tivesse apenas snapshots no disco que avariou, perderia o acesso a esses snapshots, uma vez que estão armazenados no próprio disco.
Casos de recuperação onde os snapshots são úteis (ou não)
Seção intitulada “Casos de recuperação onde os snapshots são úteis (ou não)”São úteis para recuperar de:
- Quebras ou corrupção após atualizações do sistema.
- Configurações erradas que impedem o arranque do sistema.
- Eliminações ou modificações acidentais de ficheiros.
Não são úteis para recuperar de:
- Problemas no gestor de arranque (bootloader).
- Falhas de hardware (ex: discos rígidos avariados).
Gerir snapshots (GUI e CLI)
Seção intitulada “Gerir snapshots (GUI e CLI)”Algumas coisas a considerar antes de gerir snapshots. Aplica-se tanto aos métodos de CLI (linha de comandos) como de GUI (interface gráfica).
- Recomenda-se manter um máximo de 10 snapshots. Além disso, os snapshots tornam-se demasiado antigos e menos úteis. No pior cenário, reverter para um snapshot antigo pode introduzir problemas de compatibilidade com versões de software mais recentes.
- Idealmente, os snapshots devem ser usados para fins de recuperação. Embora possa usá-los para desfazer alterações em ficheiros sem restaurar o snapshot completo.
- Adicione uma descrição significativa ao criar snapshots. Isto ajudará a identificar o propósito de cada snapshot mais tarde.
Btrfs Assistant (GUI)
Seção intitulada “Btrfs Assistant (GUI)”Antes de prosseguir, certifique-se de que tem o btrfsmaintenance instalado para tirar partido das funcionalidades de gestão automática de snapshots.
Para quem prefere gerir o Btrfs, snapshots e muito mais através de uma interface gráfica, o Btrfs Assistant é um projeto fantástico para iniciantes.
Configuração da Limpeza Automática de Snapshots
Seção intitulada “Configuração da Limpeza Automática de Snapshots”Vamos configurar a limpeza automática de snapshots utilizando o Btrfs Assistant. Isto ajudará a gerir os seus snapshots de forma eficaz, sem intervenção manual.
Siga estes passos:
-
Inicie o Btrfs Assistant abrindo um terminal e executando:
Terminal window btrfs-assistant-launcherComo alternativa:
Terminal window sudo -E btrfs-assistant -
Navegue até ao separador Snapper Settings:

Modifique as definições de Snapshot Retention (Retenção de Snapshots) da seguinte forma:
- Certifique-se de que a configuração
rootestá selecionada. - Introduza o valor
0para as opções Hourly, Daily, Weekly, Monthly e Yearly. - Desmarque a opção
Enable timeline snapshots. - Introduza o valor
10emNumber. - Adicione um ✅ em
Snapper cleanup enabled. - Clique no botão
Saveno canto superior direito e emApply systemd changesno canto inferior direito. O snapper-cleanup.timer será agora ativado para limpar automaticamente os snapshots antigos com base na sua configuração.
- Certifique-se de que a configuração
Remover Snapshots utilizando o Btrfs Assistant
Seção intitulada “Remover Snapshots utilizando o Btrfs Assistant”-
Abra o Btrfs Assistant:
Terminal window btrfs-assistant-launcherComo alternativa:
Terminal window sudo -E btrfs-assistant -
Vá ao separador Snapper Settings:

-
Selecione o(s) snapshot(s) que deseja eliminar da lista.
-
Clique no botão
Delete(Eliminar) localizado no topo da janela. -
Gere novamente as entradas do seu gestor de arranque (bootloader) para refletir as alterações:
systemd-boot
Terminal window sudo sdboot-manage genGRUB
Terminal window sudo grub-mkconfig -o /boot/grub/grub.cfgLimine
Terminal window sudo limine-mkinitcpio
Consulte a sua Wiki Oficial para uma análise mais aprofundada sobre o que pode ser feito.
Snapper (CLI)
Seção intitulada “Snapper (CLI)”Agora que abordámos o que é um snapshot Btrfs e os seus casos de utilização, vamos falar sobre como geri-los utilizando uma ferramenta chamada Snapper, criada por Arvin Schnell da openSUSE.
O CachyOS utiliza a seguinte configuração do Snapper por predefinição:
# subvolume para snapshotSUBVOLUME="/"
# tipo de sistema de ficheirosFSTYPE="btrfs"
# btrfs qgroup para algoritmos de limpeza baseados no espaçoQGROUP=""
# fração ou tamanho absoluto do espaço do sistema de ficheiros que os snapshots podem utilizarSPACE_LIMIT="0.5"
# fração ou tamanho absoluto do espaço do sistema de ficheiros que deve estar livreFREE_LIMIT="0.2"
# utilizadores e grupos autorizados a trabalhar com esta configuraçãoALLOW_USERS=""ALLOW_GROUPS=""
# sincronizar utilizadores e grupos de ALLOW_USERS e ALLOW_GROUPS para o# diretório .snapshotsSYNC_ACL="no"
# iniciar a comparação entre pre- e post-snapshot em segundo plano após criar# o post-snapshotBACKGROUND_COMPARISON="yes"
# executar a limpeza numérica (number cleanup) diariamenteNUMBER_CLEANUP="yes"
# limites para a limpeza numéricaNUMBER_MIN_AGE="1800"NUMBER_LIMIT="50"NUMBER_LIMIT_IMPORTANT="15"
# criar snapshots de hora a hora (timeline)TIMELINE_CREATE="no"
# limpar snapshots de hora a hora após algum tempoTIMELINE_CLEANUP="yes"
# limites para a limpeza da linha temporal (timeline cleanup)TIMELINE_MIN_AGE="1800"TIMELINE_LIMIT_HOURLY="5"TIMELINE_LIMIT_DAILY="7"TIMELINE_LIMIT_WEEKLY="0"TIMELINE_LIMIT_MONTHLY="0"TIMELINE_LIMIT_YEARLY="0"
# limpar pares pre-post vaziosEMPTY_PRE_POST_CLEANUP="yes"
# limites para a limpeza de pares pre-post vaziosEMPTY_PRE_POST_MIN_AGE="1800"Aqui está uma lista dos comandos mais comuns do Snapper.
Obter a configuração atual:
sudo snapper get-configExemplo de resultado:
❯ snapper list-configsConfig │ Subvolume───────┼──────────root │ /Listar snapshots disponíveis + detalhes:
sudo snapper listExemplo de resultado:
# │ Type │ Pre # │ Date │ User │ Cleanup │ Description │ Userdata────┼────────┼───────┼──────────────────────────┼──────┼─────────┼──────────────────────────────────────────────────────────────────────────┼─────────0 │ single │ │ │ root │ │ current │715 │ pre │ │ Thu 22 Jan 2026 16:14:07 │ root │ number │ pacman -S -y -u --config /etc/pacman.conf -- │716 │ post │ 715 │ Thu 22 Jan 2026 16:14:25 │ root │ number │ docker-buildx lilv sof-firmware zed │717 │ pre │ │ Sat 24 Jan 2026 11:19:48 │ root │ number │ pacman -S -y -u --config /etc/pacman.conf -- │718 │ post │ 717 │ Sat 24 Jan 2026 11:20:19 │ root │ number │ bpf cachyos-hello cachyos-wallpapers cpupower jdk-openjdk ldb less libev │719 │ pre │ │ Sat 24 Jan 2026 11:20:31 │ root │ number │ pacman -U --config /etc/pacman.conf -- /home/mario/.cache/yay/visual-s │720 │ post │ 719 │ Sat 24 Jan 2026 11:20:36 │ root │ number │ visual-studio-code-bin │721 │ pre │ │ Sat 24 Jan 2026 20:46:40 │ root │ number │ pacman -Syu plasma-login-manager │722 │ post │ 721 │ Sat 24 Jan 2026 20:46:48 │ root │ number │ cmake fastfetch harfbuzz harfbuzz-icu jdk21-openjdk lib32-harfbuzz lib32 │723 │ pre │ │ Sat 24 Jan 2026 20:46:53 │ root │ number │ pacman -R sddm-kcm cachyos-themes-sddm sddm │724 │ post │ 723 │ Sat 24 Jan 2026 20:46:56 │ root │ number │ cachyos-themes-sddm sddm sddm-kcm │725 │ pre │ │ Sun 25 Jan 2026 08:05:05 │ root │ number │ pacman -S -y -u --config /etc/pacman.conf -- │726 │ post │ 725 │ Sun 25 Jan 2026 08:05:11 │ root │ number │ plasma-login-manager │727 │ pre │ │ Sun 25 Jan 2026 15:55:28 │ root │ number │ pacman -S --config /etc/pacman.conf -- cachyos-extra-znver4/caligula │728 │ post │ 727 │ Sun 25 Jan 2026 15:55:30 │ root │ number │ caligula │- Aqui está um resumo das colunas:
#: Indica o número do snapshot, que é utilizado noutros comandos.Type: Indica se o snapshot é um snapshot individual (single) ou parte de um par pre/post.single: Estes snapshots não têm uma relação especial com outros snapshots.pre: Estes snapshots destinam-se a ser criados antes de qualquer tipo de alteração no sistema (como editar um ficheiro ou instalar um pacote).post: Como o nome indica, referem-se a snapshots tirados após a ocorrência de uma alteração no sistema. Estão ligados ao seu snapshotprecorrespondente.
Pre #: Para snapshotspost, esta coluna indica o número do snapshotprecorrespondente.Date: A data e hora em que o snapshot foi criado.User: O utilizador que criou o snapshot.Cleanup: Indica o algoritmo de limpeza aplicado ao snapshot.- Existem vários algoritmos de limpeza disponíveis no Snapper, tais como
number,timelineeempty-pre-post. Neste exemplo, é utilizado o algoritmonumber, o que significa que os snapshots mais antigos serão eliminados com base num limite predefinido. timeline: Os snapshots são limpos com base na sua idade e frequência.empty-pre-post: Elimina pares de snapshots pre/post com diferenças (diffs) vazias.
- Existem vários algoritmos de limpeza disponíveis no Snapper, tais como
Description: Uma breve descrição do snapshot, indicando frequentemente o motivo da sua criação.Userdata: Dados adicionais definidos pelo utilizador associados ao snapshot. Para mais detalhes sobre as colunas de resultado.
Criar um novo snapshot:
sudo snapper create --type single --description "My Snapshot Description"Modificar um snapshot:
sudo snapper modify <option> <snapshot_number>Opções disponíveis:
Options for 'modify' command: --description, -d <description> Description for snapshot. --cleanup-algorithm, -c <algo> Cleanup algorithm for snapshot. --userdata, -u <userdata> Userdata for snapshot. --read-only Set snapshot read-only. --read-write Set snapshot read-write. --default Set snapshot as default snapshot.Exemplo: Modificar a descrição do snapshot 729:
sudo snapper modify 729 --description 'My New Snapshot Description'Eliminação de snapshots:
Eliminar um único snapshot:
sudo snapper delete <snapshot_number>Eliminar um intervalo de snapshots:
sudo snapper delete 718-721Os snapshots 718, 719, 720 e 721 serão eliminados.
Documentação do Snapper
Seção intitulada “Documentação do Snapper”Página oficial do manual de comandos do Snapper:
Guia do ficheiro de configuração do Snapper:
Recomendações e Dicas para o Limine
Seção intitulada “Recomendações e Dicas para o Limine”Ajustar as Definições de Exibição de Snapshots no Gestor de Arranque Limine
Seção intitulada “Ajustar as Definições de Exibição de Snapshots no Gestor de Arranque Limine”- Limite o número de snapshots apresentados no menu do gestor de arranque Limine para evitar desorganização:
- Crie uma cópia de segurança (backup) do ficheiro de configuração do limine-snapper-sync:
Terminal window sudo cp /etc/limine-snapper-sync.conf /etc/limine-snapper-sync.conf.orig - Edite o ficheiro de configuração do limine-snapper-sync:
Snippet do resultado esperado:
Terminal window sudo nano /etc/limine-snapper-sync.confOpcionalmente, ajuste o formato do nome do snapshot (Snapshot Name Format):Terminal window ### Entradas Máximas de Snapshots### Define o limite de quantas entradas de snapshots aparecem no menu de arranque.### Isto depende do tamanho da sua partição de arranque FAT32 e de quantas versões diferentes de kernels e módulos deseja manter.### Uma partição de arranque FAT32 maior permite mais entradas de snapshots.MAX_SNAPSHOT_ENTRIES=10Terminal window ### Formato do Nome do Snapshot### Escolha um formato para a aparência das entradas de snapshots no gestor de arranque Limine:### 0. ID=111 2023-12-20 10:59:59 (predefinição)### 1. 111│2023-12-20 10:59:59### 2. 111 │ 2023-12-20 10:59:59### 3. 2023-12-20 10:59:59│111### 4. 2023-12-20 10:59:59 │ 111### 5. 2023-12-20 10:59:59### 6. 111### 7. 111│descrição do snapshot### 8. 2023-12-20 10:59:59│descrição do snapshot### 9. │descrição do snapshotSNAPSHOT_FORMAT_CHOICE=88é uma boa escolha, pois mostra a data e a hora juntamente com a descrição do snapshot. - Guarde o ficheiro e saia pressionando
CTRL+OEnterCTRL+X
Restaurar a partir de um Snapshot
Seção intitulada “Restaurar a partir de um Snapshot”Limine
- No menu do gestor de arranque Limine, navegue até ao menu de Snapshots:

- Selecione o snapshot e o kernel a partir do qual deseja restaurar:


- O seu sistema está agora em
modo de leitura-apenas(read-only mode). Deverá aparecer uma notificação indicando que um snapshot foi detetado, perguntando se deseja restaurar a partir dele:
- Clique em
Restore now. Uma janela de terminal abrir-se-á com uma linha de comandos solicitando algumas confirmações:Exemplo de Prompt de Restauro: Snapshot ID : 2Date : 2026-01-26 11:19:14Description : nc-gitRestore method : replaceConfirm restore of snapshot 2 using the "replace" method?Type [y]es to restore, [l]ist to display all snapshots, or [c]ancel to abort.Your input: yesEnter a description for the "backup" of the subvolume: @Your input: @ - Escreva
yese, opcionalmente, adicione uma descrição para o snapshot de cópia de segurança. - O processo de restauro será iniciado. Uma vez concluído, escreva
yesnovamente no novo prompt para reiniciar o seu sistema:Terminal window The restore is complete. Please reboot now:Type [y]es to reboot, [n]o or [c]ancel to abort rebooting.Your input: yes
GRUB
-
A partir do menu do gestor de arranque GRUB, inicie (boot) no snapshot e kernel desejados a partir dos quais pretende restaurar.
-
Após o arranque, abra o Btrfs Assistant:
Terminal window btrfs-assistant-launcherEm alternativa::
Terminal window sudo -E btrfs-assistant -
Vá ao separador Snapper → separador “Browse/Restore” e selecione o snapshot a partir do qual arrancou o sistema:

-
Clique no botão
Restoree reinicie o seu sistema para aplicar as alterações.