Outils pour utilisateurs

Outils du site


admin:services:backup-archive20190823

< retour à la page de l'administration technique

Archive de la page “admin:services:backup” au 23/08/2019 pour garder trace des anciens paramétrages de backup.

Actuellement (2018-04-29) il n'y a pas de backups à federez car la solution legacy (obnam) n'a pas été tenue à jour (*) et la solution future (borg) jamais vraiment déployée.

(* donc en gros on sait pas ce qui est sauvegardé et si ça correspond à ce qui doit l'être, de plus, visiblement, quand les backups échouent, il peut se passer plusieurs semaines de multiples email quotidiens sans que personne ne s'en occupe)

En attendant y'en a marre des mails d’échec d'obnam que tout le monde semble ignorer, donc les crons de backups sont désactivés.

N'hésitez pas à reprendre le flambeau, avant la prochaine catastrophe espérons-le…

Concept de sauvegarde

Backupninja sert pour les sauvegardes automatisées locales (/var/backups) :

  • des informations systèmes utiles (dpkg-selections, fstab, lvm…)
  • des dumps des bases de données MySQL

Obnam sert à effectuer la sauvegarde proprement dite vers les serveurs de destination. Il gère l'aspect snapshot et déduplication des données.

Actuellement (2017-06-24) les backups d'obnam de dodecagon vers quigon sont désactivés !

Actuellement, Borg est en cours de déploiement pour remplacer Obnam.

BorgBackup (ou Borg) sert à effectuer la sauvegarde proprement dite vers les serveurs de destination. Il gère un historique des versions des sauvegardes ainsi que la déduplication et la compression des données.


Opérations courantes

La doc concernant la mise en place initiale se situe plus bas.

Faire une sauvegarde

Exemple depuis hexagon vers quigon :

obnam --config /etc/obnam/to_quigon.profile backup

Enlever un lock récalcitrant

Par exemple, un lock de la part d'hexagon vers kdell:

obnam --config /etc/obnam/to_kdell.profile force-lock

force-lock removes a lock file for a client in the repository. You should only force a lock if you are sure no-one is accessing that client's data in the repository. A dangling lock might happen, for example, if obnam loses its network connection to the backup repository.

Mettre à jour la liste des chemins à sauvegarder

Voir la sous-section Contenu des fichiers de config.

 Pensez bien à mettre à jour le contenu des fichiers de config sur le wiki également !

Voir les générations (versions)

Exemple depuis hexagon avec l'archive située sur quigon :

obnam --config /etc/obnam/to_quigon.profile generations

Restaurer des données

Si dessous quelques exemples testés.

Voir aussi la doc officielle : http://code.liw.fi/obnam/manual/obnam-manual.en.html#restoring-from-backups

Restauration depuis le serveur originel

Ce cas se présente lorsque le serveur originel est toujours “ok” mais qu'on veut restaurer des données perdues/modifiées par inadvertance/…

Restauration via montage FUSE

Exemple depuis hexagon avec l'archive située sur quigon :

Création d'un dossier pour le point de montage

mkdir /path/to/restore-fuse-mountpoint

montage de l'archive en tant que système de fichier FUSE

obnam --config /etc/obnam/to_quigon.profile mount --to /path/to/restore-fuse-mountpoint

Montre les générations accessibles pour la restauration

ls -la /path/to/restore-fuse-mountpoint

Restauration du fichier /etc/postfix/main.cf depuis la dernière génération

cp /path/to/restore-fuse-mountpoint/latest/etc/postfix/main.cf /tmp/main.cf.restored

Démonter le système de fichier FUSE

fusermount -u /path/to/restore-fuse-mountpoint

Restauration depuis une machine tierce

