Guia de instalação e configuração do snapper no Debian

Instalação do debian do snapper

Primeiro vamos criar o subvolume , caso não tenha feito.

No debian , normalmente a instalação dos subvolumes são em /mnt.

Vamos montar a partição.

Veja pelo comando lsblk

lsblk -f

No caso aqui foi em sda2

então

sudo mount /dev/sda2 /mnt
ls -a /mnt
.  ..  @  @log  @root 

Vamos criar o subvolume .snapshots

sudo btrfs su cr .snapshots

Ok.

Vamos verificar

ls -a /mnt
.  ..  @  @log  @root  .snapshots 

OK. Criado.

Podemos desmontar /mnt

sudo umount /mnt

Agora vamos colocar no /etc/fstab

UUID=123e4567-e89b-12d3-a456-426614174000 /.snapshots     btrfs   noatime,compress=zstd,subvol=.snapshots     0       0

Recarregamos o systemd, para que a mudança seja efetivada sem reiniciar o pc no fstab

sudo systemctl daemon-reload

Após as modificações, instalamos os pacotes
Recomendo usar btrfs-assistant em vez de snapper-gui

sudo apt install snapper  btrfs-assistant

E criamos a configuração do arquivo root, este irá criar a pasta /.snapshots

sudo snapper -c root create-config /

Caso tenha algum problema, para apagar a configuração

sudo snapper --config root delete-config

Execute novamente daemon-reload , pois a pasta snapshot foi criada depois do fstab
Só para garantir que não tenha erro.

systemctl daemon-reload 

Configuração para permitir o usuário modificar e visualizar

  • Abra o terminal e edite o arquivo de configuração do Snapper (ex: root ou home):
    sudo nano /etc/snapper/configs/root
  • Encontre a linha ALLOW_USERS="" e adicione o seu nome de usuário entre aspas, por exemplo:
    ALLOW_USERS="seu_usuario"
  • Salve o arquivo (no nano, Ctrl+O, Enter, depois Ctrl+X) e tente abrir o snapper-gui novamente.

Vamos criar o primeiro backup

sudo snapper -c root create -c timeline -d "Primeiro backup"

Você pode visualizar pela linha de comando ou pelo aplicativo Gui

Pelo comando

snapper list

Caso não tenha acesso ainda com usuário, reinicie o pc e tenta novamente.

Para restaurar em algum snapshot

