Sauvegarde et restauration SE3

, par François-Xavier VIal, Laurent Joëts, Louis-Maurice De Sousa, Michel Suquet, Rémy Barroso, stutzmann

Cet article, ainsi que les versions des scripts ci-dessous, est maintenant obsolète. Il faut se reporter à l’article sur Github qui vous donnera tous les renseignements nécessaire à la mise en place de la sauvegarde et de la restauration.

L’idée de cet article est de vous proposer une solution de sauvegarde et de restauration clé en main pour votre Se3.

Il s’agit de pouvoir restaurer un Se3 rapidement à la suite d’un crash disque ou pour migrer sur un nouveau serveur ou une nouvelle version de se3. Cela ne remplace pas les fonctionnalités de backuppc (qui permettent de récupérer des documents effacés par mégarde) tout en étant indépendant de ce module de se3.

Préliminaire

ATTENTION : À l’heure actuelle la restauration restaure les modules essentiels au bon fonctionnement du se3. Il sera peut-être nécessaire d’effectuer quelques réglages à partir de l’interface web du se3 et des manipulations en console en fonction des usages mis en place sur votre serveur.

Les scripts sont donc mis à disposition pour être testés par un plus grand nombre de personnes et sur un plus grand nombre de configurations. N’hésitez pas à nous faire un retour via le forum.

Conseil

Il est fortement recommandé d’exposer sa situation sur le forum versaillais lors de problèmes survenant suite à l’usage de ces scripts.

Contenu de l’archive (obsolète)

Dans l’archive (obsolète) ci-jointe, vous trouverez plusieurs scripts :
- sauve_serveur.sh : sauvegarde de votre se3. Cette version est utilisée en production.
- restaure_serveur.sh : ne restaure pas les pilotes des imprimantes téléversés sur le Se3. Cette version a été testée dans les cas suivants :
— sauvegarde se3 lenny- restauration se3 squeeze
— sauvegarde se3 squeeze - restauration se3 squeeze (sous VM et en production mais sans la restauration des homes-/var/se3)
- restaure_serveurimp.sh : prise en compte de la restauration des pilotes des imprimantes. Cette version n’a pas été testée mais le "cœur" du script est identique au précédent.
- restaure_serveur_nas : restauration à partir d’une sauvegarde effectuée sur un NAS.

Nouvelle version des scripts

Vous trouverez aussi une nouvelle version du script de sauvegarde qui comporte quelques améliorations et dont le comportement est décrit dans l’article ci-dessous. Cette version est utilisée en production.

De même, vous trouverez une nouvelle version du script de restauration qui a été testé sur un se3 virtuel, et utilisé sur des se3 en production, et qui corrige quelques bugs potentiels.

Le script est prévu pour être indépendant du module Backuppc du se3 mais si on veut utiliser le répertoire /var/lib/backuppc utilisé par ce module, il suffira de remplacer le répertoire /sauveserveur par le répertoire /var/lib/backuppc (variable MONTAGE dans le script)

Réseau derrière un Amon

Si vous êtes derrière un AMON, il est nécessaire d’avoir paramétré l’envoi des courriels.
Voir cet article du site pour les détails.

Les scripts dans le se3

Les 2 scripts de sauvegarde et de restauration, dans leur nouvelle version, sont maintenant disponibles directement sur votre serveur se3 s’il est en Squeeze à jour.

Si vous n’êtes pas en Squeeze mais avec une version antérieure, telle que Lenny, il faudra mettre en place le script sauve_serveur.sh (nouvelle version) en le téléchargeant ci-dessous.

Les 2 scripts se trouvent dans le répertoire /usr/share/se3/sbin du se3, depuis la version 2.4.9138 de janvier 2016.

Remarque : le script restaure_serveur.sh qui est sur le se3 (s’il est à jour bien entendu) comporte une erreur de chemin concernant le script restore_droits.sh qui a changé de répertoire et qui se trouve maintenant dans le répertoire /usr/share/se3/scripts/. Le mieux est de modifier le script restaure_serveur.sh en conséquence avant de l’utiliser (ligne 133 qui devient : /usr/share/se3/scripts/restore_droits.sh). Ou bien de lancer le script de restauration des droits, restore_droits.sh, par la suite. NB : la version en téléchargement ci-dessous ne comporte plus cette erreur :-)

