,-------------.
44203.net  |
`-------------'
Documentação de referência

Backup 2024, parte 1: A primeira cópia cifrada

Esta é a parte 1 de uma série de posts sobre meu esquema de backup que implementa um sistema 3-2-1 de backups: são 3 cópias no total, em ao menos duas mídias distintas, sendo uma delas remota. Esta parte documenta a primeira cópia cifrada dos dados usando Restic, Pass e Systemd.

Características da primeira cópia cifrada

A primeira cópia cifrada é feita usando Restic e é salva diretamente em um NAS na minha rede local, garantindo assim a existência de 2 cópias em 2 mídias distintas.

Requisitos para a primeira cópia cifrada:

  • Conteúdo: Deve incluir todo o $HOME, com exceção de alguns arquivos específicos.
  • Frequência: Cópias instantâneas realizadas a cada hora.
  • Retenção:
    • 24 últimas cópias horárias
    • 7 últimas cópias diárias
    • 4 últimas cópias semanais
    • 6 últimas cópias mensais
  • Segurança: A senha e algoritmos criptográficos devem ser ao menos tão fortes quanto os da criptografia de disco que protege os dados originais.

Instalação e configuração de dependências

Instale o pass e o Restic, por exemplo em um Debian:

sudo apt -f install password-store restic

Insira a senha para backup no repositório de senhas, por exemplo:

pass insert backups/restic

Nota importante: Utilize uma senha que você se lembre, para que seja possível recuperar os dados a partir de uma cópia caso você não tenha mais acesso ao seu chaveiro. Eu uso a mesma senha de criptografia de disco do dispositivo que estou fazendo backup. Recomendo o uso do método Diceware através de sua implementação em Python que está no Debian.

Por fim, tenha certeza de que seu gpg-agent está configurado de forma que vai te pedir a senha da chave criptográfica.

Configuração do Restic como um serviço do Systemd

Inicie o repositório Restic:

export RESTIC_PASSWORD_COMMAND='pass backups/restic'
export RESTIC_REPOSITORY=/caminho/para/o/repositorio/restic
restic init

Determine as exceções no arquivo ~/.backup-excludes.txt:

/home/user/.cache
/home/user/.config/chromium
/home/user/.local/share/Trash
/home/user/.local/share/containers
/home/user/.mozilla
/home/user/Downloads
/home/user/tmp

Crie um arquivo de configuração de serviço do Systemd em ~/.config/systemd/user/backup.service com o seguinte conteúdo:

[Unit]
Description=Backup my home directory

[Service]
Type=oneshot
Environment=RESTIC_PASSWORD_COMMAND='pass backups/restic'
Environment=RESTIC_REPOSITORY=/caminho/para/o/repositorio/restic
ExecStart=restic -q backup --exclude-caches --exclude-file=/home/user/.backup-excludes.txt /home/user
ExecStartPost=restic -q forget --keep-within-hourly=1d --keep-hourly=24 --keep-daily=7 --keep-weekly=4 --keep-monthly=6
ExecStartPost=restic -q prune

[Install]
WantedBy=multi-user.target

Crie um timer para executar o serviço em ~/.config/systemd/user/backup.timer:

[Unit]
Description=Periodic backup data using restic

[Timer]
Unit=backup.service
OnCalendar=*:0

[Install]
WantedBy=timers.target

Configure o Systemd de acordo:

systemctl --user daemon-reload
systemctl --user enable backup.timer
systemctl --user start backup.timer
Criado em , editado em . backups