Outils pour utilisateurs

Outils du site


admin:services:backup

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
admin:services:backup [2019/08/23 12:56] – ↷ Nom de la page changé de admin:services:backup-archive20190823 à admin:services:backup herveadmin:services:backup [2020/05/11 01:01] (Version actuelle) toadjaune
Ligne 1: Ligne 1:
 [[:admin|< retour à la page de l'administration technique]] [[:admin|< retour à la page de l'administration technique]]
  
-<WRAP center round alert 60%> +<WRAP center round info 60%> 
-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.+L'ancienne page sur les backups est disponible ici : [[admin:services:backup-archive20190823|admin:services:backup-archive20190823]] 
 +</WRAP>
  
-(* 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.+<WRAP center round todo 60%> 
 +En cours de rédaction et mise en place. 
 +PoC : herve & toadjaune 
 +</WRAP>
  
-N'hésitez pas à reprendre le flambeau, avant la prochaine catastrophe espérons-le...+<WRAP center round important 60%> 
 +Backup en cours de mise en place. 
 +Machines concernées : toutes 
 +Priorité donnée à dodecagon
 </WRAP> </WRAP>
  
 +===== Motivation =====
  
-===== Concept de sauvegarde =====+FedeRez est une asso étudiante, dans laquelle, comme pour la plupart des assos de réseau étudiantes (si ce n'est plus), les ressources humaines peuvent fluctuer considérablement au cours du temps, parfois avec pas ou peu de passations de savoir.
  
-**Backupninja** sert pour les sauvegardes automatisées locales (''/var/backups'') :+Les infrastructures et services que nous mettons en place doivent donc chercher à être aussi robustes que possible.
  
-  * des informations systèmes utiles (dpkg-selectionsfstablvm...) +Mais pas robustes au sens haute disponibilitéfailoveretc ; plutôt au sens de disaster recovery.
-  * 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.+Ce qu'on veut, ce n'est pas une infra qui ne tombe jamais, c'est une infra qu'on a les capacités de réparer quand elle tombe.
  
-<wrap important>Actuellement (2017-06-24) les backups d'obnam de dodecagon vers quigon sont désactivés !</wrap>+Ça implique plusieurs choses :
  
-Actuellement, Borg est en cours de déploiement pour remplacer Obnam.+* KISS 
 +* Bonne documentation 
 +* Backups solides
  
-**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.+Le choix de Borg + ansible me semble un bon compromis à ce niveau : pas de spof, pas de système compliqué de clustering, une seule techno assez simple d'utilisation partout, versatilité importante (se balader dans un backup en fuse, etc...)
  
-----+Aucune objection à en plus mettre d'autres types de backups tels que des snapshots de vm, c'est incontestablement plus simple d'utilisation dans les cas où c'est applicable, etc. Mais c'est plus limité en scope (proxmox vs hosting chez un tiers) et en résilience (c'est plus la même version de xxxx du coup le snapshot est plus compatible, ah mais on peut pas la restaurer là parce que pas la bonne conf réseau, etc)
  
-===== Opérations courantes ===== 
  
-<wrap info>La doc concernant la mise en place initiale se situe plus bas.</wrap>+===== Fonctionnement de la solution =====
  
-==== Faire une sauvegarde ====+**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. Son installation et sa configuration sont gérés via ansible.
  
-Exemple depuis hexagon vers quigon :+**Backupninja** sert pour les sauvegardes automatisées locales (''/var/backups'':
  
-<code>obnam --config /etc/obnam/to_quigon.profile backup</code>+  * des informations systèmes utiles (dpkg-selections, fstab, lvm...) 
 +  * des dumps des bases de données MySQL 
 +Backupninja est installé et configuré manuellement là où il est utilisé.
  
-==== Enlever un lock récalcitrant ====+===== Serveurs de sauvegarde =====
  
-Par exempleun lock de la part d'hexagon vers kdell:+Actuellement2 serveurs sont destination des sauvegardes réalisées par Borg : 
 +  * [[admin:serveurs:memoragon|memoragon]] (LXC non privilégié sur [[admin:serveurs:ronderu|ronderu]]) 
 +  * [[admin:serveurs:coronagon|coronagon]] (KVM hébergé au Résel)
  
-<code>obnam --config /etc/obnam/to_kdell.profile force-lock</code>+----
  
-<wrap lo>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.**</wrap> +===== Opérations courantes =====
-==== Mettre à jour la liste des chemins à sauvegarder ====+
  
-Voir la sous-section [[admin:services:backup#configuration-d-obnam|Contenu des fichiers de config]].+<WRAP center round tip 60%> 
 +La doc concernant la mise en place initiale se situe plus bas. 
 +</WRAP>
  
-<wrap tip></wrap>(nbsp)Pensez bien à mettre à jour le contenu des fichiers de config sur le wiki également ! 
  
 +==== Faire une sauvegarde ====
  
-==== Voir les générations (versions) ====+Cette opération n'est normalement pas requise, un cron s'en charge. 
 +On peut néanmoins lancer manuellement un backup en exécutant le script `/etc/borg/system.sh` sur le système que l'on veut sauvegarder.
  
-Exemple depuis hexagon avec l'archive située sur quigon :+==== Mettre à jour la liste des chemins à sauvegarder ====
  
-<code>obnam --config /etc/obnam/to_quigon.profile generations</code>+La configuration a lieu dans [[https://gitlab.federez.net/federez/ansible|le repo ansible]].
  
-==== Restaurer des données ====+La plupart des hôtes utilisent la configuration commune, définie dans [[https://gitlab.federez.net/federez/ansible/-/blob/master/inventory/group_vars/all/vars.yml|inventory/group_vars/all/vars.yml]], mais il est possible de surcharger cette configuration par hôte ou par machine dans ''inventory/group_vars'' ou dans ''inventory/host_vars''.
  
-Si dessous quelques exemples testés.+Redéployer le playbook après changement.
  
-Voir aussi la doc officielle : http://code.liw.fi/obnam/manual/obnam-manual.en.html#restoring-from-backups+==== Manipuler les backups (listing, restauration, etc) ====
  
-=== Restauration depuis le serveur originel ===+TODO
  
-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/...+Les commandes suivantes peuvent indifféremment être effectuées sur :
  
-== Restauration via montage FUSE ==+* La machine dont on cherche à manipuler les backups 
 +* Un des serveurs de backup
  
-Exemple depuis hexagon avec l'archive située sur quigon :+Commencer par configurer les variables d'environnement suivantes :
  
-Création d'un dossier pour le point de montage 
- 
-<code>mkdir /path/to/restore-fuse-mountpoint</code> 
- 
-montage de l'archive en tant que système de fichier FUSE 
- 
-<code>obnam --config /etc/obnam/to_quigon.profile mount --to /path/to/restore-fuse-mountpoint</code> 
- 
-Montre les générations accessibles pour la restauration 
- 
-<code>ls -la /path/to/restore-fuse-mountpoint</code> 
- 
-Restauration du fichier /etc/postfix/main.cf depuis la dernière génération 
- 
-<code>cp /path/to/restore-fuse-mountpoint/latest/etc/postfix/main.cf /tmp/main.cf.restored</code> 
- 
-Démonter le système de fichier FUSE 
- 
-<code>fusermount -u /path/to/restore-fuse-mountpoint</code> 
- 
-=== 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) : 
- 
-<code>obnam --no-default-configs --repository=sftp://obnam@hexagon.federez.net/~/obnam-repository-machineA --client-name=kdell generations</code> 
- 
-++++ output | 
 <code> <code>
-2       2016-02-14 22:46:03 .. 2016-02-14 22:57:24 (9013 files, 42206636 bytes) +export BORG_RSH="ssh -i /root/.ssh/id_ed25519-backup" 
-23      2016-02-14 23:34:11 .. 2016-02-14 23:36:00 (9018 files, 58471331 bytes) +export BORG_PASSPHRASE="COMMON_SECRET_TO_REPLACE" # Présent dans le repo ansible ou dans /etc/borg/system.sh sur les systèmes backupés 
-65      2016-02-15 00:33:38 .. 2016-02-15 00:34:21 (9209 files, 81373094 bytes) +export REPOSITORY="borgbackup@memoragon.federez.net:system" # Remplacer memoragon si vous voulez accéder aux backups stockés sur coronagon
-87      2016-02-15 01:28:28 .. 2016-02-15 01:29:04 (9147 files, 75389186 bytes) +
-108     2016-02-15 23:45:34 .. 2016-02-15 23:46:41 (9149 files, 75545016 bytes) +
-129     2016-02-16 01:40:25 .. 2016-02-16 01:41:06 (9149 files, 75617687 bytes) +
-150     2016-02-16 03:40:22 .. 2016-02-16 03:40:42 (9149 files, 75617687 bytes) +
-171     2016-02-16 05:40:21 .. 2016-02-16 05:40:45 (9149 files, 75681743 bytes) +
-192     2016-02-16 07:40:24 .. 2016-02-16 07:40:44 (9149 files, 75686602 bytes) +
-213     2016-02-16 09:40:22 .. 2016-02-16 09:40:43 (9149 files, 75687464 bytes) +
-234     2016-02-16 11:40:29 .. 2016-02-16 11:40:49 (9149 files, 75687464 bytes) +
-255     2016-02-16 13:40:24 .. 2016-02-16 13:40:46 (9149 files, 75687464 bytes) +
-276     2016-02-16 15:40:23 .. 2016-02-16 15:40:47 (9149 files, 75687654 bytes) +
-297     2016-02-16 17:40:30 .. 2016-02-16 17:40:55 (9149 files, 75687654 bytes) +
-318     2016-02-16 19:40:49 .. 2016-02-16 19:41:23 (9149 files, 75687325 bytes)+
 </code> </code>
-++++ 
  
-  * Préparer un point de montage pour le système de fichier FUSE :+Il est notamment possible de :
  
-<code>mkdir /path/to/obnam_restore_kdell</code>+* lister les backups 
 +* Faire une archive tar à partir d'un backup 
 +* Monter l'archive localement via fuse et lire son contenu avec n'importe quel outil
  
-  * Monter la sauvegarde via obnam avec FUSE :+Se référer à la documentation de borg pour les syntaxes exactes.
  
-<code>obnam --no-default-configs --repository=sftp://obnam@hexagon.federez.net/~/obnam-repository-machineA --client-name=kdell mount --to /path/to/obnam_restore_kdell</code> 
- 
-  * Vérifier qu'on a bien toutes les générations de dispo dans ''/path/to/obnam_restore_kdell'' : 
- 
-<code>ls -la /path/to/obnam_restore_kdell</code> 
- 
-++++ output | 
-<code> 
-total 68 
-drwxr-xr-x 25 root root 4096 Feb 15 23:46 108 
-drwxr-xr-x 25 root root 4096 Feb 16 01:41 129 
-drwxr-xr-x 25 root root 4096 Feb 16 03:40 150 
-drwxr-xr-x 25 root root 4096 Feb 16 05:40 171 
-drwxr-xr-x 25 root root 4096 Feb 16 07:40 192 
-drwxr-xr-x 25 root root 4096 Feb 14 22:57 2 
-drwxr-xr-x 25 root root 4096 Feb 16 09:40 213 
-drwxr-xr-x 25 root root 4096 Feb 14 23:36 23 
-drwxr-xr-x 25 root root 4096 Feb 16 11:40 234 
-drwxr-xr-x 25 root root 4096 Feb 16 13:40 255 
-drwxr-xr-x 25 root root 4096 Feb 16 15:40 276 
-drwxr-xr-x 25 root root 4096 Feb 16 17:40 297 
-drwxr-xr-x 25 root root 4096 Feb 16 19:41 318 
-drwxr-xr-x 25 root root 4096 Feb 15 00:34 65 
-drwxr-xr-x 25 root root 4096 Feb 15 01:29 87 
-lrwxr-xr-x 25 root root 4096 Feb 16 19:41 latest -> 318 
--r--r--r-- 25 root root 4096 Feb 16 19:41 .pid 
-</code> 
-++++ 
- 
-  * Voir le contenu de la génération 42 : 
- 
-<code>ls -la /path/to/obnam_restore_kdell/42</code> 
- 
-  * Voir le contenu de la dernière génération (''latest'') : 
- 
-<code>ls -laH /path/to/obnam_restore_kdell/latest</code> 
- 
-++++ output | 
-<code> 
-total 28 
-drwxr-xr-x   6 root root  4096 Feb 14 17:51 data 
-drwxr-xr-x 112 root root 12288 Feb 16 17:53 etc 
-drwxr-xr-x  24 root root  4096 Dec 21 17:16 home 
-drwx------  17 root root  4096 Feb 16 14:06 root 
-drwxr-xr-x  14 root root  4096 Feb 14 17:51 var 
-</code> 
-++++ 
- 
-  * Restaurer le fichier ''/etc/postfix/main.cf'' (par exemple) de la génération 42 : 
- 
-<code>cp /path/to/obnam_restore_kdell/42/etc/postfix/main.cf /path/to/destination/main.cf.restored</code> 
- 
-  * Démonter la sauvegarde : 
- 
-<code>fusermount -u /path/to/obnam_restore_kdell</code> 
- 
----- 
  
 ===== Installation initiale de backupninja ===== ===== Installation initiale de backupninja =====
Ligne 282: Ligne 187:
 ===== Mise en place initiale de BorgBackup (ou Borg) ===== ===== Mise en place initiale de BorgBackup (ou Borg) =====
  
-==== Prérequis ==== +Aucune mise en place initiale n'est requise.
-  * 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éé (cfci-dessous)+
  
-<wrap info></wrap>(nbsp) Exemple avec dodecagon, mais la procédure est la même pour chaque serveur. +Le rôle ansible déployant la configuration est capable d'installer intégralement un serveur de backup, seul un accès ssh est requis.
- +
-==== 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''+
- +
-<code>deb http://http.debian.net/debian jessie-backports main</code> +
- +
-Ensuite, on l'installe avec : +
-    apt update +
-    apt install -t jessie-backports borgbackup +
- +
-==== Configuration de borg ==== +
- +
-Initialisation du répertoire ''/etc/borg-wrapper''+
- +
-<code> +
-dodecagon ~ # mkdir /etc/borg-wrapper +
-dodecagon ~ # touch /etc/borg-wrapper/common.conf +
-dodecagon ~ # touch /etc/borg-wrapper/{kdell.conf,quigon.conf} +
-</code> +
- +
-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) | +
-<file bash common.conf> +
-# Common configuration for backups from dodecagon to any other server +
- +
-# This file is sourced by borg-wrapper.sh, and must be valid bash script. +
- +
-BORG_USER='borg' +
- +
-# INCLUDE and EXCLUDE are indexed arrays in bash. +
-INCLUDE=( +
- '/etc' +
- '/home' +
- '/root' +
- '/var/backups' +
- '/var/lib/ldap' +
- '/srv' +
-+
-EXCLUDE=( +
- '.*/obnam-repository$' +
- '.*/obnam-repository-*' +
- '.*/\.cache' +
- '/root/.local/share/letsencrypt' +
- '/srv/ftp' +
-+
- +
-# Only clean old backups when CLEAN_OLD_BACKUPS is exported from parent +
-# CLEAN_OLD_BACKUPS='true' +
- +
-# 1 month daily, half a year weekly, 3 year monthly +
-CLEANUP_POLICY=("--keep-daily=30" "--keep-weekly=26" "--keep-monthly=36"+
-</file> +
- +
-<file bash kdell.conf> +
-# Configuration for backups from dodecagon to kdell +
- +
-# This file is sourced by borg-wrapper.sh, and must be valid bash script. +
- +
-REMOTE="${BORG_USER}@kdell.federez.net:~borg/dodecagon" +
-</file> +
- +
-<file bash quigon.conf> +
-# Configuration for backups from dodecagon to quigon +
- +
-# This file is sourced by borg-wrapper.sh, and must be valid bash script. +
- +
-REMOTE="${BORG_USER}@quigon.federez.net:~borg/dodecagon" +
-</file> +
- +
-++++ +
- +
- +
-==== Préparatifs sur un serveur de destination ==== +
- +
-<wrap info></wrap>(nbsp) Opérations effectuées en ''root''. Vous pouvez aussi le faire avec ''sudo'' (pas ''sudo -E'') si vous préférez. +
- +
-<wrap info></wrap>(nbsp) 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'': +
- +
-<wrap tip></wrap>(nbsp) Pour **kdell** on place le $HOME de borg dans ''/backup/borg'' pour profiter de la partition dédiée aux backups. +
- +
-<code> +
-kdell ~ # adduser --system --group --disabled-password --shell /bin/sh --home /backup/borg borg +
-</code> +
- +
- +
- +
-On prépare le fichier ''.ssh/authorized_keys'' pour permettre la connexion par clef publique depuis les autres serveurs. +
- +
-<code> +
-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 +
-</code> +
- +
-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) +
- +
-<wrap info></wrap>(nbsp) Exemple avec hexagonmais 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) : +
- +
-<code>deb http://http.debian.net/debian jessie-backports main</code> +
- +
-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 ==== +
- +
-<wrap info></wrap>(nbsp) Opérations effectuées en ''root''. Vous pouvez aussi le faire avec ''sudo'' si vous préférez. +
- +
-<wrap info></wrap>(nbsp) 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'': +
- +
-<wrap tip></wrap>(nbsp) Pour **dodecagon** on place le $HOME d'obnam dans ''/data/obnam'' pour profiter de la partition dédiée à obnam +
- +
-<code> +
-dodecagon ~ # adduser --system --group --disabled-password --shell /usr/lib/sftp-server --home /data/obnam obnam +
-</code> +
- +
-<wrap tip></wrap>(nbsp) Pour **hexagon** on place le $HOME d'obnam dans ''/home/obnam'' pour profiter de la grosse partition où se trouve ''/home'' +
- +
-<code> +
-hexagon ~ # adduser --system --group --disabled-password --shell /usr/lib/sftp-server --home /home/obnam obnam +
-</code> +
- +
-<wrap tip></wrap>(nbsp) Pour **kdell** on place le $HOME d'obnam dans ''/backup/obnam'' pour profiter de la partition dédiée aux backups +
- +
-<code> +
-kdell~ # adduser --system --group --disabled-password --shell /usr/lib/sftp-server --home /backup/obnam obnam +
-</code> +
- +
-<wrap tip></wrap>(nbsp) Pour **quigon** on place le $HOME d'obnam dans ''/data/obnam'' pour profiter de la grosse partition où se trouve ''/data'' +
- +
-<code> +
-quigon ~ # adduser --system --group --disabled-password --shell /usr/lib/sftp-server --home /data/obnam obnam +
-</code> +
- +
-On prépare le fichier ''.ssh/authorized_keys'' pour permettre la connexion par clef publique depuis les autres serveurs. +
- +
-<code> +
-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 +
-</code> +
- +
-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). +
- +
-<code> +
-hexagon ~ # sftp obnam@quigon.federez.net +
-sftp> mkdir obnam-repository-hexagon +
-sftp> ^D +
-</code> +
- +
-==== Configuration d'obnam ==== +
- +
-Initialisation du répertoire ''/etc/obnam''+
- +
-<code> +
-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 +
-</code> +
- +
-=== 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. +
- +
-<wrap important>Attention pour les options ''root'' et ''exclude'' : le dernier élément ne doit **pas** se terminer avec une virgule !</wrap> +
- +
-++++ config pour hexagon (2016-05-01 15:40) | +
-<file ini obnam_hexagon.conf> +
-[config] +
-client-name = hexagon +
-root = /etc, +
-       /home, +
-       /root, +
-       /var/backups, +
-       /var/lib/ldap, +
-       /var/lib/mailman +
-exclude = .*/obnam-repository$, +
-  .*/obnam-repository-*, +
-  .*/\.cache, +
-  /home/duplicity, +
-  /home/ftp, +
-  /root/.local/share/letsencrypt, +
-  /srv/ftp +
-log = /var/log/obnam.log +
-log-level = info +
-log-max = 10000000 +
-log-keep = 10 +
-log-mode = 0600 +
-one-file-system = yes +
-keep = 20h,30d,52w,10y +
-upload-queue-size = 512 +
-lru-size = 1024 +
-lock-timeout = 900 +
-</file> +
- +
-<file ini to_kdell.profile> +
-[config] +
-repository = sftp://obnam@kdell.federez.net/~/obnam-repository-hexagon +
-</file> +
- +
-<file ini to_quigon.profile> +
-[config] +
-repository = sftp://obnam@quigon.federez.net/~/obnam-repository-hexagon +
-</file> +
-++++ +
- +
-++++ config pour quigon (2016-05-01 15:40) | +
-<file ini obnam_quigon.conf> +
-[config] +
-client-name = quigon +
-root = /etc, +
-       /home, +
-       /root, +
-       /srv/dokuwiki, +
-       /var/backups, +
-       /var/lib/ldap, +
-       /var/lib/mailman +
-exclude = .*/obnam-repository$, +
-  .*/obnam-repository-*, +
-  .*/\.cache$, +
-  /home/backup_cyric, +
-  /home/backup_quigon, +
-  /home/kage/Federez, +
-  /home/zertrin/restore-nautilus, +
-  /root/.local/share/letsencrypt, +
-log = /var/log/obnam.log +
-log-level = info +
-log-max = 1000000 +
-log-keep = 10 +
-log-mode = 0600 +
-one-file-system = yes +
-keep = 20h,30d,52w,10y +
-upload-queue-size = 512 +
-lru-size = 1024 +
-lock-timeout = 900 +
-</file> +
- +
-<file ini to_kdell.profile> +
-[config] +
-repository = sftp://obnam@kdell.federez.net/~/obnam-repository-quigon +
-</file> +
- +
-<file ini to_hexagon.profile> +
-[config] +
-repository = sftp://obnam@hexagon.federez.net/~/obnam-repository-quigon +
-</file> +
-++++ +
- +
-++++ config pour kdell (2016-05-01 15:40) | +
-<file ini obnam_kdell.conf> +
-[config] +
-client-name = kdell +
-root = /etc, +
-       /home, +
-       /root, +
-       /var/backups +
-exclude = .*/obnam-repository$, +
-  .*/\.cache$, +
-  /root/.local/share/letsencrypt, +
-log = /var/log/obnam.log +
-log-level = info +
-log-max = 1000000 +
-log-keep = 10 +
-log-mode = 0600 +
-one-file-system = yes +
-keep = 20h,30d,52w,10y +
-upload-queue-size = 512 +
-lru-size = 1024 +
-lock-timeout = 900 +
-</file> +
- +
-<file ini to_hexagon.profile> +
-[config] +
-repository = sftp://obnam@hexagon.federez.net/~/obnam-repository-kdell +
-</file> +
- +
-<file ini to_quigon.profile> +
-[config] +
-repository = sftp://obnam@quigon.federez.net/~/obnam-repository-kdell +
-</file> +
-++++ +
- +
-==== Test première sauvegarde ==== +
- +
-Exemple depuis hexagon vers quigon: +
- +
-<code>obnam --config /etc/obnam/to_quigon.profile backup</code> +
- +
-==== 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 : +
- +
-<code>obnam --config /etc/obnam/to_quigon.profile forget</code> +
- +
-==== 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 | +
- +
-**hexagon** +
-<file text /etc/cron.d/obnam-backup> +
-PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +
-35 1-21/4 * * * root obnam --config /etc/obnam/to_kdell.profile backup 1>/dev/null +
-40 3-23/4 * * * root obnam --config /etc/obnam/to_quigon.profile backup 1>/dev/null +
-</file> +
- +
-**quigon** +
-<file text /etc/cron.d/obnam-backup> +
-PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +
-35 1-21/4 * * * root obnam --config /etc/obnam/to_hexagon.profile backup 1>/dev/null +
-40 3-23/4 * * * root obnam --config /etc/obnam/to_kdell.profile backup 1>/dev/null +
-</file> +
- +
-**kdell** +
-<file text /etc/cron.d/obnam-backup> +
-PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +
-35 1-21/4 * * * root obnam --config /etc/obnam/to_quigon.profile backup 1>/dev/null +
-40 3-23/4 * * * root obnam --config /etc/obnam/to_hexagon.profile backup 1>/dev/null +
-</file> +
- +
-++++ +
- +
- +
-++++ Les /etc/cron.d/obnam-forget sur les 3 serveurs | +
- +
-**hexagon** +
-<file text /etc/cron.d/obnam-forget> +
-PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +
-25 0 * * * root obnam --config /etc/obnam/to_kdell.profile forget 1>/dev/null +
-30 2 * * * root obnam --config /etc/obnam/to_quigon.profile forget 1>/dev/null +
-</file> +
- +
-**quigon** +
-<file text /etc/cron.d/obnam-forget> +
-PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +
-25 0 * * * root obnam --config /etc/obnam/to_hexagon.profile forget 1>/dev/null +
-30 2 * * * root obnam --config /etc/obnam/to_kdell.profile forget 1>/dev/null +
-</file> +
- +
-**kdell** +
-<file text /etc/cron.d/obnam-forget> +
-PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +
-25 0 * * * root obnam --config /etc/obnam/to_quigon.profile forget 1>/dev/null +
-30 2 * * * root obnam --config /etc/obnam/to_hexagon.profile forget 1>/dev/null +
-</file> +
- +
-++++ +
- +
-<code> +
-                                       . . . 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 +
- +
-</code> +
- +
----- +
- +
-====== Duplicity ====== +
- +
-<WRAP center round alert> +
-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) +
-</WRAP>+
  
-Page concernant les backups avec duplicity est archivée ici : [[admin:services:backup-duplicity|admin:services:backup-duplicity]] 
  
admin/services/backup.1566557816.txt.gz · Dernière modification : 2019/08/23 12:56 de herve

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki