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édentes Révision précédente
Prochaine révision
Révision précédente
backuppc [Le 23/08/2014, 19:53]
0ol c'est plus propre de mettre le fichier backuppc.conf pour apache dans les sites available et de faire un a2ensite.
backuppc [Le 13/05/2023, 17:08] (Version actuelle)
79.80.66.205 [Installation]
Ligne 1: Ligne 1:
-{{tag>Lucid  Precise Trusty ​réseau serveur sécurité sauvegarde }}+{{tag>bionic focal réseau serveur sécurité sauvegarde }}
 ---- ----
 +{{ :​image:​backuppc-logo.gif?​80|}}
 ====== Serveur de sauvegarde automatique : BackupPC ====== ====== Serveur de sauvegarde automatique : BackupPC ======
-{{ :​image:​backuppc-logo.gif?​150 |}} 
 **BackupPC** est un logiciel libre de [[:​sauvegarde|sauvegardes]] de données informatiques,​ publié sous licence GPL.\\ **BackupPC** est un logiciel libre de [[:​sauvegarde|sauvegardes]] de données informatiques,​ publié sous licence GPL.\\
 Il permet d'​assurer une politique de sauvegardes "​versionnées"​ pour des clients de différents types (Unix, GNU/Linux, Windows, Mac) Il permet d'​assurer une politique de sauvegardes "​versionnées"​ pour des clients de différents types (Unix, GNU/Linux, Windows, Mac)
- 
-===== Présentation ====== 
  
 **BackupPC** est utilisé pour sauvegarder un ensemble de postes. Il possède une interface Web pour configurer, lancer des sauvegardes ou restaurer des fichiers. Il est également possible de sauvegarder des bases de données. **BackupPC** est utilisé pour sauvegarder un ensemble de postes. Il possède une interface Web pour configurer, lancer des sauvegardes ou restaurer des fichiers. Il est également possible de sauvegarder des bases de données.
Ligne 13: Ligne 10:
 BackupPC permet de sauvegarder automatiquement à des intervalles de temps réguliers des répertoires situés sur des machines du réseau. BackupPC permet de sauvegarder automatiquement à des intervalles de temps réguliers des répertoires situés sur des machines du réseau.
  