sudo snapper rollback <NUMERO_DO_SNAPSHOT>` 

Veja se os serviços estão habilitados e funcionando para o backup automático,

Para habilitar use o systemctl enable.

snapper-boot.timer                     enabled enabled
snapper-cleanup.timer                  enabled enabled
snapper-timeline.timer                 enabled enabled
systemctl enable nome.timer

Mais informação

Exemplo
Definir contagens numéricas

Para garantir que o Snapper não acumule muitos snapshots, altere as linhas de contagem para valores menores (por exemplo, 5 ou 10):

/etc/snapper/configs/root

NUMBER_MIN_AGE="1800"
NUMBER_MAX="10"
NUMBER_LIMIT="5"
NUMBER_LIMIT_IMPORTANT="10"

NUMBER_LIMIT=“5” pode deixar 50 ou 10

3 curtidas

Info archinstall

O script archinstall monta os subvolumes Btrfs diretamente na estrutura de arquivos raiz do sistema operacional, localizada no diretório /mnt durante o processo de instalação. Após a conclusão, o sistema final estará montado na raiz / (subvolume principal). [1, 2, 3]

Os subvolumes são organizados pelo script nas seguintes montagens específicas:

  • / (Raiz): Geralmente montada usando o subvolume @.
  • /home: Montada separadamente usando o subvolume @home.
  • /var/log: Armazena os logs do sistema, utilizando o subvolume @log.
  • /var/cache/pacman/pkg: Contém o cache dos pacotes, montado no subvolume @pkg.
  • /var/lib/snapd: Em instalações que utilizam snaps, pode ser isolada no subvolume @snap.
  • /.snapshots ou /mnt/btrfs_root: Ponto de montagem para armazenar snapshots (cópias de segurança do sistema) feitas por ferramentas como o Snapper.
1 curtida

Tipos Estruturais de Snapshots

Eles diferem na forma como são associados pelo Snapper: [1, 2]

  • Single: São fotografias independentes que não têm ligação com outras. Geralmente são criados manualmente ou agendados em horários específicos para guardar um ponto de restauração limpo do sistema. [1, 2, 3, 4, 5]
  • Pre (Antes): Criados antes de uma ação do sistema ou instalação de um pacote. Esse snapshot é sempre a referência inicial. [1, 2, 3, 4]
  • Post (Depois): Criados logo após a conclusão da mesma ação do sistema. Ele sempre faz par com o seu respectivo Pre. A combinação Pre + Post permite ao Snapper descobrir exatamente quais arquivos foram alterados durante uma instalação ou atualização, ajudando a desfazer erros com precisão. [1, 2, 3, 4, 5]

Tipos de Limpeza (Políticas de Retenção)

Para evitar que o armazenamento do computador fique cheio, o Snapper aplica regras de limpeza nos snapshots: [1]

  • Timeline (Linha do tempo): O Snapper cria essas fotografias automaticamente em intervalos regulares (geralmente a cada hora) e o algoritmo timeline se encarrega de deletar os mais antigos, mantendo um número fixo de snapshots diários, semanais e mensais. [1, 2]
  • Numbered (Numerados): Esses snapshots são deletados de acordo com um limite máximo total configurado. Ao atingir o limite estipulado (ex: 50 snapshots), o mais antigo é apagado automaticamente à medida que um novo é criado.
1 curtida

Show! No começo parece complicado, mas depois de fazer uma ou duas instalações já fica bem entendido.

2 curtidas

@Deleterium

Quando puder , coloque os links dos seus tópicos aqui.

Me lembro que você fez alguns sobre BTRFS.

Sobre o Single.
Sabe se este tipo de backup é apagado após algum tempo. Ou é único e só pode ser apagado manualmente?

E qual é a linha de comando para fazer o backup single?

O timeshift é bem limitado.
Aí resolvi instalar o snapper.

1 curtida

Adicionando os tópicos

Single é só para marcar que não tem relação com outro snapshot. Tanto o single quanto pre/post serão limpos automaticamente. A diferença básica é quando quando o ‘pre’ for limpo, vai ser limpo também o ‘post’ para evitar inconsistência.

É só usar a opção -t single ou simplesmente não usar a opção -t, pois single é a padrão.


A diferença que dá para especificar na na de criar o snapshot é o algoritmo de limpeza. No caso do seu tutorial, será usada a estratégia “number” para limpeza, que é mais simples e guarda um número fixo de ‘capturas’. No caso de querer manter alguma captura por mais tempo, use a tag important=yes que daí ele vai manter separados essas capturas. No caso da tua configuração na postagem inicial, serão guardadas sempre 5 capturas ‘normais’ e até 10 capturas importantes, mas limitado ao máximo de 10 capturas totais.

Uma linha de comando para criar uma captura importante:
sudo snapper create --description "Dia D" --userdata "important=yes"

Veja que automaticamente esse já será um snapshot ‘single’.


É importante mencionar também o sistema de limpeza do tipo timeline, ou ‘linha do tempo’. É bem interessante para manter um histórico mais frequente das atividades recentes, mas manter apenas alguns à medida que o tempo passa. Por exemplo, fazer um snapshot a cada hora, mas manter apenas 1 por dia, e 1 por semana.

Essa é uma estratégia inteligente por exemplo, para a pasta /home onde o usuário pode acabar conseguindo recuperar dados importantes que ele apagou sem querer a algumas horas, mas que ele tinha criado no início do dia. Eu uso aqui e já me salvou algumas vezes quando fiz cagadas com o git.

Criando configuração timeline na partição de arquivos pessoais

Caso tenha uma partição específica para a pasta /home, é interessante criar uma configuração para ela.

  1. Crie o subvolume para guardar os snapshots:
sudo btrfs su cr /home/.snapshots
  1. Aqui a partição é montada diretamente na raiz do btrfs, então não preciso configurar o fstab para o subvolume ‘.snapshots’, ele já fica sendo um subvolume na localização correta depois da montagem (em /home/.snapshots).
  2. Crie a configuração do home com sudo snapper -c home create-config /home
  3. Abra a configuração criada com o editor da sua escolha, ex: sudo nano /etc/snapper/configs/home
  4. Configure para salvar capturas de hora em hora e configure a estratégia para manter as capturas:
# create hourly snapshots
TIMELINE_CREATE="yes"

# cleanup hourly snapshots after some time
TIMELINE_CLEANUP="yes"

# limits for timeline cleanup
TIMELINE_MIN_AGE="1800"
TIMELINE_LIMIT_HOURLY="10"
TIMELINE_LIMIT_DAILY="7"
TIMELINE_LIMIT_WEEKLY="0"
TIMELINE_LIMIT_MONTHLY="0"
TIMELINE_LIMIT_YEARLY="0"

Nessa configuração serão guardados os últimos 10 snapshots tirados de hora em hora, e um por dia até 7 dias. (achei suficiente para mim).

Como ficou:

# snapper -c home list
    # │ Tipo   │ Pre # │ Data                     │ Usuário │ Limpeza  │ Descrição │ Dados de usuário
──────┼────────┼───────┼──────────────────────────┼─────────┼──────────┼───────────┼─────────────────
    0 │ single │       │                          │ root    │          │ current   │
12291 │ single │       │ sex 26 jun 2026 09:01:00 │ root    │ timeline │ timeline  │
12302 │ single │       │ sáb 27 jun 2026 09:01:00 │ root    │ timeline │ timeline  │
12308 │ single │       │ dom 28 jun 2026 15:01:00 │ root    │ timeline │ timeline  │
12314 │ single │       │ seg 29 jun 2026 09:01:00 │ root    │ timeline │ timeline  │
12323 │ single │       │ ter 30 jun 2026 13:01:00 │ root    │ timeline │ timeline  │
12330 │ single │       │ qua 01 jul 2026 10:01:00 │ root    │ timeline │ timeline  │
12331 │ single │       │ qua 01 jul 2026 11:01:00 │ root    │ timeline │ timeline  │
12332 │ single │       │ qua 01 jul 2026 12:01:00 │ root    │ timeline │ timeline  │
12333 │ single │       │ qua 01 jul 2026 13:01:00 │ root    │ timeline │ timeline  │
12334 │ single │       │ qua 01 jul 2026 16:01:00 │ root    │ timeline │ timeline  │
12335 │ single │       │ qua 01 jul 2026 19:01:00 │ root    │ timeline │ timeline  │
12336 │ single │       │ qua 01 jul 2026 20:01:00 │ root    │ timeline │ timeline  │
12337 │ single │       │ qua 01 jul 2026 21:01:00 │ root    │ timeline │ timeline  │
12338 │ single │       │ qua 01 jul 2026 22:01:00 │ root    │ timeline │ timeline  │
12339 │ single │       │ qui 02 jul 2026 19:01:00 │ root    │ timeline │ timeline  │
1 curtida

Excelente.
Obrigado pela explicação.
:+1:
@Deleterium

Recomendo usar btrfs-assistant em vez de snapper-gui