Ceci est une ancienne révision du document !
Borg Backup est un programme de sauvegarde incrémentielle en ligne de commande. Il permet de fournir un moyen efficace et sûr de sauvegarder des données. Cette page aborde uniquement les sauvegardes distantes via SSH.
Sous debian Borg s'installe avec Apt.
sudo apt install borgbackup
L'initialisation se fait uniquement la première fois et depuis la machine à sauvegarder. Pour des questions pratiques je stocke la ckef de déchiffrage directement dans le dépôt, cela me permet d'être sûr de la retrouver depuis n'importe quel machine où je souhaite faire une restauration.
borg init -e repokey ssh://draconis@192.168.21.105:22/backup/colmaris
Pour chacune de mes sauvegarde j'utilise ce script bash.
#!/bin/bash # adresse du dépôt export BORG_REPO=ssh://user@adresse-serveur:port-ssh/chemin/du/dépôt # configuration de la passphrase export BORG_PASSPHRASE='strong-passphrase' # quelques opmtimisation et gestion des erreurs info() { printf "\n%s %s\n\n" "$( date )" "$*" >&2; } trap 'echo $( date ) Backup interrupted >&2; exit 2' INT TERM info "Starting backup" # Sauvegarde borg create \ --verbose \ --filter AME \ --list \ --stats \ --show-rc \ --compression lzma \ --exclude-caches \ --exclude 'home/*/.cache/*' \ --exclude 'var/tmp/*' \ \ ::'{hostname-{now}' \ /opt/mailcow-backup backup_exit=$? info "Pruning repository" # Utilisez la sous-commande `prune` pour conserver vos archives quotidiennes et/ou hebdomadaires et/ou mensuelles # de CETTE machine. La correspondance « {hostname}-* » est très importante pour # limiter l'opération de prune aux archives de cette machine et ne pas l'appliquer # aux archives d'autres machines : borg prune \ --list \ --glob-archives '{hostname}-*' \ --show-rc \ --keep-daily 1 \ --keep-weekly 0 \ --keep-monthly 0 \ --keep-yearly 0 prune_exit=$? # Libérer de l'espace disque sur le répertoire en compactant les segments. info "Compacting repository" borg compact compact_exit=$? global_exit=$(( backup_exit > prune_exit ? backup_exit : prune_exit )) global_exit=$(( compact_exit > global_exit ? compact_exit : global_exit )) if [ ${global_exit} -eq 0 ]; then info "Backup, Prune, and Compact finished successfully" elif [ ${global_exit} -eq 1 ]; then info "Backup, Prune, and/or Compact finished with warnings" else info "Backup, Prune, and/or Compact finished with errors" fi exit ${global_exit}