Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
borg [/22092025/ 08:16] – colmaris | borg [/29092025/ 06:22] (Version actuelle) – [Automatisation] colmaris | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
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. | 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. | ||
+ | |||
Ligne 6: | Ligne 7: | ||
Sous debian Borg s' | Sous debian Borg s' | ||
- | < | + | < |
sudo apt install borgbackup | sudo apt install borgbackup | ||
</ | </ | ||
+ | |||
Ligne 17: | Ligne 19: | ||
L' | L' | ||
- | < | + | < |
- | borg init -e repokey ssh://borg@192.168.21.105: | + | borg init -e repokey ssh://draconis@192.168.21.105: |
</ | </ | ||
* < | * < | ||
*< | *< | ||
- | * < | + | * < |
+ | |||
+ | {{ :: | ||
+ | |||
+ | |||
+ | |||
+ | ====== Création de la sauvegarde ====== | ||
+ | |||
+ | Pour chacune de mes sauvegardes j' | ||
+ | |||
+ | Faire un topo sur la rétention des sauvegardes. FIXME //à faire// | ||
+ | |||
+ | <code bash> | ||
+ | # | ||
+ | |||
+ | # | ||
+ | |||
+ | # Adresse du dépôt | ||
+ | export BORG_REPO=' | ||
+ | |||
+ | # Mot de passe du dépôt | ||
+ | export BORG_PASSPHRASE=' | ||
+ | |||
+ | # Chemin vers l' | ||
+ | # non-standard ou si le script s' | ||
+ | # $PATH n'est pas correctement définie) | ||
+ | BORG=/ | ||
+ | |||
+ | # Préparation ================================================================ | ||
+ | |||
+ | # Ici on peut exécuter des commandes pour préparer la sauvegarde, comme par | ||
+ | # exemple faire des dumps des bases de données... | ||
+ | # | ||
+ | # Attention à bien gérer les erreurs ! | ||
+ | |||
+ | # Sauvegarde ================================================================= | ||
+ | |||
+ | $BORG create \ | ||
+ | --verbose \ | ||
+ | --list \ | ||
+ | --stats \ | ||
+ | --show-rc \ | ||
+ | --compression zstd \ | ||
+ | ':: | ||
+ | /root \ | ||
+ | /home \ | ||
+ | /etc \ | ||
+ | /var/www | ||
+ | |||
+ | # Dans la commande "borg create" | ||
+ | # l' | ||
+ | # dans la variable d' | ||
+ | |||
+ | # Je tiens également à attirer votre attention sur le nom de cette archive | ||
+ | # que je préfixe par " | ||
+ | # automatique d' | ||
+ | # sert un peu plus tard... :) | ||
+ | |||
+ | # On récupère le code de retour de la commande précédente. | ||
+ | # 0 = OK, 1 = WARNING, 2 = ERROR | ||
+ | BACKUP_STATUS=$? | ||
+ | |||
+ | # En cas d' | ||
+ | if [[ $BACKUP_STATUS != 0 && $BACKUP_STATUS != 1 ]] ; then | ||
+ | echo " | ||
+ | exit 1 | ||
+ | fi | ||
+ | |||
+ | # NOTE : ici je vérifie explicitement que Borg ne s'est pas terminé avec | ||
+ | # son code de retour OK ou WARNING et pas simplement qu'il s'est terminé par | ||
+ | # ERROR. Il est en effet possible que d' | ||
+ | # retournés, comme par exemple 127, retourné par Bash s'il ne trouve pas la | ||
+ | # commande, ou 137 si le processus de Borg a été tué (sigkill). | ||
+ | |||
+ | # Nettoyage ================================================================== | ||
+ | |||
+ | # On commence par élaguer le dépôt... | ||
+ | |||
+ | $BORG prune \ | ||
+ | --verbose \ | ||
+ | --list \ | ||
+ | --stats \ | ||
+ | --show-rc \ | ||
+ | --glob-archives ' | ||
+ | --keep-daily 7 \ | ||
+ | --keep-weekly 4 \ | ||
+ | --keep-monthly 12 \ | ||
+ | --keep-yearly 3 | ||
+ | |||
+ | # Dans la commande "borg prune" ci-dessus, je lui demande de considérer | ||
+ | # uniquement les sauvegardes dont le nom commence par " | ||
+ | # Cela me permet de faire des sauvegardes manuelles (par exemple en cas de | ||
+ | # grosse mise à jour des sites hébergés) sans que ces sauvegardes manuelles | ||
+ | # ne soient supprimées automatiquement. | ||
+ | |||
+ | PRUNE_STATUS=$? | ||
+ | |||
+ | # En cas d' | ||
+ | if [[ $PRUNE_STATUS != 0 && $PRUNE_STATUS != 1 ]] ; then | ||
+ | echo "Prune failed!" | ||
+ | exit 1 | ||
+ | fi | ||
+ | |||
+ | # ... puis on libère l' | ||
+ | |||
+ | $BORG compact \ | ||
+ | --verbose \ | ||
+ | --show-rc | ||
+ | |||
+ | COMPACT_STATUS=$? | ||
+ | |||
+ | # En cas d' | ||
+ | if [[ $COMPACT_STATUS != 0 && $COMPACT_STATUS != 1 ]] ; then | ||
+ | echo " | ||
+ | exit 1 | ||
+ | fi | ||
+ | |||
+ | # ATTENTION : Si l' | ||
+ | # anciennes archives ne seront pas effectivement supprimées (seulement marquées | ||
+ | # comme tel), et l' | ||
+ | # commande sans le mode append only de temps en temps. | ||
+ | |||
+ | # Finition =============================================================== | ||
+ | |||
+ | # Ici on peut exécuter des commandes pour nettoyer après la sauvegarde. On peut | ||
+ | # par exemple supprimer les dumps de base de données faits avant la sauvegarde. | ||
+ | # | ||
+ | # Attention à bien gérer les erreurs ! | ||
+ | |||
+ | # Reporting ============================================================== | ||
+ | |||
+ | echo " | ||
+ | exit 0 | ||
+ | </ | ||
+ | |||
+ | Sécurisation du script. Aucun accès a part pour le root. | ||
+ | |||
+ | <code bash> | ||
+ | chown root:root / | ||
+ | chmod 700 / | ||
+ | </ | ||
+ | |||
+ | ====== Automatisation ====== | ||
+ | |||
+ | Afin de réaliser cette sauvegarde régulièrement, | ||
+ | |||
+ | <code bash> | ||
+ | 30 23 * * * sh / | ||
+ | </ | ||
+ | |||
+ | ====== Restaurer une sauvegarde ====== | ||
+ | |||
+ | Chez borg on ne parle pas de restauration à proprement parler, mais plutôt d'une extraction de notre sauvegarde. | ||
+ | |||
+ | <code bash> borg extract ssh:// | ||
+ | |||
+ | On peut aussi restaurer uniquement certains éléments. | ||
+ | |||
+ | <code bash> borg extract ssh:// | ||
+ | |||
+ | |||
+ | |||
+ | ====== Commandes utiles ====== | ||
+ | |||
+ | Lister les sauvegardes. | ||
+ | |||
+ | <code bash> borg list ssh:// | ||
+ | |||
+ | Lister le contenu d'un sauvegarde FIXME | ||
+ | |||
+ | |||
+ | <code bash> borg list ssh:// | ||
+ | |||
+ | Obtenir des informations sur une sauvegarde | ||
+ | |||
+ | <code bash> borg info ssh:// |