-[[http://​backuppc.sourceforge.net/​faq/​BackupPC.html#​overview|Il peut également faire beaucoup plus…]] même s'il a quelques [[http://​backuppc.sourceforge.net/​faq/​limitations.html|limites]]. ​+[[http://​backuppc.sourceforge.net/​faq/​BackupPC.html#​overview|Il peut également faire beaucoup plus…]] même s'il a quelques [[http://​backuppc.sourceforge.net/​faq/​limitations.html|limites]].
  
 BackupPC peut utiliser plusieurs protocoles pour les sauvegardes : BackupPC peut utiliser plusieurs protocoles pour les sauvegardes :
   * [[:Samba]] : Utilise le logiciel //​SmbClient//​ pour le transfert des données. C'est un bon choix pour sauvegarder des machines sous Windows.   * [[:Samba]] : Utilise le logiciel //​SmbClient//​ pour le transfert des données. C'est un bon choix pour sauvegarder des machines sous Windows.
   * [[:rSync]] : Utilise le logiciel //RSync// pour le transfert des données. C'est un bon choix pour sauvegarder des machines sous Linux, sous Mac ou sous windows.   * [[:rSync]] : Utilise le logiciel //RSync// pour le transfert des données. C'est un bon choix pour sauvegarder des machines sous Linux, sous Mac ou sous windows.
-  * [[http://​www.samba.org/​ftp/​rsync/​rsyncd.conf.html|rSyncd]] : Utilise le //daemon// « rsyncd » installé sur chaque client. C'est un bon choix pour sauvegarder des machines sous Linux et sous Windows.+  * [[https://​www.samba.org/​ftp/​rsync/​rsyncd.conf.html|rSyncd]] : Utilise le //daemon// « rsyncd » installé sur chaque client. C'est un bon choix pour sauvegarder des machines sous Linux et sous Windows.
   * [[:Tar]] : Utilise le logiciel Tar. C'est un bon choix pour sauvegarder des machines sous Linux.   * [[:Tar]] : Utilise le logiciel Tar. C'est un bon choix pour sauvegarder des machines sous Linux.
  
Ligne 27: Ligne 24:
 Le logiciel se réveille toutes les heures pour sonder l'​ensemble des machines spécifiées dans le fichier **/​etc/​backuppc/​hosts**.\\ Le logiciel se réveille toutes les heures pour sonder l'​ensemble des machines spécifiées dans le fichier **/​etc/​backuppc/​hosts**.\\
 Puis, pour chaque poste allumé, il fonctionne ainsi : Puis, pour chaque poste allumé, il fonctionne ainsi :
-  * Interrogation de la période du Blackout: si l'​hôte est dans sa période d'​exctinction,​ le serveur passe à la machine suivante. Ce qui peut-être bien pratique pour des machines nomades.+  * Interrogation de la période du Blackout: si l'​hôte est dans sa période d'​exctinction,​ le serveur passe à la machine suivante. Ce qui peut être bien pratique pour des machines nomades.
   * Sinon, il étudie la machine hôte.   * Sinon, il étudie la machine hôte.
  
Ligne 38: Ligne 35:
  
 ===== Installation ===== ===== Installation =====
- 
-==== Version des dépôts ==== 
 Backuppc est [[http://​sourceforge.net/​apps/​mediawiki/​backuppc/​index.php?​title=Supporting_distros|supporté]] par un bon nombre de [[wpfr>​Linux#​Distributions|distributions linux]].\\ Backuppc est [[http://​sourceforge.net/​apps/​mediawiki/​backuppc/​index.php?​title=Supporting_distros|supporté]] par un bon nombre de [[wpfr>​Linux#​Distributions|distributions linux]].\\
-Étant disponible dans les [[:​dépôts]] de chaque [[:​versions|versions d'​Ubuntu]],​ il suffira d'​[[:​tutoriel:​comment_installer_un_paquet|installer le paquet]] **[[apt>​backuppc|backuppc]]** [[http://​packages.ubuntu.com/​search?​keywords=backuppc&​searchon=names&​suite=all&​section=all|correspondant]] sur votre serveur de sauvegarde, puis de vous laissez guider.+Étant disponible dans les [[:​dépôts]] de chaque [[:​versions|versions d'​Ubuntu]],​ il suffira d'​[[:​tutoriel:​comment_installer_un_paquet|installer le paquet]] **[[apt>​backuppc|backuppc]]** [[https://​packages.ubuntu.com/​search?​keywords=backuppc&​searchon=names&​suite=all&​section=all|correspondant]] sur votre serveur de sauvegarde, puis de vous laissez guider.
  
-=== Backuppc sous Ubuntu utilisera par défaut: === +=== Backuppc sous Ubuntu utilisera par défaut: ===
   * [[:​postfix]] pour envoyer des mails.\\ Le [[:​postfix_systeme_satellite|mode satellite]] peut vous convenir.   * [[:​postfix]] pour envoyer des mails.\\ Le [[:​postfix_systeme_satellite|mode satellite]] peut vous convenir.
   * [[:​Apache2]] pour fournir l'​interface Web.\\ L'​utilisation de ce dernier permet une configuration automatique.   * [[:​Apache2]] pour fournir l'​interface Web.\\ L'​utilisation de ce dernier permet une configuration automatique.
Ligne 59: Ligne 54:
  
 === Ajout de l'​utilisateur dans le groupe backuppc :=== === Ajout de l'​utilisateur dans le groupe backuppc :===
-Pour démarrer backuppc, il faut ajouter l'​utilisateur de la session dans le groupe backuppc. Pour cela, il faut exécuter la ligne de commande suivante :  +Pour démarrer backuppc, il faut ajouter l'​utilisateur de la session dans le groupe backuppc. Pour cela, il faut exécuter la ligne de commande suivante : <​code>​sudo adduser [MON_USER] backuppc</​code>​
- +
-<​code>​sudo adduser [MON_USER] backuppc</​code>​+
  
 === Ajout du fichier apache.conf === === Ajout du fichier apache.conf ===
-Comme l'​installation ne copie pas le /​etc/​backuppc/​apache.conf sur le serveur apache2. Il faut le faire soit même en copiant le fichier dans le répertoire /​etc/​apache2/​conf-available/ avant de rendre actif le site: +Comme l'​installation ne copie pas le **/​etc/​backuppc/​apache.conf** sur le serveur apache2, il faut le faire soi-même en copiant le fichier dans le répertoire ​**/​etc/​apache2/​sites-available/** avant de rendre actif le site, pour cela utilisez la commande suivante : <​code>​sudo cp /​etc/​backuppc/​apache.conf /​etc/​apache2/​sites-available/​backuppc.conf</​code>​ 
-  * Copie du fichier .conf dans /​etc/​apache2/​conf-available/​ +Puis activez le site : <​code>​sudo a2ensite backuppc.conf</​code>​
-<​code>​sudo cp /​etc/​backuppc/​apache.conf /​etc/​apache2/​conf-available/​backuppc.conf</​code>​ +
-  * Activation du site +
-  ​sudo a2ensite backuppc.conf+
   ​   ​
 <​note>​ <​note>​
Ligne 76: Ligne 66:
 <​code>​sudo /​etc/​init.d/​apache2 restart</​code>​ <​code>​sudo /​etc/​init.d/​apache2 restart</​code>​
  
- +<​note>​ 
-==== Version des backports ==== +Si vous avez une page d'erreur du type **Forbidden - You don't have permission to access this resource**, il faut ajouter dans le fichier ​backuppc.conf la ligne <​code>​Require all granted</​code>​ en-dessous de la ligne <​code>​Options ExecCGI FollowSymlinks</​code>​ puis redémarrer le serveur web 
-Vous pouvez choisir ​d'installer une  version de backuppc ​plus récente depuis les [[:​depots#​backports|dépôts backports]].+<​code>​sudo /​etc/​init.d/​apache2 restart</​code>​ 
 +</​note> ​
  
 ===== Utilisation ===== ===== Utilisation =====
Ligne 104: Ligne 95:
 [[:​tutoriel:​comment_modifier_un_fichier|Modifier avec les droits d'​administration]] l'​option dans le fichier ​ [[:​tutoriel:​comment_modifier_un_fichier|Modifier avec les droits d'​administration]] l'​option dans le fichier ​
 <file perl  /​etc/​backuppc/​config.pl>​ <file perl  /​etc/​backuppc/​config.pl>​
- ​$Conf{Language} = '​en'; ​+ ​$Conf{Language} = '​en';​
 </​file>​ </​file>​
 pour obtenir pour obtenir
 <file perl  /​etc/​backuppc/​config.pl>​ <file perl  /​etc/​backuppc/​config.pl>​
- ​$Conf{Language} = '​fr'; ​+ ​$Conf{Language} = '​fr';​
 </​file>​ </​file>​
  
Ligne 119: Ligne 110:
 ==== Où sont sauvegardées les données ? ==== ==== Où sont sauvegardées les données ? ====
 === Par défaut === === Par défaut ===
-Les données sont sauvegardées dans des sous-répertoires de **/​var/​lib/​backuppc** ​+Les données sont sauvegardées dans des sous-répertoires de **/​var/​lib/​backuppc**
  
 === Changer le lieu de stockage === === Changer le lieu de stockage ===
 Cela n'est bien sûr pas obligatoire,​ mais cela peut-être pratique de ne pas laisser vos données dans le dossier **/var**. Cela n'est bien sûr pas obligatoire,​ mais cela peut-être pratique de ne pas laisser vos données dans le dossier **/var**.
  
-== Avec un lien symbolique == +== Avec un lien symbolique ==
 <note tips> <note tips>
 En utilisant un [[wpfr>​lien_symbolique|un lien symbolique]] vous ne risquerez pas de problème lié à l'​écrasement du fichier de configuration lors d'une mise à jour. En utilisant un [[wpfr>​lien_symbolique|un lien symbolique]] vous ne risquerez pas de problème lié à l'​écrasement du fichier de configuration lors d'une mise à jour.
Ligne 130: Ligne 121:
   * stopper le [[:​services|service]] backuppc: <​code>​sudo service backuppc stop</​code>​   * stopper le [[:​services|service]] backuppc: <​code>​sudo service backuppc stop</​code>​
   * créer votre répertoire de destination au préalable: <​code>​sudo mkdir /<​le_chemin/​repertoire_destination>/​backuppc/</​code>​   * créer votre répertoire de destination au préalable: <​code>​sudo mkdir /<​le_chemin/​repertoire_destination>/​backuppc/</​code>​
-  * copiez-y ce qui se trouve dans **/​var/​lib/​backuppc**:<​code>​sudo rsync -va /​var/​lib/​backuppc /<​le_chemin/​repertoire_destination>/​backuppc</​code>​+  * copiez-y ce qui se trouve dans **/​var/​lib/​backuppc**:<​code>​sudo rsync -va /​var/​lib/​backuppc /<​le_chemin/​repertoire_destination>/</​code>​
   * assurer vous que les [[:droits]] sur les fichiers et répertoires sont les mêmes.   * assurer vous que les [[:droits]] sur les fichiers et répertoires sont les mêmes.
   * supprimer ou déplacer (au cas où) le répertoire **/​var/​lib/​backuppc**   * supprimer ou déplacer (au cas où) le répertoire **/​var/​lib/​backuppc**
Ligne 138: Ligne 129:
  
 ===== Configurer les sauvegardes ===== ===== Configurer les sauvegardes =====
-Vous trouverez dans cette sections ​les différents types de sauvegardes testés par les contributeurs. N'​hésitez pas à y ajouter votre méthode s'il n'y est pas déjà listé.+Vous trouverez dans cette section ​les différents types de sauvegardes testés par les contributeurs. N'​hésitez pas à y ajouter votre méthode s'il n'y est pas déjà listé.
   * [[#​Sauvegarder un répertoire local via tar]]   * [[#​Sauvegarder un répertoire local via tar]]
   * [[#​Sauvegarde du poste local sur un disque dur externe USB]]   * [[#​Sauvegarde du poste local sur un disque dur externe USB]]
Ligne 201: Ligne 192:
   * Ajouter dans le fichier, la clef publique de l'​utilisateur "​backuppc"​ [[#​Manipulations sur le serveur de sauvegarde|précédemment générée]] ((donc visible dans le fichier **id_rsa.pub** du [[:​fichier_caché|répertoire caché]] **.ssh** dans le __Dossier Personnel du **serveur** de backup__)). //(Vous pouvez par exemple éditer les deux fichiers et  faire un simple copier/​coller.)//​   * Ajouter dans le fichier, la clef publique de l'​utilisateur "​backuppc"​ [[#​Manipulations sur le serveur de sauvegarde|précédemment générée]] ((donc visible dans le fichier **id_rsa.pub** du [[:​fichier_caché|répertoire caché]] **.ssh** dans le __Dossier Personnel du **serveur** de backup__)). //(Vous pouvez par exemple éditer les deux fichiers et  faire un simple copier/​coller.)//​
   * Pour plus de sécurité, rajouter au début du fichier la directive <​file>​from="​serveur"</​file>​   * Pour plus de sécurité, rajouter au début du fichier la directive <​file>​from="​serveur"</​file>​
-  * Vous devriez désormais avoir: ​+  * Vous devriez désormais avoir:
   * Sous le compte root   * Sous le compte root
 <​code>​ <​code>​
Ligne 243: Ligne 234:
   * Ajouter dans le fichier, la clef publique de l'​utilisateur "​backuppc"​ [[#​Manipulations sur le serveur de sauvegarde|précédemment générée]] ((donc visible dans le fichier **id_rsa.pub** du [[:​fichier_caché|répertoire caché]] **.ssh** dans le __Dossier Personnel du **serveur**__)). //(Vous pouvez par exemple éditer les deux fichiers et  faire un simple copier/​coller.)//​   * Ajouter dans le fichier, la clef publique de l'​utilisateur "​backuppc"​ [[#​Manipulations sur le serveur de sauvegarde|précédemment générée]] ((donc visible dans le fichier **id_rsa.pub** du [[:​fichier_caché|répertoire caché]] **.ssh** dans le __Dossier Personnel du **serveur**__)). //(Vous pouvez par exemple éditer les deux fichiers et  faire un simple copier/​coller.)//​
   * Pour plus de sécurité, rajouter au début du fichier la directive <​file>​from="​serveur"</​file>​   * Pour plus de sécurité, rajouter au début du fichier la directive <​file>​from="​serveur"</​file>​
-  * Vous devriez désormais avoir: ​+  * Vous devriez désormais avoir:
   * Sous le compte backup   * Sous le compte backup
 <​code>​ <​code>​
Ligne 289: Ligne 280:
 En cas de blocage suite à la réinstallation du poste à sauvegarder,​ la partie traitant de la [[:​ssh#​Gestion_des_clés|gestion des clefs]] vous sera sûrement d'une grande aide. En cas de blocage suite à la réinstallation du poste à sauvegarder,​ la partie traitant de la [[:​ssh#​Gestion_des_clés|gestion des clefs]] vous sera sûrement d'une grande aide.
 </​note>​ </​note>​
 +<​note>​ 
 +Si l'​erreur ssh est "This account is currently not available.",​ sur le client, éditer /​etc/​passwd,​ et pour le compte "​backup"​ remplacer "/​usr/​sbin/​nologin"​ par "/​bin/​sh"​ (rencontré sur ubuntu 14.10) 
 +</​note>​
 === Paramétrer l'​usage de ce compte par backuppc === === Paramétrer l'​usage de ce compte par backuppc ===
  
Ligne 295: Ligne 288:
 //onglet **Xfert** -> pour **rsync** -> chapitre **Chemins/​Commandes/​Args Rsync** // indiquer pour: //onglet **Xfert** -> pour **rsync** -> chapitre **Chemins/​Commandes/​Args Rsync** // indiquer pour:
   * ** RsyncClientCmd ** <​file>​$sshPath -q -x -l backup $hostIP /​usr/​bin/​sudo $rsyncPath $argList+</​file>​   * ** RsyncClientCmd ** <​file>​$sshPath -q -x -l backup $hostIP /​usr/​bin/​sudo $rsyncPath $argList+</​file>​
-  * ** RsyncClientRestoreCmd ** <​file>​$sshPath -q -x -l backup $hostIP /​usr/​bin/​sudo $rsyncPath $argList+ </​file>​+  * ** RsyncClientRestoreCmd ** <​file>​$sshPath -q -x -l backup $hostIP /​usr/​bin/​sudo $rsyncPath $argList+</​file>​
  
 == Depuis le fichier « /​etc/​backuppc/​config.pl » == == Depuis le fichier « /​etc/​backuppc/​config.pl » ==
Ligne 336: Ligne 329:
 Il suffira ensuite de suivre les instructions du fichier « README.TXT » de ce paquet. Il suffira ensuite de suivre les instructions du fichier « README.TXT » de ce paquet.
  
-Il sera donc considéré pour la suite de cet article que vous avez : +Il sera donc considéré pour la suite de cet article que vous avez :
   * un module « docs » partagé par //rsyncd// ;   * un module « docs » partagé par //rsyncd// ;
   * ce module doit permettre l'​accès en écriture à l'​utilisateur « UUU » avec le mot de passe « PPP » ;   * ce module doit permettre l'​accès en écriture à l'​utilisateur « UUU » avec le mot de passe « PPP » ;
Ligne 351: Ligne 344:
 $Conf{RsyncShareName} ​ = "​docs";​ $Conf{RsyncShareName} ​ = "​docs";​
 </​file>​ </​file>​
-Sauvegarder le fichier et recharger la configuration depuis [[#​Connexion à l'​interface Web|l'​interface Web]]. ​+Sauvegarder le fichier et recharger la configuration depuis [[#​Connexion à l'​interface Web|l'​interface Web]].
  
 ===== Sauvegarder des postes Windows via « smb » ===== ===== Sauvegarder des postes Windows via « smb » =====
Ligne 361: Ligne 354:
   - Effectuez les changements depuis [[#​Connexion à l'​interface Web|l'​interface Web]] ou en modifiants les fichiers **config.pl** et **hosts** comme indiqué ci-dessous.   - Effectuez les changements depuis [[#​Connexion à l'​interface Web|l'​interface Web]] ou en modifiants les fichiers **config.pl** et **hosts** comme indiqué ci-dessous.
  
-Pour l'​exemple ici:  +Pour l'​exemple ici: 
-  * nom d'​utilisateur créé sera -> //​backup// ​+  * nom d'​utilisateur créé sera -> //backup//
   * mot de pase -> //mdpbupc//   * mot de pase -> //mdpbupc//
   * dossier de partage -> //docs$//   * dossier de partage -> //docs$//
Ligne 376: Ligne 369:
 $Conf{SmbShareName} = '​docs$';​ $Conf{SmbShareName} = '​docs$';​
  </​file>​  </​file>​
-Sauvegarder le fichier et recharger la configuration depuis [[#​Connexion à l'​interface Web|l'​interface Web]]. ​+Sauvegarder le fichier et recharger la configuration depuis [[#​Connexion à l'​interface Web|l'​interface Web]].
  
 == Configuration du fichier « hosts » == == Configuration du fichier « hosts » ==
Ligne 382: Ligne 375:
 [[:​tutoriel:​comment_editer_un_fichier|Éditez le fichier]] **/​etc/​backuppc/​hosts** avec les droits d'​administration pour y ajouter cette ligne en fin de fichier ​ [[:​tutoriel:​comment_editer_un_fichier|Éditez le fichier]] **/​etc/​backuppc/​hosts** avec les droits d'​administration pour y ajouter cette ligne en fin de fichier ​
 <​file>​ 192.168.1.10 0 utilisateur UUU </​file>​ <​file>​ 192.168.1.10 0 utilisateur UUU </​file>​
-Sauvegarder le fichier et recharger la configuration depuis [[#​Connexion à l'​interface Web|l'​interface Web]]. ​+Sauvegarder le fichier et recharger la configuration depuis [[#​Connexion à l'​interface Web|l'​interface Web]].
  
 ===== Sauvegarder des PC éteints ===== ===== Sauvegarder des PC éteints =====
Ligne 390: Ligne 383:
 ==== Configuration du WOL sur le serveur ==== ==== Configuration du WOL sur le serveur ====
  
-L'​outil [[:etherwake|etherwake]] est parfait pour démarrer une machine à distance. Pour pouvoir utiliser ce dernier avec le nom de la machine au lieu de son adresse MAC, il faut compléter le fichier **/​etc/​ethers** :+L'​outil [[:wakeonlan|etherwake]] est parfait pour démarrer une machine à distance. Pour pouvoir utiliser ce dernier avec le nom de la machine au lieu de son adresse MAC, il faut compléter le fichier **/​etc/​ethers** :
 <​file>​ adresse:​MAC nom_machine </​file>​ <​file>​ adresse:​MAC nom_machine </​file>​
 Il va sans dire que le nom de la machine doit être déclaré comme dans le fichier ** /​etc/​backuppc/​hosts**. Il va sans dire que le nom de la machine doit être déclaré comme dans le fichier ** /​etc/​backuppc/​hosts**.
Ligne 429: Ligne 422:
 __**Explication:​**__ Une fois la commande etherwake exécutée: __**Explication:​**__ Une fois la commande etherwake exécutée:
   * il y a une pause d'une minute pour laisser le temps au pc de démarrer.   * il y a une pause d'une minute pour laisser le temps au pc de démarrer.
-  * Puis, la boucle while teste si le partage est actif. ​+  * Puis, la boucle while teste si le partage est actif.
   * Après 15 essais sans résultat la boucle s'​arrête.   * Après 15 essais sans résultat la boucle s'​arrête.
  
Ligne 452: Ligne 445:
 Pour parer à cela, vous êtes invité à lire le dernier message de [[http://​forum.ubuntu-fr.org/​viewtopic.php?​pid=2988204#​p2988204|cette discussion]]</​note>​ Pour parer à cela, vous êtes invité à lire le dernier message de [[http://​forum.ubuntu-fr.org/​viewtopic.php?​pid=2988204#​p2988204|cette discussion]]</​note>​
  
-== autre exemple de fichier ​**wol.sh** ​ qui conserve  ​l'​état précédent ==+== autre exemple de fichiers ​**wol.sh** ​et **shutdown.sh** améliorés ​qui conservent ​l'​état précédent ==
  
 +Pour utiliser ces scripts, veuillez mettre le paramètre **UserCmdCheckStatus** à **1** dans la configuration,​ ou ajoutez cette ligne au fichier **/​etc/​backuppc/​config.pl**:​
 +<​file>​$Conf{UserCmdCheckStatus} = '​1';</​file>​
 +ceci permet de dire à Backuppc de prendre en compte le code d'​erreur des scripts de réveil/​extinction.
 <file bash wol.sh> <file bash wol.sh>
 #!/bin/bash #!/bin/bash
 +
 declare -i z declare -i z
 z=0 z=0
 i=0 i=0
 filename=/​var/​lib/​backuppc/​$1.laststate filename=/​var/​lib/​backuppc/​$1.laststate
 +echo "​Starting wake on lan script"​
 echo "​Filename=$filename"​ echo "​Filename=$filename"​
 cnt=$(ping -c 1 $1 | awk -F, '/​received/​{print $2*1}'​) cnt=$(ping -c 1 $1 | awk -F, '/​received/​{print $2*1}'​)
 +
 echo "Count ping to host $1 = $cnt" echo "Count ping to host $1 = $cnt"
 +
 if [ $cnt -eq 0 ]; then if [ $cnt -eq 0 ]; then
- echo $cnt > $filename +    ​echo $cnt > $filename 
- echo "Send WOL to $1 and wait minutes"​ + 
- sudo /usr/bin/etherwake -i em1 $1 +    # Time to wait for machine to boot in minutes 
- sleep ​1m +    # Use value given as argument 
- while [ $i = 0 -a $z -lt 15 +    if [ -n "​$2"​ ] && [ "​$2"​ -eq "​$2"​ ] 2>/​dev/​null;​ then 
- do +      min=$2 
- count=$(ping -c 5 $1 | awk -F, '/​received/​{print $2*1}'​) +    else 
- if [ $count -eq 0 ]; then +      echo "​ Second argument given is not a valid number! : $2" 
-       echo "$1 is down"​  +      echo "​ Using default value: 2 minutes"​ 
- else +      min=2 
- i=1 +    fi 
-       fi +    m=$min"​m"​ 
- sleep 10s + 
- z=z+1 +    ​echo "Send WOL to $1 and wait $min minutes"​ 
- done+    sudo /usr/sbin/etherwake -i enp5s0 ​$1 
 +    sleep $m 
 +    while [ $i = 0 -a $z -lt 18 
 +    do 
 + count=$(ping -c 5 $1 | awk -F, '/​received/​{print $2*1}'​) 
 + if [ $count -eq 0 ]; then 
 +    ​  ​   ​echo "$1 is down" 
 +     if [ $z -eq 17 ]; then 
 + echo "$1 not up after `expr $min + 3` minutes... exiting"​ 
 + exit 1 
 +     fi 
 + else 
 +     ​i=1 
 +     echo "$1 is up" 
 +     exit 0 
 +        ​fi 
 + sleep 10s 
 + z=z+1 
 +    done
 else else
- echo $cnt > $filename+    ​echo $cnt > $filename 
 +    exit 0
 fi</​file>​ fi</​file>​
 +__**Explication:​**__ Ce script prend deux arguments: le nom d'​hôte de la machine en premier et un nombre en deuxième (correspondant au nombre de minutes à attendre une fois que la commande etherwake est executée).
 +  * le script exécute la commande etherwake sur la machine spécifiée
 +  * puis, la boucle while teste si la machine répond au ping
 +  * après le nombre de minutes spécifiées en second argument, si la machine est en ligne, la sauvegarde est effectuée. Si la machine ne répond pas, le script attend encore 3 minutes supplémentaires
 +  * si après les 3 minutes supplémentaires la machine ne répond toujours pas, le script s'​arrête et renvoi un code d'​erreur,​ qui est ensuite interprêté par backuppc
  
-== et le fichier **shutdown.sh**  qui prend en compte  ​l'état précédent ==+<​note>​Cette commande :<​file>​sudo /​usr/​sbin/​etherwake -i enp5s0 $1</​file>​peut varier selon les machinesVous devrez peut-être ​l'adapter à votre configuration.\\ 
 +Ici '​enp5s0'​ est l'​interface par laquelle est envoyée le paquet magique via ethernet. $1 est la variable du nom d'​hôte (ne doit pas être modifiée). 
 +</​note>​ 
 + 
 +Ainsi pour utiliser ce script il faut ajouter ce paramètre à la configuration:​ 
 +<​file>​$Conf{DumpPreUserCmd} ​    '/​etc/​backuppc/​wol.sh $host 3';</​file>​ 
 +Cette commande envoi le paquet magique et attend ensuite 3 minutes (à adapter selon vos besoins) le réveil de la machine (si rien n'est donné en second argument, le script utilise la valeur de 2 minutes par défaut).
  
 <file bash shutdown.sh>​ <file bash shutdown.sh>​
 #!/bin/bash #!/bin/bash
-filename=/var/lib/backuppc/$1.laststate +# Backuppc user script 
-echo "Filename=$filename+ 
-declare -i laststate +if [ "​$#"​ !2 ]; then 
-read laststate < $filename +    echo 
-echo "Last State Host $1 = $laststate"​ +    echo "The BackupPC user script takes two arguments:"​ 
-if [ $(date +%k) -lt 07 -o $(date +%k ) -gt 22 ]+    echo " First: a host name ( with a corresponding ​/etc/hosts entry )" 
 +    echo " Second: - either a number corresponding to the output of the backup process (0 = failed ​/ 1 = success)"​ 
 +    echo " ​        - OR -f to force shutdown a host" 
 +    echo 
 +    exit 1 
 +fi 
 + 
 +# Array of computers, in the form: [hostname]='​Username%Password'​ 
 +# these must be Administrator'​s accounts 
 +# Modify these according to your needs 
 +declare -A names 
 +names=( 
 +    ​[hostname1]='​adminuser1%password1'​ 
 +    [hostname2]='​adminuser2%password2'​ 
 +    [hostname3]='​adminuser3%password3'​ 
 +
 + 
 +for i in "${!names[@]}"​ 
 +do 
 +    if [ $i = $1 ]; then 
 +     host_name=$i 
 +     upwd=${names[$i]} 
 +    fi 
 +done 
 + 
 +# Exit if no corresponding host name found 
 +"$host_name"​ = ""​ ] && echo "Host unknown!"​ && exit 1 
 + 
 +# To stop a pc, if -f argument given wol script wasn't used and there is no host file ) 
 +if [ "​$2"​ = "-f" ​]
 then then
- if [ $2 != 1 ] +    ​/​usr/​bin/​net rpc SHUTDOWN -f -I $host_name ​-U "​$upwd" ​-t 
- then +    exit 0 
- if [ $laststate ​ != 1 ] +fi 
- then + 
- echo "Sent SHUTDOWN to host $1" +# File to record the host status 
- /​usr/​bin/​net rpc SHUTDOWN -f -I $-U '​Administrateur%motdepasse' ​-t 30 +filename=/​var/​lib/​backuppc/​$host_name.laststate 
- else +if [ -f $filename ] 
- echo "SHUTDOWN not sent to $1 cause Host already UP before+then 
- #echo sauvegarde terminé avec succès. | smbclient ​-$1 -U '​Administrateur%motdepasse'​ +    ​echo "Filename=$filename
- fi +    ​declare ​-i laststate 
- fi+    read laststate < $filename 
 +    echo "Last State Host $host_name = $laststate"​
 else else
-        if [ $2 = 1 ] +    ​echo "Missing ​host file!
-        then +    ​exit ​1
- echo "Sauvegarde $1 OK" +
-            #echo sauvegarde terminé avec succès. | smbclient -M $1 -U '​Administrateur%motdepasse'​ +
-        fi +
-        if [ $laststate = 0 ] +
-       ​ then +
- echo "Sent SHUTDOWN to host $1+
- /​usr/​bin/​net rpc SHUTDOWN -f -I $-U '​Administrateur%motdepasse'​ -t 30 +
-        fi+
 fi fi
-echo "​Delete $filename"​ 
-unlink $filename</​file>​ 
  
 +# Actions after backup
 +if [ $2 = 1 ] # Successfull backup
 +then
 +    echo "​Backup of $host_name OK"
 +    if [ $laststate = 0 ]
 +    then
 + # Last state off, send shutdown
 + echo "Sent SHUTDOWN to host $host_name"​
 + /​usr/​bin/​net rpc SHUTDOWN -f -I $host_name -U "​$upwd"​ -t 30
 +    else
 +        # Last state : up
 +        echo "​SHUTDOWN not sent to $host_name cause Host already UP before"​
 +    fi
 +elif [ $2 = 0 ] # backup error
 +then
 +    echo "​Problem during backup of $host_name"​
 +    # Only shutdown after unsuccesfull backup during out of office hours
 +    #if [ $(date +%k) -lt 07 -o $(date +%k ) -gt 22 ]
 +    #then
 +    #/​usr/​bin/​net rpc SHUTDOWN -f -I $host_name -U "​$upwd"​ -t 30
 +    #fi
 +fi
 +
 +if [ -f $filename ]
 +then
 +    echo "​Delete $filename"​
 +    unlink $filename
 +fi</​file>​
 +
 +__**Explication:​**__ Ce script prend deux arguments: le nom d'​hôte de la machine en premier et le code de résultat du backup en deuxième (0 = échec / 1 = succès).
 +  * si le backup est réussi: si la machine était précédemment éteinte, le script exécute la commande d'​arrêt avec les paramètres nom d'​utilisateur/​ mot de passe tels qu'​enregistrés dans le script
 +  * si la machine était allumée avant, la commande d'​arrêt,​ n'est pas envoyée
 +  * si le second argument est '​-f'​ (pour forcer), la machine correspondante est arrêtée quel que soit l'​état précédent
 +
 +Ainsi pour utiliser ce script il faut ajouter ce paramètre à la configuration:​
 +<​file>​$Conf{DumpPostUserCmd} ​   = '/​etc/​backuppc/​shutdown.sh $host $xferOK';</​file>​
 +
 +<​note>​Cette commande :<​file>/​etc/​backuppc/​shutdown.sh $host -f</​file>​peut être utilisé en ligne de commande directement pour éteindre une machine en dehors de backuppc.</​note>​
  
 ==== Configuration de backuppc pour utiliser les scripts ==== ==== Configuration de backuppc pour utiliser les scripts ====
Ligne 527: Ligne 615:
 par par
 <​file>​$Conf{PingPath} = '/​bin/​echo';</​file>​ <​file>​$Conf{PingPath} = '/​bin/​echo';</​file>​
 +FIXME dans ce cas le backup pourrait essayer de se lancer alors que la machine n'est pas accessible. 
 +<​note>​**Pour faire encore mieux**, vous pouvez aussi réaliser un ping a travers le démon ssh en executant simplement la commande **cat** sur le fichier **/​dev/​null**. Ceci permettra de tester que le démon ssh est bien démarré et donc de tester que le serveur est accessible. Pour faire ceci, remplassez la configuration précédente par la ligne ci-contre: **$Conf{PingPath} = '/​usr/​bin/​ssh $host cat /​dev/​null';​** </​note>​
 et ajouter les chemins des scripts comme suit : et ajouter les chemins des scripts comme suit :
  
Ligne 533: Ligne 622:
 $Conf{DumpPostUserCmd} ​   = '/​etc/​backuppc/​shutdown.sh $host $xferOK';</​file>​ $Conf{DumpPostUserCmd} ​   = '/​etc/​backuppc/​shutdown.sh $host $xferOK';</​file>​
  
-Sauvegardez le fichier et recharger la configuration via l'​interface web. +Sauvegardez le fichier et recharger la configuration via l'​interface web.
  
 Il ne vous reste plus qu'à activer le [[:​wakeonlan|wol]] sur les postes clients... Il ne vous reste plus qu'à activer le [[:​wakeonlan|wol]] sur les postes clients...
 +
 +===== Faire une copie des sauvegardes sur un support externe avec RSYNC =====
 +
 +**Backuppc** gère **la déduplication des données**. C'est à dire qu'​après la copie des fichiers, si un fichier apparaît plusieurs fois, il n'en gardera qu'un seul exemplaire, en  créant des **liens matériels** (**hardlinks**) vers le fichier d'​origine.
 +
 +Lorsqu'​on sauvegarde avec un **rsync "​traditionnel"​** les sauvegardes de **Backuppc**,​ **rsync** ne gère pas les liens matériels, et recopie le fichier autant de fois qu'il y a de liens matériels. **Ce qui a pour effet de gonfler considérablement le volume des données**.
 +
 +Pour éviter cela, on indique à **rsync** qu'il doit gérer les liens matériels avec l'​option **-H**. Ce qui donne  :
 +
 +<​file>​rsync -rlptDvzH --delete-after /​chemin/​sauvegardes/​backuppc/​ /​chemin/​vers/​support/​externe/​sauvegardes/​backuppc</​file>​
 +
 +**ATTENTION !!! : cette opération entraîne une forte consommation en CPU et en RAM !!!**
  
 ===== Erreurs ===== ===== Erreurs =====
Ligne 555: Ligne 656:
 Toutefois, ceci a été corrigé dans la nouvelle version de smbclient mais backuppc utilise toujours le -N. C'est pourquoi, cette option empêche de prendre en compte votre mot de passe et provoquera une erreur. Toutefois, ceci a été corrigé dans la nouvelle version de smbclient mais backuppc utilise toujours le -N. C'est pourquoi, cette option empêche de prendre en compte votre mot de passe et provoquera une erreur.
  
-Pour corriger ceci, sur [[#​Connexion à l'​interface Web|l'​interface Web]] de backuppc, depuis le menu //Edit Config du Server ->onglet Xfer//, ​ supprimer le -N dans les 3 commandes pour la sauvegarde (smblient... -N ...).  +Pour corriger ceci, sur [[#​Connexion à l'​interface Web|l'​interface Web]] de backuppc, depuis le menu //Edit Config du Server ->onglet Xfer//, ​ supprimer le -N dans les 3 commandes pour la sauvegarde (smblient... -N ...).
  
 ===== Liens utiles ===== ===== Liens utiles =====
-  *  [[http://​backuppc.sourceforge.net/​faq/​BackupPC.html|la documentation de BackupPC]].+  * [[http://​backuppc.sourceforge.net/​faq/​BackupPC.html|la documentation de BackupPC]].
   * [[http://​backuppc.sourceforge.net/​| Le site officiel]] **[en]**   * [[http://​backuppc.sourceforge.net/​| Le site officiel]] **[en]**
-  * [[http://www.klipz.fr/tutoriel_backuppc.html]] **[fr]** +  * [[https://backuppc.github.io/backuppc/|Le "​nouveau"​ site officiel sur github.io  ]] **[en]** 
-  * [[http://www.aboutmyip.com/​AboutMyXApp/​DeltaCopy.jsp|deltacopy]] +
-  * [[http://​www.generation-linux.fr/​index.php?​post/​2008/​08/​09/​119-backuppc-un-logiciel-de-sauvegarde-automatique]] **[fr]** +
-  * [[http://​www.projet-plume.org/​fiche/​backuppc|la fiche plume]]+
  
 ----- -----
-// Contributeurs : [[:​utilisateurs:​Cyprien]],​wouldsmina,​ [[:​utilisateurs:​naoli]],​ snoopysnoopy [[:​utilisateurs:​Ool]] //+// Contributeurs : [[:​utilisateurs:​Cyprien]],​wouldsmina,​ [[:​utilisateurs:​naoli]],​ snoopysnoopy [[:​utilisateurs:​Ool]], gg [[:​utilisateurs:​gfontaniere]],​ mathieuc  ​//
  • backuppc.1408816434.txt.gz
  • Dernière modification: Le 23/08/2014, 19:53
  • par 0ol