La sauvegarde

Vue d’ensemble

Voici les grandes lignes de la mise en place de la sauvegarde, certaines étapes sont détaillées par la suite :

- personnaliser le script (si nécessaire)
- installer le paquet tree
- créer le répertoire /sauveserveur
- préparer le disque dur externe
- monter le disque dur externe dans le répertoire /sauveserveur
- lancer le script sauve_serveur.sh en mode test pour vérifier que tout est en place
- lancer le script sauve_serveur.sh en mode silencieux à l’aide de crontab pour réaliser une sauvegarde programmée

Remarque : si vous utilisez le module Backuppc du se3, et que vous ne voulez utiliser qu’un seul disque dur pour gérer à la fois la sauvegarde proposée par ce module et la sauvegarde effectuée par le script sauve_serveur.sh, il faudra utiliser le répertoire /var/lib/backuppc au lieu du répertoire /sauveserveur ; voir ci-dessous pour l’adaptation. La cohabitation entre ces deux types de sauvegarde ne posera pas alors de problème. Mais le mieux est d’utiliser un disque dur externe pour chacune de ces deux sauvegardes car elles sont indépendantes.

Personnalisation du script de sauvegarde

- 1_ Éditez le script de sauvegarde à l’aide d’un éditeur de texte (Attention, sous Windows®, il doit être du type notepadd++ mais, surtout, ne pas utiliser le Bloc-note® !)

- 2_ Modifiez, si nécessaire, les variables pour les adapter à votre situation. Il fallait au minimum modifier l’adresse de courriel située dans la partie « Définition des variables » : avec la nouvelle version du script de sauvegarde, cela n’est plus nécessaire ; le script, dans la nouvelle version, utilise l’adresse de courriel du serveur se3 directement :-)

- 3.1_ Si le module Backuppc est activé et qu’un disque dur est monté dans le répertoire /var/lib/backuppc, on pourra utiliser ce disque : les dossiers de sauvegarde. seront alors créés sur ce disque, à condition de changer sauveserveur en var/lib/backuppc dans le script (valeur de la variable MONTAGE). On adaptera aussi, lors de la mise en place, les commandes données ci-dessous.

- 3.2_ Si on veut utiliser un autre disque dur que celui prévu pour le module Backuppc ou si ce module n’est pas activé, cela est possible, à condition de créer un répertoire /sauveserveur à la racine du se3 et de monter cet autre disque sur le répertoire /sauveserveur. C’est l’option par défaut d’utilisation du script.

Mise en place de la sauvegarde

- 1_ Installation de tree (nécessaire à la création du rapport)

  1. apt-get update
  1. apt-get install tree

- 2_ Transférez le script sur le serveur, dans le répertoire /usr/share/se3/sbin

Remarque : ce transfert n’est plus nécessaire maintenant puisque les scripts sont directement dans ce répertoire, sur le serveur se3, s’il est à jour (à partir de la version 2.4.9138 de janvier 2016).

- 3_ Modifiez les droits pour le rendre exécutable.
En ligne de commande depuis un terminal :

  1. chmod u+x /usr/share/se3/sbin/sauve_serveur.sh

- 4_ Créer un répertoire /sauveserveur
À l’aide de la commande suivante :

  1. mkdir /sauveserveur

- 5_ Repérer et préparer le disque dur externe usb
Si cela est nécessaire, il faudra formater le disque dur en ext3. Voici une procédure pour réaliser ce formatage :

  • 5.1_ Repérez les partitions montées, à l’aide de la commande suivante :
    1. blkid |grep -v swap | gawk -F" " '/[^:]/ {print $1}'| sed 's/://'

Ce qui peut donner ceci :

/dev/sda2
/dev/sda3
/dev/sda5
/dev/sda6

où l’on peut voir que sur le disque sda, on a des partitions : sda2, sda3, sda5 et sda6.

  • 5.2_ Branchez le disque dur externe sur un port usb puis repérez à nouveau les partitions avec la même commande que ci-dessus
    1. blkid |grep -v swap | gawk -F" " '/[^:]/ {print $1}'| sed 's/://'

Ce qui donne par exemple ceci :

/dev/sda2
/dev/sda3
/dev/sda5
/dev/sda6
/dev/sdb1

