Outils pour utilisateurs

Outils du site


admin:services:backup

Ceci est une ancienne révision du document !


< retour à la page de l'administration technique

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.

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

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 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 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

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

quigon ~ # 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

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.1462123586.txt.gz · Dernière modification : 2016/05/01 19:26 de zertrin

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki