Add post about backups
parent
2e0aa2339f
commit
13156b1ffa
|
@ -0,0 +1,102 @@
|
||||||
|
---
|
||||||
|
title: "Esquema de backup para 2024"
|
||||||
|
date: 2023-12-30T17:10:20-03:00
|
||||||
|
slug: 2023-12-30-esquema-de-backup-para-2024
|
||||||
|
type: posts
|
||||||
|
draft: false
|
||||||
|
categories:
|
||||||
|
- Segurança da informação
|
||||||
|
tags:
|
||||||
|
- backups
|
||||||
|
toc: true
|
||||||
|
---
|
||||||
|
|
||||||
|
## Objetivo
|
||||||
|
|
||||||
|
Um sistema de backups com as seguintes características:
|
||||||
|
|
||||||
|
- Copia todo o `$HOME`, com exceção de alguns arquivos específicos.
|
||||||
|
- Mantém 3 cópias, em duas mídias diferentes, sendo uma delas remota.
|
||||||
|
- Frequência:
|
||||||
|
- Snapshots a cada hora.
|
||||||
|
- Retenção de uma cópia para as últimas: 24 horas, 7 dias, 4 semanas, 6 meses.
|
||||||
|
|
||||||
|
<!--more-->
|
||||||
|
|
||||||
|
## Dependências
|
||||||
|
|
||||||
|
Instale o [pass](https://www.passwordstore.org/) e o [Restic](https://restic.net/), por exemplo em um Debian:
|
||||||
|
|
||||||
|
```fish
|
||||||
|
sudo apt -f install password-store restic
|
||||||
|
```
|
||||||
|
|
||||||
|
Insira a senha para backup no repositório de senhas, por exemplo:
|
||||||
|
|
||||||
|
```fish
|
||||||
|
pass insert backups/restic
|
||||||
|
```
|
||||||
|
|
||||||
|
Nota: Utilize uma senha que você se lembre (eu uso a mesma senha de criptografia de disco do dispositivo que estou fazendo backup).
|
||||||
|
|
||||||
|
## Restic
|
||||||
|
|
||||||
|
Inicie o repositório Restic:
|
||||||
|
|
||||||
|
```fish
|
||||||
|
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:
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[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`:
|
||||||
|
|
||||||
|
```inifile
|
||||||
|
[Unit]
|
||||||
|
Description=Periodic backup data using restic
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
Unit=backup.service
|
||||||
|
OnCalendar=*:0
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=timers.target
|
||||||
|
```
|
||||||
|
|
||||||
|
Configure o Systemd de acordo:
|
||||||
|
|
||||||
|
```fish
|
||||||
|
systemctl --user daemon-reload
|
||||||
|
systemctl --user enable backup.timer
|
||||||
|
systemctl --user start backup.timer
|
||||||
|
```
|
Loading…
Reference in New Issue