par comparaison avec la réponse précédente, on peut voir que le disque dur externe est repéré par /dev/sdb1.

  • 5.3_ Vérifiez que la partition repérée n’est pas montée à l’aide de la commande suivante :
    1. mount | grep ^/dev | gawk -F" " '{print $1" "$2" "$3}'

Ce qui peut donner ceci :

/dev/sda2 on /
/dev/sda6 on /home
/dev/sda3 on /var
/dev/sda5 on /var/se3

si elle est montée (/dev/sdb1 apparaîtrait dans la réponse précédente), la démonter à l’aide de la commande suivante :

  1. umount /dev/sdb1
  • 5.4_ Formater le disque dur externe à l’aide de la commande suivante :
    1. mkfs.ext3 /dev/sdb1

- 6_ Monter le disque dur externe
À l’aide de la commande suivante :

  1. mount /dev/sdb1 /sauveserveur

Remarque : dans cette commande, le disque dur est repéré par sdb : il faudra adapter ce nom à la situation de votre serveur… Pour repérer ce nom, avant de brancher le disque sur le se3, lancer la commande suivante :

  1. blkid |grep -v swap | gawk -F" " '/[^:]/ {print $1}'| sed 's/://'

puis relancer cette commande après avoir branché le disque. Par comparaison des réponses, vous trouverez le nom à utiliser (voir l’exemple ci-dessus).

Utilisation du script en mode test

Il est possible d’utiliser le script en mode test : cela permet de vérifier que tout est en place sans lancer la sauvegarde proprement dite. Le script fait parvenir un courriel comme pour une sauvegarde en mode verbeux ou en mode silencieux. Si un problème est détecté, reprenez les éléments ci-dessus ou décrivez votre problème sur le forum (avec force détails).

- Lancez le script de sauvegarde en mode test
À l’aide de la commande suivante :

  1. /usr/share/se3/sbin/sauve_serveur.sh -t



Utilisation manuelle du script

L’utilisation du script de sauvegarde en mode verbeux ou en mode silencieux sera assez longue − notamment la première fois : prévoir 2 heures ou plus selon la masse des données à sauvegarder − et, si vous l’utilisez manuellement, nous vous conseillons d’utiliser screen, ce qui vous permettra de vous déconnecter sans interrompre le déroulement du script.

- 1_ Lancez le script de sauvegarde en mode verbeux
À l’aide de la commande suivante :

  1. /usr/share/se3/sbin/sauve_serveur.sh -v

- 2_ Une fois la sauvegarde terminée, vérifiez par la méthode de votre choix la présence des deux dossiers de sauvegarde sur le disque externe.

- 3_ Un courriel récapitulatif vous a été envoyé à l’adresse paramétrée dans le se3.

Utilisation programmée du script

Le script doit être utilisé en mode silencieux à l’aide de la commande suivante mais nous l’utiliserons avec crontab comme cela est expliqué ci-dessous.

  1. /usr/share/se3/sbin/sauve_serveur.sh -s

- 1_ Entrer dans l’éditeur de crontab
tapez dans un terminal la commande :

  1. crontab -e

- 2_ Ajouter l’action à programmer

par exemple, pour une sauvegarde tous les jours à 4h du matin et en mode silencieux

0 4 * * * /usr/share/se3/sbin/sauve_serveur.sh -s

- 3_ Sauvegarder et quitter
Utilisez la combinaison de 2 touches "Ctrl+o" et tapez sur "Entrée", puis la combinaison de 2 touches "Ctrl+x" et tapez sur "Entrée".

La sauvegarde est désormais opérationnelle et s’effectuera selon la tâche planifiée que vous aurez mise en place. Un courriel vous parviendra à la fin de chaque sauvegarde.

ATTENTION : L’heure de sauvegarde via les scripts doit être différente de celle réalisée par le module backuppc si vous utilisez aussi cette solution. Plus d’informations sur la syntaxe de crontab sur Wikipédia.

Montage automatique du disque dur de sauvegarde

En cas de redémarrage de votre serveur se3, il est possible de remonter automatiquement le disque dur externe usb qui stocke la sauvegarde de votre serveur.

Pour cela, il suffit d’utiliser le fichier /etc/fstab.

