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 19/06/2014, 16:56]
jchavant variante wol.sh et shutdown.sh
backuppc [Le 13/05/2023, 17:08] (Version actuelle)
79.80.66.205 [Installation]
Ligne 1: Ligne 1:
-{{tag>Lucid  Oneiric 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 58: Ligne 53:
 </​note>​ </​note>​
  
-==== Version des backports ​==== +=== Ajout de l'​utilisateur dans le groupe backuppc :==
-Vous pouvez choisir d'installer une  version ​de backuppc plus récente depuis ​les [[:​depots#​backports|dépôts backports]].+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>​ 
 + 
 +=== Ajout du fichier apache.conf ​=== 
 +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>​ 
 +Puis activez le site : <​code>​sudo a2ensite backuppc.conf</​code>​ 
 +   
 +<​note>​ 
 +Le fichier ​de configuration a été renommé en backuppc.conf, ce qui permet de l'​identifier ​plus facilement parmi les autres fichiers. 
 +</​note>​ 
 +  * Un redémarrage du serveur web est nécessaire pour prendre en compte les modifications. 
 +<​code>​sudo /​etc/​init.d/​apache2 restart</​code>​ 
 + 
 +<​note>​ 
 +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 
 +<​code>​sudo /​etc/​init.d/​apache2 restart</​code>​ 
 +</​note> ​
  
 ===== Utilisation ===== ===== Utilisation =====
Ligne 85: 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 100: 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 111: 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 119: 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 182: 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 224: 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 270: 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 276: 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 317: 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 332: 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 342: 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 357: 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 363: 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 371: 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 410: 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 433: 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
 +
 +<​note>​Cette commande :<​file>​sudo /​usr/​sbin/​etherwake -i enp5s0 $1</​file>​peut varier selon les machines. Vous 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>​
  
-== et le fichier **shutdown.sh**  qui prend en compte ​ l'état précédent ==+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 508: 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 514: 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 536: 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.1403189762.txt.gz
  • Dernière modification: Le 19/06/2014, 16:56
  • par jchavant