linux_backuppc

Ceci est une ancienne révision du document !


~~CLOSETOC~~ <box 50% left blue>the box contents</box|a caption> ====== BackupPC - Installation d'une solution de sauvegarde sous Linux ====== La sauvegarde est et sera toujours un élément incontournable d'une infrastructure. Pour Linux, il existe plusieurs solutions. Nous allons voir ici ''backuppc'', une solution permettant la sauvegarde de système Linux aussi bien que Windows et dont la gestion se fait via une interface Web, ce qui en facilite la compréhension. <note>Cette procédure a été réalisé sur une debian 9.</note> <note warning>Cette procédure nécessite des accès root. Faîtes donc attention à ce que vous faîtes.</note> ===== Prérequis ===== Il n'y a pas de prérequis particulier, si ce n'est l'espace de stockage pour accueillir les sauvegardes ainsi que la localisation de cette espace. Il faut prendre en compte quelques points essentiels, généralement abordés lors de l'établissement du plan global de sauvegarde : * Il faut calculer l'espace nécessaire pour accueillir les sauvegardes qui sont constituées de X points de restauration en prenant en compte le mode de sauvegarde (complète, incrémentielle...), la compresion, etc. * Il faut garantir la pérennité de la sauvegarde, via une externalisation de cette dernière par exemple afin d'éviter de tout perdre si le serveuir de sauvegarde venait à être corrompu ou perdu. ===== Installation ===== * Comme d'haditude pour une nouvelle installation, on commence par mettre à jour la banque de données des paquets : <code:bash>apt-get update</code> * On installe les paquets nécessaires : <code:bash>apt-get install backuppc</code> * Lors de l'installation, le système nous demande de choisir le serveur WEB à utiliser. Apache est installé par défaut avec BackupPC, on choisira donc apache2 puis on valide avec ''<Ok>'' : {{ :linux:backuppc:backuppc_001.png }} * La page suivante nous indique la création d'un utilisateur/mot de passe par défaut pour se connecter à l'interface web et ainsi paramétrer et gérer les sauvegardes : {{ :linux:backuppc:backuppc_002.png }} * Après validation, l'installation se termine toute seule. * Pour être sûr de pouvoir se connecter à l'interface web, il est recommandé de redémarrer apache2 : <code:bash>systemctl restart apache2</code> * Il ne reste plus qu'à paramétrer le pare-feu pour permettre l'accès au service web depuis l'extérieur. Pour celà, référez-vous à la documentation de votre solution de sécurité. ===== Paramétrage ===== * On va commencer par modifier le mot de passe par défaut pour utiliser un mot de passe correspondant à notre politique de sécurité : <code:bash>htpasswd /etc/backuppc/htpasswd backuppc</code> * On peut alors se connecter au service grâce à l'URL donnée durant l'installation. * On s'authentifie avec le compte utilisateur ''backuppc'' et le mot de passe correspondant : {{ :linux:backuppc:backuppc_003.png }} * On arrive sur la page d'accueil de BackupPC {{ :linux:backuppc:backuppc_004.png }} * On commence par mettre le programme en français. Pour celà, dans le menu ''Edit Config'', onglet ''CGI'', on change la ligne ''Language'' en fr et on sauvegarde avec ''Save'' : {{ :linux:backuppc:backuppc_005.png }} * On recharge l'interface (F5) pour avoir le nouvel affichage. * On règle ensuite le mode de sauvegarde par défaut. Pour celà, on va dans le menu ''Modifier la configuration'', onglet ''Xfer''. La ligne ''XferMethod'' nous donne les différentes méthodes de sauvegarde utilisables. Parmis elles, on aura : * **tar** : utilisable pour Linux et MacOS. Les fichiers sauvegardés sont conservés dans un fichier archive .tar (non compressé). * **smb** : utilisable pour Windows. Il s'agit d'une simple copie via le protocole SMB. Peut-être aussi utilisé pour Linux à condition d'installer préalablement un service Samba dessus. * **rsync** : utilisable pour Windows, Linux et MacOS. Il s'agit d'une copie intelligente des fichiers. * **archive** : comme **tar** mais en version compressé. * On utilisera donc ''rsync''. * On oublie pas de sauvegarder une fois les modifications faîtes. {{ :linux:backuppc:backuppc_006.png }} * On peut aussi paramétrer les période de sauvegarde et la rétention de ces dernières. Ces paramétrages sont accessible depuis le menu ''Modifier la configuration'', onglet ''Horaire''. Personnellement, j'ai modifié : * **FullAgeMax** : La rétention des sauvegardee complètes, je garde 30 jours. * **IncrAgeMax** : La rétention des sauvegardes incrémentielles, je garde 7 jours. * **BlackoutPeriods** : La période pendant laquelle il ne peut y avoir aucune sauvegarde, en principe c'est pour éviter les problèmes de performances durant les heures de prod, bureau... J'ai réglé de 7h à 20h du lundi au vendredi. {{ :linux:backuppc:backuppc_007.png }} * Par défaut, BackupPC stocke les sauvegardes dans ''/var/lib/backuppc''. Personnellement, je préfère déplacer ce dossier vers un disque dédié au stockage. Pour cela : * On arrête le processus : <code:bash>service backuppc stop</code> * On crée le répertoire de destinastion si il n'existe pas encore. Pour ma part, j'utilise un point de montage existant vers un disque physique dédié. Sinon : <code:bash>mkdir -p /chemin/du/dossier/de/sauvegarde/</code> * On synchronise le contenu des dossiers : <code:bash>rsync -va /var/lib/backuppc /chemin/du/dossier/de/sauvegarde/</code> * On supprime l'ancien dossier : <code:bash>rm -rf /var/lib/backuppc/</code> * On crée un lien symbolique : <code:bash>ln -s /chemin/du/dossier/de/sauvegarde /var/lib/backuppc</code> * On met à jour les droits : <code:bash>chown -h backuppc:backuppc /var/lib/backuppc</code> * On relance le service : <code:bash>service backuppc start</code> * Il ne nous reste plus qu'à paramétrer les notifications. Dans le menu ''Modifier la configuration'', onglet ''Courriel'', on modifiera donc les champs suivants : * **EMailFromUserName** : e-mail de l'expéditeur. * **EMailAdminUserName** : e-mail de l'administrateur de sauvegarde (celui qui va recevoir les notifications avec les détails). * On enregistre avec le bouton ''Sauvegarder'' {{ :linux:backuppc:backuppc_008.png }} <note important>Attention: Les notifications par mail ne seront effectives que si l'envoi de mail est configuré sur la machine (voir les paramétrages d'exim4 par exemple).</note> <note tip>BackupPC est désormais configuré. Il ne reste plus qu'à créer des tâches de sauvegarde.</note> ===== Sauvegarde du poste local ===== * Pour le poste local, on utilisera la méthode ''tar''. * On commence par modifier le fichier ''/etc/sudoers'' : <code:bash> nano /etc/sudoers</code> * On y ajoute la ligne ''backuppc ALL=NOPASSWD: /bin/tar'' * On enregistre et on quitte. * Le poste étant ajouté par défaut aux tâches de sauvegarde, on va juste affiner son paramétrage. Du coup, depuis l'interface graphique, dans le menu ''Hôtes'', on choisit ''localhost'', ce qui affiche les menus spécifiques. On pourra alors cliquer sur ''Modifier la configuration'' dans la section ''localhost'' : {{ :linux:backuppc:backuppc_009.png |}} * Dans la page de configuration, on cliquera sur l'onglet ''Xfer''. Là, on cochera : * **XferMethod** et on choisit ''tar'' * **TarClientCmd** et on modifie le champs correspondant avec ''/usr/bin/sudo LC_ALL=C $tarPath -c -v -f - -C $shareName+ --totals'' * **TarShareName** (Optionnel). Ce chaamp permet de spécifier quels dossiers doivent être sauvegardés. Par défaut, c'est la racine ''/'' qui est sélectionnée. Pour des raisons de gains de place, on pourrait choisir de ne sauvegarder que les dossiers essentiels (configurations, données utiles, scripts...). Pour affiner la sélection, on remplace ''/'' par le dossier à sauvegarder, par exemple ''/etc''. Si il y a plusieurs dossiers, on cliquera sur le bouton ''Ajouter'', ce qui rajoutera une ligne donnant la possibilité d'indiquer un autre chemin. * Une fois toutes les modifications faîtes, on clique sur ''Sauvegarder''. {{ :linux:backuppc:backuppc_010.png |}} ===== Sauvegarde d'un poste Linux distant ===== ==== Paramétrage côté serveur ==== * On va créé une clé RSA afin de faciliter l'authentification sur les postes clients Linux. Du coup, sur le serveur, on se connecte en tant qu'utilisateur ''backuppc'' : <code:bash>sudo -i -u backuppc</code> * On crée la clé RSA : <code:bash>ssh-keygen -t rsa -b 2048</code> * On copie le contenu de la clé publique (fichier ''~/.ssh/id_rsa.pub'') afin de l'enregistrer sur le poste à sauvegarder. ==== Paramétrage côté client ==== * On édite le fichier ''/root/.ssh/authorized_keys'' : <code:bash>nano /root/.ssh/authorized_keys</code> * On ajoute une nouvelle ligne sous format ''ssh-rsa clé== backuppc@serveur'' en remplaçant **ssh-rsa clé** par la clé publique copié précédemment. * On enregistre et on quitte. ==== Test de connexion coté serveur ==== * On se connecte en tant que ''backuppc'' : <code:bash>sudo -i -u backuppc</code> * On teste la connexion ssh (en remplaçant ''client'' par le nom ou l'adresse du client à tester) : <code:sh>ssh root@client</code> * Si tout va bien, on peut passer à la fin de la configuration. ==== Ajout et paramétrage de la tâche de sauvegarde ==== * Depuis l'interface graphique, on va dans le menu ''Modifier les machines'', on clique sur ''Ajouter'' et dans la nouvelle ligne, on indique dans : * **host** : le nom du client * **user** : l'utilisateur de sauvegarde soit ''backuppc'' * On enregistre. {{ :linux:backuppc:backuppc_011.png |}} * Ensuite, dans la section ''Hôtes'', on sélectionne le nouveau client (si il n'apparaît pas, on clique d'abord un coup sur ''Rechercher'' afin de rafraîchir la liste). * Dans le nouveau menu, on clique sur ''Modifier la configuration'' puis sur l'onglet ''Xfer''. {{ :linux:backuppc:backuppc_012.png |}} * Là, on va vérifier que **XferMethod** est sur ''rsync'' (et modifier le cas échéant). * On sauvegarde au besoin. ==== Test de la sauvegarde ==== * On clique sur ''Client Accueil'' et on clique sur ''Démarrer la sauvegarde complète''. {{ :linux:backuppc:backuppc_013.png |}} * Sur l'écran suivant, on confirne le démarrage de la sauvegarde. * Si tout va bien, après un retour sur la page d'accueil du client et l'attente de la fin de la sauvegarde, le résumé s'affiche et n'indique aucune erreur. {{ :linux:backuppc:backuppc_014.png |}} <note tip>Votre tâche de sauvegarde est opérationnelle. Il ne vous reste plus qu'à faire la même chose pour tous les autres clients Linux.</note> ===== Script de supervision ===== Les informations sur l'état des sauvegardes sont affichées dans l'interface graphique et envoyées par mail. Cependant, on a pas toujours les yeux fixés sur l'interface et les mails peuvent se perdre dans un flot important de réception de messages. Le script suivant permet de lire les logs de BackupPC afin de savoir si la sauvegarde d'une machine est à jour ou pas. Il renvoie un résultat lisible par Nagios pour obtenir des alertes visuelles. <note important>Pour pouvoir utiliser les commandes spéciales de BackupPC et accéder à ses logs, l'utilisateur ''nagios'' doit faire parti du groupe ''backuppc''</note> Pour intégrer l'utilisateur ''nagios'' au groupe ''backuppc'' : <code:bash>adduser nagios backuppc</code> Script de supervision : <code:sh>#!/bin/bash ############################################################################### # # Script de vérification des sauvegardes de BackupPC # # Par Nicolas THOREZ # ############################################################################### ##### Déclarations des fonctions ##### # Fonction d'affichage de l'aide display-help() { echo "Aide pour check-backup.sh" echo "" echo "Script de vérification des sauvegardes de BackupPC." echo "" echo "Usage : ./check-backup.sh [-s|--server] nom_du_serveur [-w|--warning] duréé_pour_avertissement [-c|--critical] durée_pour_critique" echo "" echo "Demande d'aide : ./check-backup.sh [-h|--help]" echo "" echo "Paramètres et arguments :" echo "" echo "-h, --help Affiche cette aide." echo "" echo "-s, --server Nom du serveur dont il faut vérifier l'état de la dernière sauvegarde." echo "" echo "-c, --critical Ecart en nombre de jour à partir duquel on déclenche une alerte critique." echo " La valeur par défaut est 7 (1 semaine)." echo "" echo "-w, --warning Ecart en nombre de jour à partir duquel on déclenche un avertissement." echo " La valeur par défaut est 1 (1 jour)." echo "" exit 2 } ##### Déclarations des variables ##### # Dossier de logs de BackupPC LOG_DIR="/var/lib/backuppc/log" ##### Traitement des arguments en entrée ##### while [[ $# -gt 0 ]] do PARAM="$1" case $PARAM in # aide "-h"|"--help") display-help shift ;; # serveur "-s"|"--server") SERVER="$2" shift shift ;; # critique "-c"|"--critical") CRITICAL="$2" shift shift ;; # avertissement "-w"|"--warning") WARNING="$2" shift shift ;; # autres options non déterminées *) display-help shift ;; esac done ##### Vérification des arguments ##### # Vérification de la variable SERVER if [ -z "$SERVER" ] then echo "[CRIT] Le nom du serveur est obligatoire." echo "[INFO] Utilisez l'option -h pour avoir de l'aide." exit 2 fi # Vérification de la variable WARNING if [ -z "$WARNING" ] then WARNING=1 fi # Vérification de la variable CRITICAL if [ -z "$CRITICAL" ] then CRITICAL=7 fi ##### Traitement ##### # Recherche d'une sauvegarde dans le fichier log du jour SAVE=$(cat $LOG_DIR/LOG | grep -E "(Finished incr backup|Finished full backup)"| grep -i "$SERVER" | tail -n 1) if [ -z "$SAVE" ] then # Pas de sauvegarde dans le log du jour -> On cherche dans les vieux log SAVE=$(/usr/share/backuppc/bin/BackupPC_zcat $LOG_DIR/LOG.*.z | grep -E '(Finished incr backup|Finished full backup)'| grep -i "$SERVER" | head -n 1) if [ -z "$SAVE" ] then # Pas de sauvegarde -> Alerte critique echo "[CRIT] Pas de sauvegarde. Merci de regarder les logs." exit 2 else # Une sauvegarde a été trouvée -> On récupère sa date SAVEDATE=$(echo $SAVE | awk '{ print $1,$2 }') # On calcule l'écart de jours SAVEDATESTAMP=$(date --date="$SAVEDATE" +%s) TODAYSTAMP=$(date --date="now" +%s) DELTASEC=$(($TODAYSTAMP-$SAVEDATESTAMP)) DELTA=$(($DELTASEC/86400)) # On vérifie si le delta est supérieur ou égal au seuil critique if [[ $DELTA -ge $CRITICAL ]] then # Oui -> Alerte critique echo "[CRIT] Pas de sauvegarde depuis plus de $DELTA jour(s)." exit 2 else # Non -> On vérifie si le delta est supérieur ou égal au seuil d'avertissement if [[ $DELTA -ge $WARNING ]] then # Oui -> Avertissement echo "[WARN] Pas de sauvegarde depuis plus de $DELTA jour(s)." exit 1 else # Non -> La sauvegarde est bonne echo "[GOOD] Sauvegarde OK." exit 0 fi fi fi else # Sauvegarde trouvée dans le log du jour echo "[GOOD] Sauvegarde OK." exit 0 fi # Si on n'est toujours pas sorti du script à ce niveau -> Erreur inconnue echo "[UNKN] Erreur inconnue." exit 3</code> --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2019/11/14 10:55// ~~DISCUSSION~~

Entrer votre commentaire. La syntaxe wiki est autorisée:
 
  • linux_backuppc.1575555079.txt.gz
  • Dernière modification : 2019/12/05 13:11
  • (modification externe)