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...
Chaque fois que vous lancez la commande restic backup, cela créer un nouvel instantané (un "snapshot") immuable qui est une photographie de l'état de vos fichiers à ce moment précis.
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.18.1
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 :
RESTIC_REPOSITORY="MY_REPOSITORY" # Exemple: s3:s3.fr-par.scw.cloud/mybucket
RESTIC_PASSWORD="MY_PASSWORD"
0 0 * * * restic backup /home/myuser/
Consulter les sauvegardes
restic snapshots
Restaurer une sauvegarde
restic restore <id> --target <folder>
Restaurer un fichier spécifique
restic restore <id> --include <file_path> --target <folder>
Monter une sauvegarde
Pour monter une sauvegarde restic sur un dossier :
restic mount <folder>
Libérer de l'espace
Pour libérer de l'espace :
restic forget --keep-within 30d --prune
# Ou
restic forget --keep-within 30d --group-by "paths" --prune # Ignorer le nom de la machine
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 unlock
Mettre à jour le mot de passe d'un repository
restic key list
restic key add
Connaitre la taille d'un repository
restic stats
Créer une sauvegarde automatique quotidienne
Créer un service dans le fichier ~/.config/systemd/user/restic.service:
[Unit]
Description=Restic Backup
Wants=network-online.target
After=network-online.target
[Service]
Type=oneshot
ExecStart=restic -q backup ${HOME}
# ExecStartPost=curl -sL https://mywebhook.example.com
Environment=RESTIC_REPOSITORY=s3:example.com/mybucket
Environment=RESTIC_PASSWORD=myp@ssw0rd
Environment=HOME=/home/myuser
Restart=on-failure
RestartSec=30
Créer un timer dans le fichier ~/.config/systemd/user/restic.timer:
[Unit]
Description=Daily Restic Backup Timer
[Timer]
Persistent=true
OnCalendar=daily
RandomizedDelaySec=300
[Install]
WantedBy=timers.target
Activez le timer :
sudo loginctl enable-linger <user>
reboot
systemctl --user daemon-reload
systemctl --user enable --now restic.timer