Dans le cas où l'on veut restaurer sur une machine X (pas précédemment inclue dans le système des sauvegardes) les données d'une machine A à partir de la sauvegarde effectuée sur la machine B ou C.

  • Il faut installer obnam sur la machine X (merci Captain Obvious !)
  • Il faut au préalable ajouter la clef publique SSH du compte qui sert à effectuer la restauration dans le ~obnam/.ssh/autorized_keys sur la machine B (sinon obnam ne pourra pas se connecter en SFTP au repository).
  • Il suffit ensuite d'utiliser obnam depuis la machine X en précisant
    • l'option --repository=sftp://obnam@machineB.example.org/~/obnam-repository-machineA pour aller chercher les données sur la machine B
    • l'option --client-name=machineA pour restaurer les données de la machine A
    • l'option --no-default-configs pour faire fi de toute éventuelle configuration d'obnam déjà présente sur la machine X

Exemple testé ci-dessous : restauration sur gluon (serveur perso de Zertrin) de données de kdell à partir de la sauvegarde située sur hexagon.

Avec FUSE
  • Ajout de la clef SSH de zertrin@gluon dans ~obnam/.ssh/authorized_keys sur hexagon : exercice laissé au lecteur
  • Lister les générations disponibles (et en même temps vérifier que la connexion fonctionne) :
obnam --no-default-configs --repository=sftp://obnam@hexagon.federez.net/~/obnam-repository-machineA --client-name=kdell generations

output

  • Préparer un point de montage pour le système de fichier FUSE :
mkdir /path/to/obnam_restore_kdell
  • Monter la sauvegarde via obnam avec FUSE :
obnam --no-default-configs --repository=sftp://obnam@hexagon.federez.net/~/obnam-repository-machineA --client-name=kdell mount --to /path/to/obnam_restore_kdell
  • Vérifier qu'on a bien toutes les générations de dispo dans /path/to/obnam_restore_kdell :
ls -la /path/to/obnam_restore_kdell

output

  • Voir le contenu de la génération 42 :
ls -la /path/to/obnam_restore_kdell/42
  • Voir le contenu de la dernière génération (latest) :
ls -laH /path/to/obnam_restore_kdell/latest

output

  • Restaurer le fichier /etc/postfix/main.cf (par exemple) de la génération 42 :
cp /path/to/obnam_restore_kdell/42/etc/postfix/main.cf /path/to/destination/main.cf.restored
  • Démonter la sauvegarde :
fusermount -u /path/to/obnam_restore_kdell

Installation initiale de backupninja

Backupninja sert à créer des backups des informations système ainsi que de la base de donnée MySQL automatiquement.

Pour info, les backups créés par backupninja sont stockés dans /var/backups. Ce dossier est inclus dans la sauvegarde d'obnam ce qui permet d'externaliser les backups effectués par backupninja.

apt-get install hwinfo debconf-utils backupninja

Désactiver l'envoi de mails en cas de succès : dans /etc/backupninja.conf mettre/changer reportsuccess = no.

Activer les backups des infos systèmes (:!: mettre lvm = no pour les systèmes sans LVM comme quigon)

Ajouter le fichier /etc/backup.d/10.sys

Activer les backups pour la base de donnée MySQL (:!: uniquement sur hexagon)

Ajouter le fichier /etc/backup.d/20.mysql

Tester avec

sudo backupninja -t -n

Mise en place initiale de BorgBackup (ou Borg)

Prérequis

  • Serveur de départ : borg
  • Serveur d'arrivée : accessible en SSH. Un utilisateur dédié borg et son home accessible en SSH par l'utilisateur qui exécute borg sur le serveur de départ (typiquement root) devra être créé (cf. ci-dessous)

  Exemple avec dodecagon, mais la procédure est la même pour chaque serveur.

Installation de Borg

Borg n'est disponible que via les backports pour jessie, on s'assurera donc que la ligne suivante est présente dans /etc/apt/source.list :

deb http://http.debian.net/debian jessie-backports main

Ensuite, on l'installe avec :

  apt update
  apt install -t jessie-backports borgbackup

Configuration de borg

Initialisation du répertoire /etc/borg-wrapper :

dodecagon ~ # mkdir /etc/borg-wrapper
dodecagon ~ # touch /etc/borg-wrapper/common.conf
dodecagon ~ # touch /etc/borg-wrapper/{kdell.conf,quigon.conf}

