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 | ||
|
backuppc [Le 28/07/2017, 16:57] L'Africain |
backuppc [Le 18/10/2025, 01:37] (Version actuelle) krodelabestiole liens smblient |
||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | {{tag>Trusty Xenial réseau serveur sécurité sauvegarde }} | + | {{tag>bionic focal réseau serveur sécurité sauvegarde }} |
| - | ---- | + | |
| {{ :image:backuppc-logo.gif?80|}} | {{ :image:backuppc-logo.gif?80|}} | ||
| ====== Serveur de sauvegarde automatique : BackupPC ====== | ====== Serveur de sauvegarde automatique : BackupPC ====== | ||
| Ligne 10: | 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 **[[:samba#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 36: | Ligne 36: | ||
| ===== Installation ===== | ===== Installation ===== | ||
| 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§ion=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§ion=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 54: | 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 70: | Ligne 65: | ||
| * Un redémarrage du serveur web est nécessaire pour prendre en compte les modifications. | * Un redémarrage du serveur web est nécessaire pour prendre en compte les modifications. | ||
| <code>sudo /etc/init.d/apache2 restart</code> | <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 95: | 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 110: | 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 192: | 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 234: | 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 288: | 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 329: | 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 344: | 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 354: | 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 369: | 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 375: | 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 422: | 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 445: | 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 1 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 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> | ||
| + | |||
| + | 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 1 |
| - | 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 $1 -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 -M $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 $1 -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 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... | ||
| Ligne 557: | Ligne 652: | ||
| ==== Erreur NT_STATUS... ==== | ==== Erreur NT_STATUS... ==== | ||
| - | Pour se connecter aux partages SMB, backuppc utilise smbclient et lui passe par défaut l'argument -N qui siginifie "no password"((pas de mot de passe)).\\ | + | Pour se connecter aux partages SMB, backuppc utilise **[[:samba#smbclient]]** et lui passe par défaut l'argument -N qui siginifie "no password"((pas de mot de passe)).\\ |
| - | Apparament dans une version antérieure de smbclient, même si -N était spécifié, le mot de passe était quand même demandé. Ainsi même si le partage avait un mot de passe, smbclient pouvait s'y connecter.\\ | + | Apparament dans une version antérieure de **[[:samba#smbclient]]**, même si ''-N'' était spécifié, le mot de passe était quand même demandé. Ainsi même si le partage avait un mot de passe, smbclient pouvait s'y connecter.\\ |
| - | 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]], gg [[:utilisateurs:gfontaniere]] // | + | // Contributeurs : [[:utilisateurs:Cyprien]],wouldsmina, [[:utilisateurs:naoli]], snoopysnoopy [[:utilisateurs:Ool]], gg [[:utilisateurs:gfontaniere]], mathieuc // |