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 13/05/2023, 17:08] (Version actuelle) 79.80.66.205 [Installation] |
||
---|---|---|---|
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|}} | ||
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 //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 561: | 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]], gg [[:utilisateurs:gfontaniere]] // | + | // Contributeurs : [[:utilisateurs:Cyprien]],wouldsmina, [[:utilisateurs:naoli]], snoopysnoopy [[:utilisateurs:Ool]], gg [[:utilisateurs:gfontaniere]], mathieuc // |