Les deux fichiers doivent être des fichiers bash valides.

  • Le premier fichier (/etc/borg-wrapper/common.conf) contiennent la configuration liée au serveur source qui envoie ses données. On y trouve notamment la liste des chemins à inclure et ceux à exclure.
  • Les autres fichiers (/etc/borg-wrapper/{kdell.conf,quigon.conf}) servent juste à indiquer le dépôt de sauvegarde sur les deux autres serveurs.

config pour dodecagon (2017-05-08 18:33)

Préparatifs sur un serveur de destination

  Opérations effectuées en root. Vous pouvez aussi le faire avec sudo (pas sudo -E) si vous préférez.

  Exemple ici avec kdell comme serveur de destination, à répéter pour chaque serveur de destination en adaptant les noms de serveurs.

Ajout de l'utilisateur borg:

  Pour kdell on place le $HOME de borg dans /backup/borg pour profiter de la partition dédiée aux backups.

kdell ~ # adduser --system --group --disabled-password --shell /bin/sh --home /backup/borg borg

On prépare le fichier .ssh/authorized_keys pour permettre la connexion par clef publique depuis les autres serveurs.

kdell ~ # cd ~borg
kdell ~borg # sudo -u borg mkdir .ssh
kdell ~borg # sudo -u borg touch .ssh/authorized_keys
kdell ~borg # chmod 600 .ssh/authorized_keys
kdell ~borg # vim .ssh/authorized_keys # ajouter les clefs publiques de root@hexagon et root@kdell

On teste si la connexion sans mot de passe fonctionne depuis le serveur de départ (ici exemple avec dodecagon) et on en profite pour créer le dossier pour la sauvegarde (si pas déjà fait).

  ssh borg@kdell.federez.net mkdir dodecagon

Il faut ensuite créer le dépôt :

  . /etc/borg-wrapper/common.conf
  . /etc/borg-wrapper/kdell.conf
  borg init --debug --encryption=none "${REMOTE}"

Mise en place initiale d'obnam

Prérequis

  • Serveur de départ : obnam
  • Serveur d'arrivée : accessible en SFTP. Un utilisateur dédié obnam et son home accessible en SFTP par l'utilisateur qui exécute obnam sur le serveur de départ (typiquement root) devra être créé (cf. ci-dessous)

  Exemple avec hexagon, mais la procédure est la même pour chaque serveur.

Installation d'obnam

Utilisation des dépôts jessie-backports pour avoir une version assez récente. Dans /etc/apt/source.list ajouter (si nécessaire) :

deb http://http.debian.net/debian jessie-backports main

Puis apt-get update et avec l'aide d' aptitude par exemple choisir la version d'obnam provenant des backports.

Préparatifs sur un serveur de destination

  Opérations effectuées en root. Vous pouvez aussi le faire avec sudo si vous préférez.

  Exemple ici avec quigon comme serveur de destination, à répéter pour chaque serveur de destination en adaptant les noms de serveurs.

Ajout de l'utilisateur obnam:

  Pour dodecagon on place le $HOME d'obnam dans /data/obnam pour profiter de la partition dédiée à obnam

dodecagon ~ # adduser --system --group --disabled-password --shell /usr/lib/sftp-server --home /data/obnam obnam

  Pour hexagon on place le $HOME d'obnam dans /home/obnam pour profiter de la grosse partition où se trouve /home

hexagon ~ # adduser --system --group --disabled-password --shell /usr/lib/sftp-server --home /home/obnam obnam

  Pour kdell on place le $HOME d'obnam dans /backup/obnam pour profiter de la partition dédiée aux backups

kdell~ # adduser --system --group --disabled-password --shell /usr/lib/sftp-server --home /backup/obnam obnam

  Pour quigon on place le $HOME d'obnam dans /data/obnam pour profiter de la grosse partition où se trouve /data

quigon ~ # adduser --system --group --disabled-password --shell /usr/lib/sftp-server --home /data/obnam obnam

On prépare le fichier .ssh/authorized_keys pour permettre la connexion par clef publique depuis les autres serveurs.

