< 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…
Backupninja sert pour les sauvegardes automatisées locales (/var/backups
) :
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.
La doc concernant la mise en place initiale se situe plus bas.
Exemple depuis hexagon vers quigon :
obnam --config /etc/obnam/to_quigon.profile backup
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.
Voir la sous-section Contenu des fichiers de config.
Pensez bien à mettre à jour le contenu des fichiers de config sur le wiki également !
Exemple depuis hexagon avec l'archive située sur quigon :
obnam --config /etc/obnam/to_quigon.profile generations
Si dessous quelques exemples testés.
Voir aussi la doc officielle : http://code.liw.fi/obnam/manual/obnam-manual.en.html#restoring-from-backups
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/…
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
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.
obnam
sur la machine X (merci Captain Obvious !)~obnam/.ssh/autorized_keys
sur la machine B (sinon obnam ne pourra pas se connecter en SFTP au repository).--repository=sftp://obnam@machineB.example.org/~/obnam-repository-machineA
pour aller chercher les données sur la machine B--client-name=machineA
pour restaurer les données de la machine A--no-default-configs
pour faire fi de toute éventuelle configuration d'obnam déjà présente sur la machine XExemple testé ci-dessous : restauration sur gluon (serveur perso de Zertrin) de données de kdell à partir de la sauvegarde située sur hexagon.
zertrin@gluon
dans ~obnam/.ssh/authorized_keys
sur hexagon : exercice laissé au lecteurobnam --no-default-configs --repository=sftp://obnam@hexagon.federez.net/~/obnam-repository-machineA --client-name=kdell generations
mkdir /path/to/obnam_restore_kdell
obnam --no-default-configs --repository=sftp://obnam@hexagon.federez.net/~/obnam-repository-machineA --client-name=kdell mount --to /path/to/obnam_restore_kdell
/path/to/obnam_restore_kdell
:ls -la /path/to/obnam_restore_kdell
ls -la /path/to/obnam_restore_kdell/42
latest
) :ls -laH /path/to/obnam_restore_kdell/latest
/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
fusermount -u /path/to/obnam_restore_kdell
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
borg
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.
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
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.
/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./etc/borg-wrapper/{kdell.conf,quigon.conf}
) servent juste à indiquer le dépôt de sauvegarde sur les deux autres serveurs.
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}"
obnam
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.
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.
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
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
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.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)
Exemple depuis hexagon vers quigon:
obnam --config /etc/obnam/to_quigon.profile backup
L'option keep = 20h,30d,52w,10y
dans le fichier de config correspond à la politique suivante :
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
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
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