Restic

Mis à jour le mercredi 4 décembre 2024 par johackim

Pour sauvegarder des données sous Linux, il existe restic en tant que logiciel de backups.

Restic peut sauvegarder des données sur différent backends :

  • Buckets S3 (minio, scaleway, AWS, etc...)
  • SFTP
  • Local
  • Etc...

Et si vous souhaitez plus de backends (Nextcloud, Dropbox, OVH, etc...), il est possible de coupler restic avec Rclone.

Installation

Pour installer restic sous Debian ou Ubuntu :

apt update && apt install -y restic

Sur Arch Linux :

sudo pacman -S restic

Ou manuellement :

export RESTIC_VERSION=0.16.4
wget https://github.com/restic/restic/releases/download/v$RESTIC_VERSION/restic_${RESTIC_VERSION}_linux_amd64.bz2
bzip2 -d restic_${RESTIC_VERSION}_linux_amd64.bz2
mv restic_${RESTIC_VERSION}_linux_amd64 /bin/restic
chmod +x /bin/restic

Lancer une sauvegarde vers un bucket S3

Voici un exemple avec une sauvegarde du dossier ~/ vers un bucket S3 de chez Scaleway :

# ~/.aws/credentials
[default]
aws_access_key_id = <AWS_ACCESS_KEY_ID>
aws_secret_access_key = <AWS_SECRET_ACCESS_KEY>
restic -r s3:s3.fr-par.scw.cloud/<bucket_name> init
restic -r s3:s3.fr-par.scw.cloud/<bucket_name> backup ~/

Il est possible de facilement automatiser la sauvegarde via une tâche cron :

# Sauvegarde du dossier ~/ chaque jour à minuit
0 0 * * * RESTIC_PASSWORD=<PASSWORD> restic -r s3:s3.fr-par.scw.cloud/<bucket_name> backup ~/

Consulter les sauvegardes

restic -r <remote> snapshots

Restaurer une sauvegarde

restic -r <remote> restore <id> --target <folder>

Restaurer un fichier spécifique

restic -r <remote> restore <id> --include <file_path> --target <folder>

Monter une sauvegarde

Pour monter une sauvegarde restic sur un dossier :

restic -r <remote> mount <folder>

Libérer de l'espace

Pour libérer de l'espace :

restic -r <remote> forget --keep-within 30d
restic -r <remote> prune

Mettre à jour restic

Pour mettre à jour restic :

restic self-update

Débloquer l'accès

Si pour une raison ou une autre votre accès est bloqué, exécuter la commande suivante :

kill <pid>
restic -r <remote> unlock

Mettre à jour le mot de passe d'un repository

restic -r <remote> key list
restic -r <remote> key add

Créer une sauvegarde automatique quotidienne

Créer un service dans le fichier /etc/systemd/system/restic.service:

[Unit]
Description=Restic Backup
Wants=network-online.target
After=network-online.target
[Service]
Type=oneshot
User=myuser
Group=myuser
ExecStart=restic -q backup ${HOME}
# ExecStartPost=curl -sL https://webhook.example.com
Environment=RESTIC_REPOSITORY=s3:s3.eu-central-003.backblazeb2.com/mybucket
Environment=RESTIC_PASSWORD=myp@ssw0rd
Environment=HOME=/home/myuser
Restart=on-failure
RestartSec=30

Créer un timer dans le fichier /etc/systemd/system/restic.timer:

[Unit]
Description=Daily Restic Backup Timer
[Timer]
Persistent=true
OnCalendar=daily
RandomizedDelaySec=300
[Install]
WantedBy=timers.target

Activez le timer :

sudo systemctl daemon-reload
sudo systemctl enable --now restic.timer