quigon ~ # cd ~obnam
quigon ~obnam # sudo -u obnam mkdir .ssh
quigon ~obnam # sudo -u obnam touch .ssh/authorized_keys
quigon ~obnam # chmod 600 .ssh/authorized_keys
quigon ~obnam # vim .ssh/authorized_keys # ajouter les clefs publiques de root@hexagon et root@kdell

On teste si la connexion sans mot de passe fonctionne depuis le serveur de départ (ici exemple avec hexagon) et on en profite pour créer le repository pour la sauvegarde (si pas déjà fait).

hexagon ~ # sftp obnam@quigon.federez.net
sftp> mkdir obnam-repository-hexagon
sftp> ^D

Configuration d'obnam

Initialisation du répertoire /etc/obnam :

hexagon ~ # mkdir /etc/obnam && cd /etc/obnam
hexagon obnam # touch obnam_hexagon.conf
hexagon obnam # touch to_kdell.profile
hexagon obnam # touch to_quigon.profile

Contenu des fichiers de config

  • Le premier fichier (obnam_<servername>.conf) correspond à la conf spécifique au serveur qui crée et envoie ses sauvegardes. On y trouve notamment la liste des chemins à inclure et ceux à exclure.
  • Les deux fichiers suivants (to_<servername>.profile) servent juste à pointer vers le dépôt de sauvegarde sur les deux autres serveurs.

Attention pour les options root et exclude : le dernier élément ne doit pas se terminer avec une virgule !

config pour hexagon (2016-05-01 15:40)

config pour quigon (2016-05-01 15:40)

config pour kdell (2016-05-01 15:40)

Test première sauvegarde

Exemple depuis hexagon vers quigon:

obnam --config /etc/obnam/to_quigon.profile backup

Purger les vieilles générations selon une politique donnée

L'option keep = 20h,30d,52w,10y dans le fichier de config correspond à la politique suivante :

  • garder les 20 dernières générations horaires (comme le script est lancé toutes les 4 heures, ca fait garder les générations horaires pour un peu plus de 3 jours (20*4 = 80 heures))
  • garder les 30 dernières générations journalières
  • garder les 52 dernières générations hebdomadaires
  • garder les 10 dernières générations annuelles

En appelant la commande suivante une fois par jour, les générations qui sont superflues sont supprimées de l'archive.

Exemple depuis hexagon avec l'archive située sur quigon :

obnam --config /etc/obnam/to_quigon.profile forget

Mise en place des cron pour obnam

Les crons se trouvent dans /etc/cron.d/obnam-backup et /etc/cron.d/obnam-forget

Les /etc/cron.d/obnam-backup sur les 3 serveurs

Les /etc/cron.d/obnam-forget sur les 3 serveurs

                                       . . . 0 . . .
                                   55                  5
                                 .           +           .
                               .             |             .
                             .               |               .
                           50                |                 10
 H <- K <- Q              .                  |
 +         ^             .                   |                   .
 | backup  | +-----+     .                   |                   .           H -> K -> Q
 +---------+       |                         |                   .           ^         +
toutes les 4h      |    45  +----------------------------------+ 15   +----+ | forget  |
 de 3h à 23h       |     .                   |                   .    |      +---------+
                   |     .                   |                   .    |    seulement à 0h25
                   |     .                   |                   .    |
                   |                         |                        |
                   +----> 40                 |                 20     |
                             .               |               .        |
 H -> K -> Q                   .             |             .          |
 ^         +                     .           +           .            |      H <- K <- Q
 | backup  | +------------------> 35                   25 <-----------+      +         ^
 +---------+                           . . . 30 . . .                    +-+ | forget  |
toutes les 4h                                ^                           |   +---------+
 de 1h à 21h                                 +---------------------------+ seulement à 2h30

Duplicity

Le système de sauvegarde utilisant duplicity avec le wrapper duplicity-backup.sh a été migré vers une nouvelle solution utilisant obnam. (Zertrin 2016-02-14 23:15)

Page concernant les backups avec duplicity est archivée ici : admin:services:backup-duplicity

admin/services/backup-archive20190823.txt · Dernière modification : 2019/08/23 13:01 de herve

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki