admin:services:backup
Différences
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 | ||
admin:services:backup [2016/02/16 09:08] – [Installation de backupninja] zertrin | admin:services:backup [2020/05/11 01:01] (Version actuelle) – toadjaune | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
[[: | [[: | ||
- | <WRAP center round important> | + | <WRAP center round info 60%> |
- | Le nouveau système de sauvegarde utilisant obnam vient d'être mis en place (Zertrin 2016-02-16 00:00). La doc est en mode release candidate (90 % finie quoi). | + | L'ancienne page sur les backups |
- | + | ||
- | :!: **EN PHASE DE TEST** | + | |
</ | </ | ||
- | ===== Concept de sauvegarde ===== | ||
- | **Backupninja** sert pour les sauvegardes automatisées locales ('' | + | <WRAP center round todo 60%> |
+ | En cours de rédaction et mise en place. | ||
+ | PoC : herve & toadjaune | ||
+ | </WRAP> | ||
- | * des informations systèmes utiles (dpkg-selections, | + | <WRAP center round important 60%> |
- | * des dumps des bases de données MySQL | + | Backup en cours de mise en place. |
+ | Machines concernées : toutes | ||
+ | Priorité donnée à dodecagon | ||
+ | </ | ||
- | **Obnam** sert à effectuer la sauvegarde proprement dite vers les serveurs de destination. Il gère l' | + | ===== Motivation ===== |
- | ===== Opérations courantes ===== | + | 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. |
- | :!: La doc concernant la mise en place initiale se situe plus bas. | + | Les infrastructures et services que nous mettons |
- | ==== Faire une sauvegarde ==== | + | Mais pas robustes au sens haute disponibilité, |
- | Exemple depuis hexagon vers quigon : | + | 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. |
- | < | + | Ça implique plusieurs choses : |
- | ==== Voir les générations (versions) ==== | + | * KISS |
+ | * Bonne documentation | ||
+ | * Backups solides | ||
- | Exemple depuis hexagon avec l' | + | Le choix de Borg + ansible me semble un bon compromis à ce niveau |
- | < | + | Aucune objection à en plus mettre d' |
- | ==== Restaurer à partir d'un point de montage FUSE ==== | ||
- | Exemple depuis hexagon avec l' | + | ===== Fonctionnement de la solution ===== |
- | < | + | **BorgBackup** (ou Borg) sert à effectuer la sauvegarde proprement dite vers les serveurs |
- | # création d'un dossier pour le point de montage | + | |
- | mkdir / | + | |
- | # montage de l'archive en tant que système de fichier FUSE | + | **Backupninja** sert pour les sauvegardes automatisées locales (''/var/backups'' |
- | obnam --config | + | |
- | # montre les générations accessibles pour la restauration | + | * des informations systèmes utiles (dpkg-selections, fstab, lvm...) |
- | ls / | + | * des dumps des bases de données MySQL |
+ | Backupninja est installé et configuré manuellement là où il est utilisé. | ||
- | # restauration du fichier / | + | ===== Serveurs de sauvegarde ===== |
- | cp / | + | |
- | # démonter le système de fichier FUSE | + | Actuellement, |
- | fusermount -u / | + | * [[admin: |
- | </ | + | * [[admin: |
- | Voir la doc aussi qui explique plus clairement. | + | ---- |
- | ===== Mise en place initiale d' | + | ===== Opérations courantes |
- | :!: Exemple avec hexagon, mais la procédure est la même pour chaque serveur. | + | <WRAP center round tip 60%> |
+ | La doc concernant | ||
+ | </ | ||
- | ==== Installation d' | ||
- | Utilisation des dépôts jessie-backports pour avoir une version assez récente. Dans ''/ | + | ==== Faire une sauvegarde ==== |
- | < | + | 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. | ||
- | Puis '' | + | ==== Mettre à jour la liste des chemins à sauvegarder ==== |
- | ==== Préparatifs sur un serveur de destination ==== | + | La configuration a lieu dans [[https:// |
- | :!: opérations effectuées en '' | + | La plupart des hôtes utilisent la configuration commune, définie dans [[https:// |
- | Exemple ici avec quigon comme serveur de destination, | + | Redéployer le playbook après changement. |
- | Ajout de l' | + | ==== Manipuler les backups (listing, restauration, |
- | Pour **quigon** et **baldrick** on place le $HOME d' | + | TODO |
- | < | + | Les commandes suivantes peuvent indifféremment être effectuées sur : |
- | quigon ~ # adduser --system --group --disabled-password --shell / | + | |
- | </ | + | |
- | Pour **hexagon** on place le $HOME d' | + | * La machine dont on cherche à manipuler les backups |
- | + | * Un des serveurs | |
- | < | + | |
- | quigon ~ # adduser --system --group --disabled-password --shell / | + | |
- | </ | + | |
- | On prépare le fichier '' | + | Commencer |
< | < | ||
- | quigon ~ # cd ~obnam | + | export BORG_RSH=" |
- | quigon ~obnam # sudo -u obnam mkdir .ssh | + | export BORG_PASSPHRASE=" |
- | quigon ~obnam # sudo -u obnam touch .ssh/authorized_keys | + | export REPOSITORY=" |
- | quigon ~obnam | + | |
- | quigon ~obnam # vim .ssh/ | + | |
</ | </ | ||
- | 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). | + | Il est notamment possible |
- | < | + | * lister les backups |
- | hexagon ~ # sftp obnam@quigon.federez.net | + | * Faire une archive tar à partir d'un backup |
- | sftp> mkdir obnam-repository | + | * Monter l' |
- | sftp> ^D | + | |
- | </ | + | |
- | ==== Configuration d' | + | Se référer à la documentation de borg pour les syntaxes exactes. |
- | Initialisation du répertoire ''/ | ||
- | |||
- | < | ||
- | hexagon ~ # mkdir /etc/obnam && cd /etc/obnam | ||
- | hexagon obnam # touch obnam_hexagon.conf to_baldrick.profile to_quigon.profile | ||
- | </ | ||
- | |||
- | === Contenu des fichiers de config === | ||
- | |||
- | * Le premier fichier ('' | ||
- | * Les deux fichiers suivants ('' | ||
- | |||
- | ++++ config pour hexagon (2016-02-15 00:50) | | ||
- | <file ini obnam_hexagon.conf> | ||
- | [config] | ||
- | client-name = hexagon | ||
- | root = /etc, | ||
- | / | ||
- | / | ||
- | / | ||
- | exclude = .*/ | ||
- | .*/\.cache, | ||
- | / | ||
- | /home/ftp, | ||
- | / | ||
- | /srv/ftp | ||
- | log = / | ||
- | log-level = info | ||
- | log-max = 1000000 | ||
- | log-keep = 10 | ||
- | log-mode = 0600 | ||
- | one-file-system = yes | ||
- | keep = 72h, | ||
- | upload-queue-size = 512 | ||
- | lru-size = 1024 | ||
- | </ | ||
- | |||
- | <file ini to_baldrick.profile> | ||
- | [config] | ||
- | repository = sftp:// | ||
- | </ | ||
- | |||
- | <file ini to_quigon.profile> | ||
- | [config] | ||
- | repository = sftp:// | ||
- | </ | ||
- | ++++ | ||
- | |||
- | ++++ config pour quigon (2016-02-15 00:50) | | ||
- | <file ini obnam_quigon.conf> | ||
- | [config] | ||
- | client-name = quigon | ||
- | root = /etc, | ||
- | / | ||
- | / | ||
- | / | ||
- | exclude = .*/ | ||
- | .*/\.cache, | ||
- | / | ||
- | / | ||
- | / | ||
- | / | ||
- | / | ||
- | log = / | ||
- | log-level = info | ||
- | log-max = 1000000 | ||
- | log-keep = 10 | ||
- | log-mode = 0600 | ||
- | one-file-system = yes | ||
- | keep = 72h, | ||
- | upload-queue-size = 512 | ||
- | lru-size = 1024 | ||
- | </ | ||
- | |||
- | <file ini to_baldrick.profile> | ||
- | [config] | ||
- | repository = sftp:// | ||
- | </ | ||
- | |||
- | <file ini to_hexagon.profile> | ||
- | [config] | ||
- | repository = sftp:// | ||
- | </ | ||
- | ++++ | ||
- | |||
- | |||
- | ++++ config pour baldrick (2016-02-15 00:50) | | ||
- | <file ini obnam_baldrick.conf> | ||
- | [config] | ||
- | client-name = baldrick | ||
- | root = /etc, | ||
- | / | ||
- | / | ||
- | / | ||
- | / | ||
- | exclude = .*/ | ||
- | .*/\.cache, | ||
- | /home/git, | ||
- | / | ||
- | log = / | ||
- | log-level = info | ||
- | log-max = 1000000 | ||
- | log-keep = 10 | ||
- | log-mode = 0600 | ||
- | one-file-system = yes | ||
- | keep = 72h, | ||
- | upload-queue-size = 512 | ||
- | lru-size = 1024 | ||
- | </ | ||
- | |||
- | <file ini to_hexagon.profile> | ||
- | [config] | ||
- | repository = sftp:// | ||
- | </ | ||
- | |||
- | <file ini to_quigon.profile> | ||
- | [config] | ||
- | repository = sftp:// | ||
- | </ | ||
- | ++++ | ||
- | |||
- | ==== Test première sauvegarde ==== | ||
- | |||
- | Exemple depuis hexagon vers quigon: | ||
- | |||
- | < | ||
- | |||
- | ==== Purger les vieilles générations selon une politique donnée ==== | ||
- | |||
- | L' | ||
- | |||
- | * garder une génération par heure pendant 72 heures | ||
- | * garder une génération par jour pendant 15 jours | ||
- | * garder une génération par semaine pendant 52 semaines | ||
- | * garder une génération par an pendant 5 ans | ||
- | |||
- | En appelant la commande suivante une fois par jour, les générations qui sont superflues sont supprimées de l' | ||
- | |||
- | Exemple depuis hexagon avec l' | ||
- | |||
- | < | ||
- | |||
- | ==== Mise en place des cron ==== | ||
- | |||
- | TODO finir conf au propre | ||
- | |||
- | Les crons se trouvent dans ''/ | ||
- | |||
- | < | ||
- | . . . 0 . . . H -> B -> Q | ||
- | 55 5 < | ||
- | . | ||
- | . | ||
- | . | ||
- | 50 | 10 <----+ | ||
- | H <- B <- Q . | | | ||
- | | | ||
- | | backup | ||
- | +---------+ | ||
- | heures impaires | ||
- | | | ||
- | | | ||
- | | | ||
- | | | | ||
- | +----> 40 | ||
- | . | ||
- | H -> B -> Q | ||
- | ^ | ||
- | | backup | ||
- | +---------+ | ||
- | | ||
- | |||
- | </ | ||
- | ==== Installation de backupninja ==== | + | ===== Installation |
Backupninja sert à créer des backups des informations système ainsi que de la base de donnée MySQL automatiquement. | Backupninja sert à créer des backups des informations système ainsi que de la base de donnée MySQL automatiquement. | ||
Ligne 295: | Ligne 116: | ||
Activer les backups des infos systèmes (:!: mettre '' | Activer les backups des infos systèmes (:!: mettre '' | ||
- | ++++ Ajouter le fichier | + | ++++ Ajouter le fichier / |
<file ini / | <file ini / | ||
packages = yes | packages = yes | ||
Ligne 316: | Ligne 137: | ||
++++ | ++++ | ||
- | Activer les backups pour la base de donnée MySQL (:!: uniquement sur **hexagon** et **baldrick**) | + | Activer les backups pour la base de donnée MySQL (:!: uniquement sur **hexagon**) |
- | ++++ Ajouter le fichier | + | ++++ Ajouter le fichier / |
<file ini / | <file ini / | ||
### backupninja MySQL config file ### | ### backupninja MySQL config file ### | ||
Ligne 358: | Ligne 179: | ||
++++ | ++++ | ||
- | ---- | + | Tester avec |
- | <WRAP center round alert> | + | <code>sudo backupninja |
- | Le système de sauvegarde documenté ci-dessous utilisant '' | + | |
- | </WRAP> | + | |
- | ====== Duplicity ====== | + | ---- |
- | + | ||
- | + | ||
- | Backup interserveurs en mode push a l'aide de duplicity et son wrapper duplicity-backup. | + | |
- | + | ||
- | * Le wrapper pour duplicity se trouve sous ''/ | + | |
- | * Les sauvegardes se trouvent sur chaque serveur dans le répertoire ''/ | + | |
- | * La configuration se trouve sous ''/ | + | |
- | * Le shellscript lancé par cron se trouve sous ''/ | + | |
- | + | ||
- | Pour consulter l' | + | |
- | + | ||
- | < | + | |
- | + | ||
- | ==== Situation actuelle ==== | + | |
- | ++++ hexagon → quigon (2015-09-14 21:00) | | + | |
- | <file bash> | + | |
- | INCLIST=( "/ | + | |
- | "/ | + | |
- | "/ | + | |
- | "/ | + | |
- | "/ | + | |
- | "/ | + | |
- | ) | + | |
- | + | ||
- | EXCLIST=( "/ | + | |
- | "/ | + | |
- | "/ | + | |
- | ) | + | |
- | </ | + | |
- | ++++ | + | |
- | + | ||
- | ++++ hexagon → baldrick (2015-09-14 21:00) | | + | |
- | <file bash> | + | |
- | INCLIST=( "/ | + | |
- | "/ | + | |
- | "/ | + | |
- | "/ | + | |
- | "/ | + | |
- | "/ | + | |
- | ) | + | |
- | + | ||
- | EXCLIST=( "/ | + | |
- | "/ | + | |
- | "/ | + | |
- | ) | + | |
- | </ | + | |
- | ++++ | + | |
- | + | ||
- | + | ||
- | ++++ quigon → hexagon (2015-09-14 21:00) | | + | |
- | <file bash> | + | |
- | INCLIST=( "/ | + | |
- | "/ | + | |
- | "/ | + | |
- | "/ | + | |
- | "/ | + | |
- | ) | + | |
- | + | ||
- | EXCLIST=( "/ | + | |
- | "/ | + | |
- | "/ | + | |
- | "/ | + | |
- | ) | + | |
- | </ | + | |
- | ++++ | + | |
- | + | ||
- | ++++ quigon → baldrick (2015-09-14 21:00) | | + | |
- | <file bash> | + | |
- | INCLIST=( "/ | + | |
- | "/ | + | |
- | "/ | + | |
- | "/ | + | |
- | "/ | + | |
- | ) | + | |
- | + | ||
- | EXCLIST=( "/ | + | |
- | "/ | + | |
- | "/ | + | |
- | "/ | + | |
- | ) | + | |
- | </ | + | |
- | ++++ | + | |
- | + | ||
- | ++++ baldrick → hexagon (2015-06-07 01:00) | | + | |
- | <file bash> | + | |
- | INCLIST=( "/ | + | |
- | "/ | + | |
- | "/ | + | |
- | "/ | + | |
- | ) | + | |
- | + | ||
- | EXCLIST=( "/ | + | |
- | </ | + | |
- | ++++ | + | |
- | + | ||
- | ++++ baldrick → quigon (2015-06-07 01:00) | | + | |
- | <file bash> | + | |
- | INCLIST=( "/ | + | |
- | "/ | + | |
- | "/ | + | |
- | "/ | + | |
- | ) | + | |
- | + | ||
- | EXCLIST=( "/ | + | |
- | </ | + | |
- | ++++ | + | |
- | + | ||
- | ===== Détails techniques ===== | + | |
- | ==== Mise en place initiale ==== | + | |
- | + | ||
- | FIXME PAS ENCORE ADAPTÉ/MIS EN FORME : ne pas utiliser tel quel ! Mais l' | + | |
- | + | ||
- | :!: Procédure à ne faire que si l'on part de zéro sur tous les serveurs (pas de backups en place) | + | |
- | + | ||
- | ++++ Voir la procédure | | + | |
- | < | + | |
- | nautilus ~ # aptitude install duplicity | + | |
- | nautilus ~ # ssh-keygen -t rsa -b 2048 | + | |
- | nautilus ~ # l / | + | |
- | nautilus ~ # cat / | + | |
- | nautilus ~ # ssh zertrin@quigon.federez.net | + | |
- | zertrin@quigon: | + | |
- | zertrin@quigon: | + | |
- | zertrin@quigon: | + | |
- | zertrin@quigon: | + | |
- | zertrin@quigon: | + | |
- | zertrin@quigon: | + | |
- | zertrin@quigon: | + | |
- | nautilus ~ # sftp duplicity@quigon.federez.net | + | |
- | sftp> mkdir nautilus | + | |
- | sftp> ^D | + | |
- | nautilus ~ # gpg --gen-key | + | |
- | nautilus ~ # gpg --gen-key | + | |
- | nautilus ~ # mkdir scripts && cd scripts | + | |
- | nautilus scripts # git clone git:// | + | |
- | nautilus scripts # cd duplicity-backup | + | |
- | nautilus duplicity-backup (master) # cp duplicity-backup.conf.example / | + | |
- | nautilus duplicity-backup (master) # vim / | + | |
- | nautilus duplicity-backup (master) # ./ | + | |
- | nautilus duplicity-backup (master) # vim / | + | |
- | nautilus duplicity-backup (master) # chmod +x / | + | |
- | </ | + | |
- | ++++ | + | |
- | + | ||
- | ==== Extension sur un nouveau serveur ==== | + | |
- | + | ||
- | :!: Si au moins un des serveurs a déjà été configuré (voir procédure précédente) et qu'on désire préparer un autre serveur pour effectuer des sauvegardes via duplicity-backup. | + | |
- | + | ||
- | ++++ Voir la procédure | | + | |
- | + | ||
- | Pour cette procédure, le nouveau serveur est // | + | |
- | + | ||
- | **Installation de duplicity** | + | |
- | + | ||
- | < | + | |
- | baldrick ~$ sudo aptitude install duplicity | + | |
- | </ | + | |
- | + | ||
- | **Génération d'une clef ssh pour root** | + | |
- | + | ||
- | :!: seulement si nécessaire (pas encore de ''/ | + | |
- | + | ||
- | < | + | |
- | baldrick ~$ sudo ssh-keygen -t rsa -b 2048 | + | |
- | < | + | |
- | baldrick ~$ sudo cat / | + | |
- | < | + | |
- | </ | + | |
- | + | ||
- | **Mise en place connexion SFTP par clef SSH vers le serveur de destination** | + | |
- | + | ||
- | Ajout de la clef SSH de root@baldrick aux clef autorisées à se connecter à hexagon avec le login duplicity. | + | |
- | + | ||
- | < | + | |
- | baldrick ~$ ssh zertrin@hexagon.federez.net | + | |
- | hexagon ~$ sudo vim / | + | |
- | < | + | |
- | hexagon ~$ ^D | + | |
- | </ | + | |
- | + | ||
- | On teste si la connexion sans mot de passe fonctionne et on en profite pour créer le dossier de destination de la sauvegarde. | + | |
- | + | ||
- | < | + | |
- | baldrick ~$ sudo sftp duplicity@hexagon.federez.net | + | |
- | sftp> mkdir baldrick | + | |
- | sftp> ^D | + | |
- | </ | + | |
- | + | ||
- | **Récupération du wrapper duplicity-backup.sh** | + | |
- | + | ||
- | Le wrapper est placé dans ''/ | + | |
- | + | ||
- | < | + | |
- | baldrick ~$ sudo mkdir / | + | |
- | baldrick ~$ sudo git clone git:// | + | |
- | </ | + | |
- | + | ||
- | **Import des clefs GPG de chiffrement et de signature** | + | |
- | + | ||
- | Pour se simplifier la vie, on importe les données issues d'une [[admin: | + | |
- | + | ||
- | :!: Au préalable, transférer une de ces sauvegardes (.tar.gpg) dans le dossier courant | + | |
- | + | ||
- | < | + | |
- | baldrick ~$ gpg -d duplicity-backup-2013-07-25.tar.gpg | tar x | + | |
- | gpg: données chiffrées avec CAST5 | + | |
- | | + | |
- | </ | + | |
- | + | ||
- | Sinon toute autre méthode pour récupérer les deux clefs privées sous format texte convient aussi :) | + | |
- | + | ||
- | Passons à l' | + | |
- | + | ||
- | < | + | |
- | baldrick ~$ sudo gpg --import duplicity-backup-2013-07-25/ | + | |
- | baldrick ~$ sudo gpg --import duplicity-backup-2013-07-25/ | + | |
- | baldrick ~$ sudo gpg --edit-key 8B97F497 | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | baldrick ~$ sudo gpg --edit-key 9ED0EF7B | + | |
- | < | + | |
- | </ | + | |
- | + | ||
- | **Copie d'une config existante de duplicty-backup et paramétrage** | + | |
- | + | ||
- | Parce que le sysadmin est fainéant, on se contente de copier la config d'un autre serveur et de l' | + | |
- | + | ||
- | < | + | |
- | baldrick ~$ sudo cp / | + | |
- | baldrick ~$ sudo rm -rf / | + | |
- | baldrick ~$ sudo vim / | + | |
- | </ | + | |
- | + | ||
- | Adapter les variables '' | + | |
- | + | ||
- | <file bash duplicity-backup.baldrick_to_hexagon.conf> | + | |
- | ... | + | |
- | DEST=" | + | |
- | ... | + | |
- | INCLIST=( "/ | + | |
- | "/ | + | |
- | "/ | + | |
- | ) | + | |
- | ... | + | |
- | EXCLIST=( | + | |
- | ... | + | |
- | </ | + | |
- | + | ||
- | **Sauvegarde initiale** | + | |
- | + | ||
- | Ceci effectuera la première sauvegarde (complète). | + | |
- | + | ||
- | < | + | |
- | baldrick ~$ sudo / | + | |
- | </ | + | |
- | + | ||
- | Si tout va bien cette sauvegarde apparait dans le résultat de la commande suivante : | + | |
- | + | ||
- | < | + | |
- | baldrick ~$ sudo / | + | |
- | </ | + | |
- | + | ||
- | **Mise en place du cronjob** | + | |
- | + | ||
- | < | + | |
- | + | ||
- | <file bash duplicity-backup> | + | |
- | #!/bin/sh | + | |
- | test -x / | + | |
- | cd / | + | |
- | LANG=C ./ | + | |
- | </ | + | |
- | + | ||
- | < | + | |
- | + | ||
- | Test du cronjob : | + | |
- | + | ||
- | < | + | |
- | baldrick ~$ sudo / | + | |
- | baldrick ~$ sudo / | + | |
- | </ | + | |
- | + | ||
- | Si tout va bien, bravo c'est fini ! | + | |
- | + | ||
- | ++++ | + | |
- | + | ||
- | ==== Ajout de nouvelles destinations de sauvegarde ==== | + | |
- | + | ||
- | :!: Seulement si le serveur auquel on ajoute une nouvelle destination de sauvegarde a déjà été configuré une première fois (voir procédure ci-dessus). | + | |
- | + | ||
- | ++++ Voir la procédure | | + | |
- | + | ||
- | **Mise en place connexion SFTP par clef SSH vers le serveur de destination** | + | |
- | + | ||
- | Ajout de la clef SSH de root@baldrick aux clefs autorisées à se connecter. | + | |
- | < | + | |
- | baldrick ~$ sudo cat / | + | |
- | < | + | |
- | baldrick ~$ ssh zertrin@quigon.federez.net | + | |
- | quigon ~$ sudo vim / | + | |
- | < | + | |
- | quigon ~$ ^D | + | |
- | </ | + | |
- | + | ||
- | On teste si la connexion sans mot de passe fonctionne et on en profite pour créer le dossier de destination de la sauvegarde. | + | |
- | + | ||
- | < | + | |
- | baldrick ~ # sudo sftp duplicity@quigon.federez.net | + | |
- | sftp> mkdir baldrick | + | |
- | sftp> ^D | + | |
- | </ | + | |
- | + | ||
- | **Copie du fichier de config et paramétrage** | + | |
- | + | ||
- | On crée un fichier de config par couple source -> destination. | + | |
- | + | ||
- | < | + | |
- | baldrick ~$ sudo cp / | + | |
- | baldrick ~$ sudo vim / | + | |
- | </ | + | |
- | + | ||
- | Adapter les variables '' | + | |
- | + | ||
- | <file bash duplicity-backup.baldrick_to_quigon.conf> | + | |
- | ... | + | |
- | DEST=" | + | |
- | ... | + | |
- | INCLIST=( "/ | + | |
- | "/ | + | |
- | "/ | + | |
- | ) | + | |
- | ... | + | |
- | EXCLIST=( | + | |
- | ... | + | |
- | </ | + | |
- | + | ||
- | **Sauvegarde initiale** | + | |
- | + | ||
- | < | + | |
- | baldrick ~$ sudo / | + | |
- | </ | + | |
- | + | ||
- | Si tout va bien la sauvegarde initiale apparait dans le résultat de la commande suivante : | + | |
- | + | ||
- | < | + | |
- | baldrick ~$ sudo / | + | |
- | </ | + | |
- | + | ||
- | **Adaptation du cronjob pour effectuer la sauvegarde vers la nouvelle destination** | + | |
- | + | ||
- | < | + | |
- | + | ||
- | <file bash duplicity-backup> | + | |
- | # ajouter cette ligne à la fin | + | |
- | LANG=C ./ | + | |
- | </ | + | |
- | + | ||
- | Test du cronjob : | + | |
- | + | ||
- | < | + | |
- | baldrick ~$ sudo / | + | |
- | baldrick ~$ sudo / | + | |
- | </ | + | |
- | + | ||
- | Si tout va bien, bravo c'est fini ! | + | |
- | + | ||
- | ++++ | + | |
- | ==== Sauvegarde de la config et des clefs de chiffrement ==== | + | |
- | + | ||
- | <WRAP center round important> | + | |
- | **Très important !** Chaque admin technique devrait générer ces sauvegardes pour lui-même et les conserver en lieu sûr (i.e. pas sur les serveurs où elles ont été générées). Sans ces données il sera difficile de restaurer les données. (et même impossible si les clefs GPG sont perdues) | + | |
- | </ | + | |
- | + | ||
- | Ces archives sont générées à l'aide de l' | + | |
- | + | ||
- | Ceci génère une archive TAR chiffrée symétriquement avec GPG. Le mot de passe utilisé est le même pour tous les serveurs et se trouve dans ''/ | + | |
- | + | ||
- | Dans l' | + | |
- | + | ||
- | < | + | |
- | hexagon ~ # / | + | |
- | You are backing up: | + | |
- | 1. / | + | |
- | 2. GPG Secret encryption key: 8B97F497 and GPG secret sign key: 9ED0EF7B | + | |
- | 3. Config file: / | + | |
- | Backup tarball will be encrypted and saved to: / | + | |
- | + | ||
- | >> Are you sure you want to do that (' | + | |
- | yes | + | |
- | Encrypting tarball, choose a password you'll remember... | + | |
- | + | ||
- | IMPORTANT!! | + | |
- | >> To restore these files, run the following (remember your password): | + | |
- | gpg -d duplicity-backup-2013-07-25.tar.gpg | tar x | + | |
- | </ | + | |
- | + | ||
- | ==== Procédure de restauration ==== | + | |
- | + | ||
- | Dans tous les cas il est nécessaire de diposer de la clef de déchiffrement correspondant à la clef GPG '' | + | |
- | + | ||
- | === Restaurer depuis le serveur d' | + | |
- | + | ||
- | On suppose ici le cas où un fichier ou dossier a été modifié ou supprimé par mégarde et qu'on cherche à restaurer celui-ci tel qu'il était auparavant, le tout depuis le serveur d' | + | |
- | + | ||
- | C'est la situation la plus simple car duplicity-backup.sh a déjà été mis en place et est configuré. | + | |
- | + | ||
- | Voici la commande générique : | + | |
- | + | ||
- | < | + | |
- | serveur1 ~ # / | + | |
- | --config / | + | |
- | --restore-file [FILE_TO_RESTORE] [DESTINATION] \ | + | |
- | --time [TIME] | + | |
- | </ | + | |
- | + | ||
- | avec: | + | |
- | + | ||
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | * ''" | + | |
- | + | ||
- | Exemple de restauration du fichier ''/ | + | |
- | / | + | |
- | + | ||
- | < | + | |
- | hexagon ~ #/ | + | |
- | </ | + | |
- | + | ||
- | Exemple de restauration du dossier ''/ | + | |
- | / | + | |
- | + | ||
- | < | + | |
- | baldrick ~ # / | + | |
- | </ | + | |
- | + | ||
- | === Restaurer depuis une autre machine que le serveur d' | + | |
- | + | ||
- | On suppose ici que l'on a plus accès au serveur d' | + | |
- | On suppose aussi que l'on dispose des éléments suivants : | + | ===== Mise en place initiale de BorgBackup (ou Borg) ===== |
- | * Fichier tar contenant le backup du script et la configuration. Ce fichier est sensé avoir été créé à l'aide de l' | + | Aucune mise en place initiale n' |
- | * Passphrase de la clef de chiffrement (à FedeRez c'est la clef GPG '' | + | |
- | :!: Il est très important de s'assurer que ces éléments aient été bien conservés en dehors des serveurs (par exemple dans une base KeePass | + | Le rôle ansible déployant la configuration |
- | FIXME finir la doc. En attendant voici l' | ||
- | * Installer duplicity et mettre en place le wrapper duplicity-backup.sh comme documenté ci-dessus. | ||
- | * Utiliser le fichier de config et les clefs GPG issues de la sauvegarde du script pour restaurer les données de la même manière que documenté dans la section précédente. | ||
admin/services/backup.txt · Dernière modification : 2020/05/11 01:01 de toadjaune