Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| linux_backuppc [2019/11/14 11:04] – [Sauvegarde du poste local] nekan | linux_backuppc [2021/03/05 14:55] (Version actuelle) – nekan | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ~~CLOSETOC~~ | ||
| ====== BackupPC - Installation d'une solution de sauvegarde sous Linux ====== | ====== BackupPC - Installation d'une solution de sauvegarde sous Linux ====== | ||
| + | <label type=" | ||
| La sauvegarde est et sera toujours un élément incontournable d'une infrastructure. Pour Linux, il existe plusieurs solutions. Nous allons voir ici '' | La sauvegarde est et sera toujours un élément incontournable d'une infrastructure. Pour Linux, il existe plusieurs solutions. Nous allons voir ici '' | ||
| - | <note>Cette procédure a été réalisé sur une debian 9.</note> | + | <callout type=" |
| - | + | <callout type=" | |
| - | + | ||
| - | <note warning>Cette procédure nécessite des accès root. Faîtes donc attention à ce que vous faîtes.</ | + | |
| ===== Prérequis ===== | ===== Prérequis ===== | ||
| Ligne 14: | Ligne 12: | ||
| Il faut prendre en compte quelques points essentiels, généralement abordés lors de l' | Il faut prendre en compte quelques points essentiels, généralement abordés lors de l' | ||
| - | * Il faut calculer l' | + | * Il faut calculer l' |
| - | * Il faut garantir la pérennité de la sauvegarde, via une externalisation de cette dernière par exemple afin d' | + | * Il faut garantir la pérennité de la sauvegarde, via une externalisation de cette dernière par exemple afin d' |
| ===== Installation ===== | ===== Installation ===== | ||
| * Comme d' | * Comme d' | ||
| - | <code:bash> | + | <sxh bash> |
| * On installe les paquets nécessaires : | * On installe les paquets nécessaires : | ||
| - | <code:bash> | + | <sxh bash> |
| * Lors de l' | * Lors de l' | ||
| - | {{ : | + | <image shape=" |
| * La page suivante nous indique la création d'un utilisateur/ | * La page suivante nous indique la création d'un utilisateur/ | ||
| - | {{ : | + | <image shape=" |
| * Après validation, l' | * Après validation, l' | ||
| * Pour être sûr de pouvoir se connecter à l' | * Pour être sûr de pouvoir se connecter à l' | ||
| - | <code:bash> | + | <sxh bash> |
| * Il ne reste plus qu'à paramétrer le pare-feu pour permettre l' | * Il ne reste plus qu'à paramétrer le pare-feu pour permettre l' | ||
| Ligne 35: | Ligne 33: | ||
| * On va commencer par modifier le mot de passe par défaut pour utiliser un mot de passe correspondant à notre politique de sécurité : | * 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> | + | <sxh bash> |
| * On peut alors se connecter au service grâce à l'URL donnée durant l' | * On peut alors se connecter au service grâce à l'URL donnée durant l' | ||
| + | * Si votre navigateur renvoie une erreur 403, éditez le fichier ''/ | ||
| * On s' | * On s' | ||
| - | {{ : | + | <image shape=" |
| * On arrive sur la page d' | * On arrive sur la page d' | ||
| - | {{ : | + | <image shape=" |
| * On commence par mettre le programme en français. Pour celà, dans le menu '' | * On commence par mettre le programme en français. Pour celà, dans le menu '' | ||
| - | {{ : | + | <image shape=" |
| * On recharge l' | * On recharge l' | ||
| * On règle ensuite le mode de sauvegarde par défaut. Pour celà, on va dans le menu '' | * On règle ensuite le mode de sauvegarde par défaut. Pour celà, on va dans le menu '' | ||
| Ligne 51: | Ligne 50: | ||
| * On utilisera donc '' | * On utilisera donc '' | ||
| * On oublie pas de sauvegarder une fois les modifications faîtes. | * On oublie pas de sauvegarder une fois les modifications faîtes. | ||
| - | {{ : | + | <image shape=" |
| * 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 '' | * 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 '' | ||
| * **FullAgeMax** : La rétention des sauvegardee complètes, je garde 30 jours. | * **FullAgeMax** : La rétention des sauvegardee complètes, je garde 30 jours. | ||
| * **IncrAgeMax** : La rétention des sauvegardes incrémentielles, | * **IncrAgeMax** : La rétention des sauvegardes incrémentielles, | ||
| * **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. | * **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. | ||
| - | {{ : | + | <image shape=" |
| * Par défaut, BackupPC stocke les sauvegardes dans ''/ | * Par défaut, BackupPC stocke les sauvegardes dans ''/ | ||
| * On arrête le processus : | * On arrête le processus : | ||
| - | <code:bash> | + | <sxh bash> |
| * On crée le répertoire de destinastion si il n' | * On crée le répertoire de destinastion si il n' | ||
| - | <code:bash> | + | <sxh bash> |
| * On synchronise le contenu des dossiers : | * On synchronise le contenu des dossiers : | ||
| - | <code:bash> | + | <sxh bash> |
| * On supprime l' | * On supprime l' | ||
| - | <code:bash>rm -rf / | + | <sxh bash>rm -rf / |
| * On crée un lien symbolique : | * On crée un lien symbolique : | ||
| - | <code:bash>ln -s / | + | <sxh bash>ln -s / |
| * On met à jour les droits : | * On met à jour les droits : | ||
| - | <code:bash> | + | <sxh bash> |
| * On relance le service : | * On relance le service : | ||
| - | <code:bash> | + | <sxh bash> |
| * Il ne nous reste plus qu'à paramétrer les notifications. Dans le menu '' | * Il ne nous reste plus qu'à paramétrer les notifications. Dans le menu '' | ||
| * **EMailFromUserName** : e-mail de l' | * **EMailFromUserName** : e-mail de l' | ||
| * **EMailAdminUserName** : e-mail de l' | * **EMailAdminUserName** : e-mail de l' | ||
| * On enregistre avec le bouton '' | * On enregistre avec le bouton '' | ||
| - | {{ : | + | <image shape=" |
| - | <note important> | + | <callout type=" |
| - | <note tip> | + | <callout type=" |
| ===== Sauvegarde du poste local ===== | ===== Sauvegarde du poste local ===== | ||
| Ligne 86: | Ligne 85: | ||
| * Pour le poste local, on utilisera la méthode '' | * Pour le poste local, on utilisera la méthode '' | ||
| * On commence par modifier le fichier ''/ | * On commence par modifier le fichier ''/ | ||
| - | <code:bash> nano / | + | <sxh bash> nano / |
| * On y ajoute la ligne '' | * On y ajoute la ligne '' | ||
| * On enregistre et on quitte. | * 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' | * Le poste étant ajouté par défaut aux tâches de sauvegarde, on va juste affiner son paramétrage. Du coup, depuis l' | ||
| - | {{ : | + | <image shape=" |
| * Dans la page de configuration, | * Dans la page de configuration, | ||
| * **XferMethod** et on choisit '' | * **XferMethod** et on choisit '' | ||
| - | * **TarClientCmd** et on modifie le champs correspondant avec ''/ | + | * **TarClientCmd** et on modifie le champs correspondant avec ''/ |
| * **TarShareName** (Optionnel). Ce chaamp permet de spécifier quels dossiers doivent être sauvegardés. Par défaut, c'est la racine ''/'' | * **TarShareName** (Optionnel). Ce chaamp permet de spécifier quels dossiers doivent être sauvegardés. Par défaut, c'est la racine ''/'' | ||
| * Une fois toutes les modifications faîtes, on clique sur '' | * Une fois toutes les modifications faîtes, on clique sur '' | ||
| - | {{ : | + | <image shape=" |
| ===== Sauvegarde d'un poste Linux distant ===== | ===== Sauvegarde d'un poste Linux distant ===== | ||
| Ligne 103: | Ligne 102: | ||
| * On va créé une clé RSA afin de faciliter l' | * On va créé une clé RSA afin de faciliter l' | ||
| - | <code:bash> | + | <sxh bash> |
| * On crée la clé RSA : | * On crée la clé RSA : | ||
| - | <code:bash> | + | <sxh bash> |
| * On copie le contenu de la clé publique (fichier '' | * On copie le contenu de la clé publique (fichier '' | ||
| Ligne 111: | Ligne 110: | ||
| * On édite le fichier ''/ | * On édite le fichier ''/ | ||
| - | <code:bash> | + | <sxh bash> |
| * On ajoute une nouvelle ligne sous format '' | * On ajoute une nouvelle ligne sous format '' | ||
| * On enregistre et on quitte. | * On enregistre et on quitte. | ||
| Ligne 118: | Ligne 117: | ||
| * On se connecte en tant que '' | * On se connecte en tant que '' | ||
| - | <code:bash> | + | <sxh bash> |
| * On teste la connexion ssh (en remplaçant '' | * On teste la connexion ssh (en remplaçant '' | ||
| - | <code:sh>ssh root@client</ | + | <sxh bash>ssh root@client</ |
| * Si tout va bien, on peut passer à la fin de la configuration. | * Si tout va bien, on peut passer à la fin de la configuration. | ||
| Ligne 129: | Ligne 128: | ||
| * **user** : l' | * **user** : l' | ||
| * On enregistre. | * On enregistre. | ||
| - | {{ : | + | <image shape=" |
| * Ensuite, dans la section '' | * Ensuite, dans la section '' | ||
| * Dans le nouveau menu, on clique sur '' | * Dans le nouveau menu, on clique sur '' | ||
| - | {{ : | + | <image shape=" |
| * Là, on va vérifier que **XferMethod** est sur '' | * Là, on va vérifier que **XferMethod** est sur '' | ||
| * On sauvegarde au besoin. | * On sauvegarde au besoin. | ||
| Ligne 139: | Ligne 138: | ||
| * On clique sur '' | * On clique sur '' | ||
| - | {{ : | + | <image shape=" |
| * Sur l' | * Sur l' | ||
| * Si tout va bien, après un retour sur la page d' | * Si tout va bien, après un retour sur la page d' | ||
| - | {{ : | + | <image shape=" |
| + | |||
| + | <callout type=" | ||
| + | |||
| + | ===== Script de supervision ===== | ||
| + | |||
| + | Les informations sur l' | ||
| + | |||
| + | 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. | ||
| + | |||
| + | <callout type=" | ||
| + | |||
| + | Pour intégrer l' | ||
| + | <sxh bash> | ||
| + | |||
| + | Script de supervision : | ||
| + | <sxh bash># | ||
| + | |||
| + | ############################################################################### | ||
| + | # | ||
| + | # Script de vérification des sauvegardes de BackupPC | ||
| + | # | ||
| + | # Par Nicolas THOREZ | ||
| + | # | ||
| + | ############################################################################### | ||
| + | |||
| + | ##### Déclarations des fonctions ##### | ||
| + | |||
| + | # Fonction d' | ||
| + | display-help() | ||
| + | { | ||
| + | echo "Aide pour check-backup.sh" | ||
| + | echo "" | ||
| + | echo " | ||
| + | echo "" | ||
| + | echo "Usage : | ||
| + | echo "" | ||
| + | echo " | ||
| + | echo "" | ||
| + | echo " | ||
| + | echo "" | ||
| + | echo "-h, --help | ||
| + | echo "" | ||
| + | echo "-s, --server | ||
| + | echo "" | ||
| + | echo "-c, --critical | ||
| + | echo " | ||
| + | echo "" | ||
| + | echo "-w, --warning | ||
| + | echo " | ||
| + | echo "" | ||
| + | exit 2 | ||
| + | } | ||
| + | ##### Déclarations des variables ##### | ||
| + | |||
| + | # Dossier de logs de BackupPC | ||
| + | LOG_DIR="/ | ||
| + | |||
| + | ##### Traitement des arguments en entrée ##### | ||
| + | |||
| + | while [[ $# -gt 0 ]] | ||
| + | do | ||
| + | PARAM=" | ||
| + | case $PARAM in | ||
| + | # aide | ||
| + | " | ||
| + | display-help | ||
| + | shift | ||
| + | ;; | ||
| + | # serveur | ||
| + | " | ||
| + | SERVER=" | ||
| + | shift | ||
| + | shift | ||
| + | ;; | ||
| + | # critique | ||
| + | " | ||
| + | CRITICAL=" | ||
| + | shift | ||
| + | shift | ||
| + | ;; | ||
| + | # avertissement | ||
| + | " | ||
| + | WARNING=" | ||
| + | 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 " | ||
| + | then | ||
| + | echo " | ||
| + | echo " | ||
| + | exit 2 | ||
| + | fi | ||
| + | |||
| + | # Vérification de la variable WARNING | ||
| + | if [ -z " | ||
| + | then | ||
| + | WARNING=1 | ||
| + | fi | ||
| + | |||
| + | # Vérification de la variable CRITICAL | ||
| + | if [ -z " | ||
| + | then | ||
| + | CRITICAL=7 | ||
| + | fi | ||
| + | |||
| + | ##### Traitement ##### | ||
| + | |||
| + | # Recherche d'une sauvegarde dans le fichier log du jour | ||
| + | SAVE=$(cat $LOG_DIR/ | ||
| + | |||
| + | if [ -z " | ||
| + | then | ||
| + | # Pas de sauvegarde dans le log du jour -> On cherche dans les vieux log | ||
| + | SAVE=$(/ | ||
| + | |||
| + | if [ -z " | ||
| + | then | ||
| + | # Pas de sauvegarde -> Alerte critique | ||
| + | echo " | ||
| + | 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' | ||
| + | SAVEDATESTAMP=$(date --date=" | ||
| + | TODAYSTAMP=$(date --date=" | ||
| + | DELTASEC=$(($TODAYSTAMP-$SAVEDATESTAMP)) | ||
| + | DELTA=$(($DELTASEC/ | ||
| + | |||
| + | # On vérifie si le delta est supérieur ou égal au seuil critique | ||
| + | if [[ $DELTA -ge $CRITICAL ]] | ||
| + | then | ||
| + | # Oui -> Alerte critique | ||
| + | echo " | ||
| + | exit 2 | ||
| + | else | ||
| + | # Non -> On vérifie si le delta est supérieur ou égal au seuil d' | ||
| + | if [[ $DELTA -ge $WARNING ]] | ||
| + | then | ||
| + | # Oui -> Avertissement | ||
| + | echo " | ||
| + | exit 1 | ||
| + | else | ||
| + | # Non -> La sauvegarde est bonne | ||
| + | echo " | ||
| + | exit 0 | ||
| + | fi | ||
| + | fi | ||
| + | fi | ||
| + | else | ||
| + | # Sauvegarde trouvée dans le log du jour | ||
| + | echo " | ||
| + | exit 0 | ||
| + | fi | ||
| + | |||
| + | # Si on n'est toujours pas sorti du script à ce niveau -> Erreur inconnue | ||
| + | echo " | ||
| + | exit 3</ | ||
| + | |||
| + | ====== Erreurs et Corrections ====== | ||
| + | |||
| + | ===== fileListReceive failed ===== | ||
| + | |||
| + | <panel type=" | ||
| + | |||
| + | <panel type=" | ||
| + | <sxh bash> | ||
| + | |||
| + | L' | ||
| + | |||
| + | <sxh bash>/ | ||
| + | |||
| + | Dans le cas contraire, la correction est nécessaire. | ||
| + | </ | ||
| + | |||
| + | <panel type=" | ||
| + | <sxh bash>apt update && apt install -y rsync</ | ||
| + | </ | ||
| + | |||
| + | ===== no ping response from localhost ===== | ||
| + | |||
| + | <panel type=" | ||
| + | |||
| + | <panel type=" | ||
| + | <sxh bash> | ||
| + | |||
| + | La commande doit renvoyer : | ||
| + | |||
| + | <sxh bash> | ||
| - | <note tip> | + | Dans le cas contraire, la correction |
| + | </panel> | ||
| - | | + | <panel type=" |
| + | Éditez le ficher '' | ||
| ~~DISCUSSION~~ | ~~DISCUSSION~~ | ||