- 1_ Éditez le fichier /etc/fstab
À l’aide de la commande suivante :

  1. nano /etc/fstab

- 2_ Ajoutez la ligne de montage

À la fin du fichier, rajouter la ligne suivante :

UUID=xxx /sauveserveur ext3 defaults 0 0

Dans cette ligne, vous remplacerez xxx par la valeur de l’UUID du disque dur externe.

- 3_ Sauvegardez la modification et quittez l’éditeur de fichier
Utilisez la combinaison de 2 touches "Ctrl+o" et tapez sur "Entrée", puis la combinaison de 2 touches "Ctrl+x" et tapez sur "Entrée".

Remarque : pour connaître la valeur de l’UUID du disque dur externe, vous pouvez utiliser la commande suivante :

  1. blkid | grep /dev/sdb1

où /dev/sdb1 est à adapter en fonction de votre situation (voir ci-dessus).

Utilisation d’un NAS

Nous donnons ici quelques indications concernant l’utilisation d’un NAS. Prochainement, nous détaillerons davantage cette partie.

Pour éviter les problèmes concernant les propriétaires des fichiers :
- s’assurer que la partage NFS a l’option "pas de mappage"
- décocher l’option "NFS4" au niveau du NAS et du partage qui doit accueillir la sauvegarde se3
- ajouter l’option "nfsvers=3" lors du montage du partage sur le se3 :

  1. mount -t nfs -o nfsvers=3 192.168.1.5:/volume1/sauvese3 /sauveserveur

Dans cette commande, 192.168.1.5 est l’ip du NAS, /volume1/sauvese3 est la partie du NAS qui doit recevoir la sauvegarde et /sauveserveur est le répertoire du se3 dans lequel est monté le NAS.

La restauration

- 1_ Installez le nouveau serveur en prenant soin de bien renseigner les champs avec les paramètres de votre ancien serveur (même nom netbios, même mdp, même baseDN etc...).

Pour rappel la procédure d’installation est disponible sur ce site.

- 2_ Une fois l’installation terminée, activez tous les modules qui l’étaient sur l’ancien serveur.

- 3_ Vérifiez que votre sambaedu accède bien au web.

  • 3bis_ Pour les anciennes versions du script de restauration : vérifiez que le module Backuppc est activé et que le disque dur contenant la sauvegarde est monté.

- 4_ Éditez, si cela est nécessaire, le script de restauration à l’aide d’un éditeur de texte
→ Attention, sous Windows®, utilisez un éditeur de texte du type notepadd++ mais surtout pas le Bloc-note® !

- 5_ Modifiez les variables pour les mettre en concordance avec celles du script de sauvegarde.
→ Il faut tout particulièrement faire attention aux noms des dossiers de sauvegarde.

Pour les versions précédentes des scripts, n’oubliez pas de modifier l’adresse de courriel où sera envoyé le rapport ; cela n’est plus nécessaire avec la nouvelle version du script de restauration.

Remarque : Si la restauration se fait à partir d’un NAS,l faudra modifier le paramètre suivant :

point montage NAS

→ non testé avec la nouvelle version…

- 6_ Lancez le script de restauration.

  1. /restaure_serveur.sh

Celui-ci va vous poser quelques questions.
Lors de la phase de restauration des homes vous pouvez aller prendre un café ou deux.

- 7_ Redémarrez bien le serveur en fin de script.

  1. reboot

Problèmes rencontrés lors d’une restauration

- 1. Accès à l’interface setup mais pas à l’interface web

  • 1_1 Connectez-vous sur le nouveau serveur pour saisir la commande suivante :
    1. tail -f /var/log/syslog
  • 1_2 Tentez une connexion sur l’interface web
  • 1.3_ Regardez en même temps les messages sur le se3.

- 2. Si un message d’erreur indique que l’annuaire ne peut être joint et que la base DN est correcte

  • 2.1_Éditez sur l’ancien serveur le fichier setup_se3.data pour y récupérer le mot de passe d’origine du LDAP.
  • 2.2_ Recopiez-le dans le champ adéquat sur l’interface setup du nouveau se3.
  • 2.3_ Relancez la restauration sans la restauration des homes
  • 2.4_ Redémarrez le serveur
  • 2.5_ Tentez une connexion

Partager

Imprimer cette page (impression du contenu de la page)