{{tag>lucid natty oneiric réseau serveur sécurité sauvegarde }}
----
====== 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.\\
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 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…]]
Il a quand même quelques [[http://backuppc.sourceforge.net/faq/limitations.html|limites]].
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.
* [[: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.
* [[:Tar]] : Utilise le logiciel Tar. C'est un bon choix pour sauvegarder des machines sous Linux.
Sauf pour [[:Samba]], Backuppc utilise [[:SSH]] pour faire les transferts.
==== Politique de sauvegarde par défaut ====
=== sur le serveur ===
Le logiciel se réveille toutes les heures. Il sonde le pool de machines spécifiées dans le fichier **/etc/backuppc/hosts**. Puis, pour chaque poste allumé, il fonctionne ainsi :
* Interrogation de la période du Blackout, si l'hôte est dans sa période de blackout, le serveur passe à la machine suivante. Ce qui peut-être bien pratique pour des machines nomades.
* Sinon, il étudie la machine hôte.
=== Pour chaque machine cliente===
BackupPC examine les dates des dernières sauvegardes effectuées:
* Si la date de dernière sauvegarde complète a plus de trente jours, il en fait une nouvelle.
* Sinon il regarde la date de la dernière sauvegarde incrémentielle. Si celle-ci a plus d'un jour, il lance une sauvegarde incrémentielle.
S'il y a plus de dix-neuf sauvegardes incrémentielles, il supprime les plus anciennes de manière à ce qu'il n'en reste que dix-neuf (limitation de l'espace disque consommé).
===== 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]]. \\
Il est disponible par les [[:dépôts]] de chaque [[:versions|versions d'Ubuntu]]. \\
il suffit donc 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.
=== Backuppc sous Ubuntu utilisera par défaut: ===
* [[: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.
=== Une fenêtre debconf doit apparaître durant l'installation :===
{{:utilisateurs:capture-debconf-backuppc.png?500}}
* soit vous notez soigneusement le mot de passe attribué automatiquement à l'utilisateur backupPC
* soit vous préférez le modifier à l'aide de cette commande:
sudo htpasswd /etc/backuppc/htpasswd backuppc
pour le générer et le stocker vous pouvez utilisez l'excellent [[:KeepassX]].
==== version des backports ====
Vous pouvez choisir d'installer une version de backuppc plus récente via les [[:depots#backports|backports]]
===== Configuration =====
Backuppc fonctionne avec la notion de [[wpfr>[[http://fr.wikipedia.org/wiki/Client-serveur|Client/Serveur]].\\
La machine serveur pouvant bien entendu être aussi un client.\\
Il vous faudra adapter les termes client et serveur à votre architecture en les remplaçant par les adresses IP, les FQDN ou les noms hosts correspondants.
Remarque : les versions récentes (>=3) de BackupPC permettent de modifier la plupart des options de configuration directement depuis l'interface Web.
==== Connexion à l'interface Web ====
Il suffit ensuite à l'aide d'un navigateur Web d'aller à l'adresse %%[[http://serveur/backuppc/]]%%
Ensuite il faut entrer « backuppc » en nom d'utilisateur et le mot de passe correspondant.
==== Mettre l'interface en français ====
=== Par l'interface web ===
// "Serveur" -> "Modifier la configuration" -> "CGI" -> "Language" //
=== En ligne de commandes ===
[[:tutoriel:comment_modifier_un_fichier|Modifier]] directement l'option dans le fichier
$Conf{Language} = 'en';
en
$Conf{Language} = 'fr';
=== vous pouvez modifier la configuration pour toutes vos machines ===
// "Serveur" -> "Modifier la configuration" //
=== Puis affiner pour chacune d'entre elle ===
//"Hôtes" -> //
==== Où sont sauvegardées les données ? ====
=== par défaut ===
Les données sont sauvegardées dans des sous-répertoires de **/var/lib/backuppc**
=== changer le lieu de stockage ===
Cela n'est bien sur pas obligatoire, mais cela peut-être pratique de ne pas laisser vos données dans le **/var**
== Avec un lien symbolique ==
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.
* stopper backuppc
sudo invoke-rc.d backuppc stop
* créer votre répertoire de destination au préalable.
sudo mkdir //backuppc/
* copiez y ce qui se trouve dans **/var/lib/backuppc**
sudo rsync -va /var/lib/backuppc //backuppc
* 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**
* créer votre [[wpfr>lien_symbolique|un lien symbolique]]
sudo ln -s //backuppc /var/lib/backuppc
* Il ne reste plus qu'a relancer backuppc
sudo invoke-rc.d backuppc start
===== Configurer les sauvegardes =====
===== Sauvegarder un répertoire local via tar =====
- se connecter à l'interface web : %%[[http:///backuppc]]%%
- //"Serveur" -> "Modifier la configuration" -> "Machine"// : vérifier que la machine (host) "localhost" existe bien, avec "backuppc" comme user
- //"Hôtes"// -> choisir// "Localhost"// dans la liste déroulante
- //"localhost" -> "Modifier la configuration" -> "xfer" -> "XferMethod" : choisir "tar", "TarShareName" //: indiquer le chemin à sauvegarder et cliquer sur //"insérer" -> "Sauvegarder" //(apparaît en rouge)
- //"localhost" -> "localhost Accueil" -> "Démarrer la sauvegarde complète"//
- //"localhost" -> "Explorer les sauvegardes" //: vérifiez ici que ça a fonctionné.
Par défaut cette sauvegarde sera dans **/var/lib/backuppc/pc/localhost**
===== Sauvegarde du poste local sur un disque dur externe USB =====
* Formater le disque dur USB
par exemple en EXT3 ou [[:EXT4]]
(Système -> Administration -> Éditeur de partitions) ou avec [[:Gparted]]
* Créer un répertoire pour la sauvegarde sur le disque USB .
mkdir /media/disk/sauvegardes/backuppc/localhost
* Copier la configuration sur le disque USB
sudo cp -r /var/lib/backuppc/pc/localhost /media/disk/sauvegardes/backuppc/localhost
* Donner les droits pour backuppc à ce répertoire
sudo chown backuppc:backuppc /media/disk/sauvegardes/backuppc -R
* Renommer (ou supprimer) le répertoire de sauvegarde originel
sudo mv /var/lib/backuppc/pc/localhost /var/lib/backuppc/pc/localhost_ori
* Créer un lien symbolique entre /var/lib/backuppc et le nouveau répertoire
sudo ln -s /media/disk/sauvegardes/backuppc/localhost /var/lib/backuppc/pc/localhost
* Modifier les horaires de sauvegarde pour éviter qu'il ne sauvegarde automatiquement quand le disque est débranché: "localhost" -> "Modifier la configuration" -> "Horaires"
===== Sauvegarder un poste Linux distant via rsync (ssh) =====
La sauvegarde se faisant au travers de [[:ssh]], il faut installer openssh-server sur le poste à sauvegarder.
[[apt>openssh-server|openssh-server]]
==== L'utilisateur Backuppc doit se connecter en SSH sur les clients ====
Vous pouvez utiliser la méthode standard que vous trouverez [[http://backuppc.sourceforge.net/faq/ssh.html|ici]] qui utilise le compte root.\\
mais sur Ubuntu ce compte est désactivé.\\
Préférez donc la méthode suivante qui est utilisable pour toute distribution ayant [[:sudoers|sudo]] qui vous permettra de ne pas avoir besoin d'activer le compte root ni de lui autoriser des connexions via SSH
{{ :image:backuppc_rsync.png?400 |}}
=== Sur le serveur de sauvegarde. ===
* Passer en utilisateur backuppc
sudo -i -u backuppc
* Générer le couple clef publique et clef privée sans mettre de mot de passe
ssh-keygen -t rsa -b 2048
* Vérifier que la clé est bien générée
cat ~/.ssh/id_rsa.pub
* et que ses droits sont corrects
$ ls -la ~/.ssh/
drwxr-xr-x 2 backuppc backuppc 4096 2011-07-17 17:19 .
drwxr-x--- 8 backuppc backuppc 4096 2011-07-21 13:57 ..
-rw------- 1 backuppc backuppc 1671 2011-07-17 17:10 id_rsa
-rw-r--r-- 1 backuppc backuppc 397 2011-07-17 17:10 id_rsa.pub
-rw-r--r-- 1 backuppc backuppc 4862 2011-07-17 19:58 known_hosts
=== sur les clients ===
Si vous avez plusieurs clients vous pouvez utiliser le très pratique [[:cssh]]
== passer en utilisateur backup ==
Ce compte est pré-existant sous Ubuntu selon les [[wpfr>Filesystem_Hierarchy_Standard|FHS ]]
sudo -i -u backup
== créer le répertoire .ssh ==
mkdir ~/.ssh
== Ajout de la clef publique ==
Ajouter la clef publique de l'utilisateur backuppc du serveur contenue dans l' id_rsa.pub précédemment générée\\
dans le fichier **/var/backups/.ssh/authorized_keys** pour chacun des clients.
== pour plus de sécurité ==
rajouter la directive from="" au début de l' authorized_keys \\
vous devriez avoir:
$ id
uid=34(backup) gid=34(backup) groupes=34(backup)
$ pwd
/var/backups
$ cat ~/.ssh/authorized_keys
from="" ssh-rsa AAAAB3N123456789xyz.......== backuppc@
== vérifier les droits ==
$ ls -la ~/.ssh
drwxr-x--- 2 backup backup 4096 2011-07-17 20:05 .
drwxr-xr-x 3 root root 4096 2011-07-20 07:57 ..
-rw-r----- 1 backup backup 417 2011-07-17 20:04 authorized_keys
si les droits ne sont pas corrects utiliser **chmod** pour [[:permissions#en_ligne_de_commande|modifier les permissions]]
===configuration de sshd ===
* pas besoin d'autoriser root
* ni des connexions par mot de passe pour vos sauvegardes
PermitRootLogin no
=== configuration de sudo ===
à l'aide de [[:sudoers|visudo]]
mettez dans le fichier sudoers:
backup ALL=NOPASSWD: /usr/bin/rsync
qui donnera à l'utilisateur backup le droit sudo pour lancer rsync sans demande de mot de passe.
==== test de connexion SSH====
Depuis le serveur de sauvegarde, tenter une première connexion ssh vers le poste à sauvegarder pour l'utilisateur backuppc.
backuppc@:~$ ssh backup@
Répondre "yes" , ce qui ajoutera votre client à la liste des //known hosts//
==== paramétrer l'usage de ce compte par backuppc ====
== Soit par l'interface Web==
//onglet **Xfert** pour **rsync** chapitre **Chemins/Commandes/Args Rsync** //
** RsyncClientCmd ** => $sshPath -q -x -l backup $host /usr/bin/sudo $rsyncPath $argList+ \\
** RsyncClientRestoreCmd ** => $sshPath -q -x -l backup $host /usr/bin/sudo $rsyncPath $argList+
==Soit dans le fichier « /etc/backuppc/config.pl » ==
# $Conf{RsyncClientCmd} = '$sshPath -q -x -l root $host $rsyncPath $argList+';
$Conf{RsyncClientCmd} = '$sshPath -q -x -l backup $host /usr/bin/sudo $rsyncPath $argList+';
# $Conf{RsyncClientRestoreCmd} = '$sshPath -q -x -l root $host $rsyncPath $argList+';
$Conf{RsyncClientRestoreCmd} = '$sshPath -q -x -l backup $host /usr/bin/sudo $rsyncPath $argList+';
====Ajouter la machine à sauvegarder à la liste.====
Il ne reste plus qu'à ajouter la machine à sauvegarder à la liste:
- se connecter à l'interface web : %%[[http:///backuppc]]%%
- //"Serveur" -> "Modifier les machines" -> "Machines" -> ajouter avec "backuppc" comme user//
- //"Hôtes" -> choisir dans la liste déroulante//
- //"Modifier la configuration" -> "xfer" -> "XferMethod" : choisir "rsync", -> "Sauvegarder" //(apparaît en rouge)
- //" Accueil" -> "Démarrer la sauvegarde complète"//
- //"Explorer les sauvegardes" //: vérifier ici que ça a bien fonctionné.
===== Sauvegarder un poste Mac OS distant via ssh =====
//Testé sur Mac OS 10.6 & 10.7. //
La sauvegarde se faisant au travers de ssh, activer le server ssh en cochant session a distance dans preferences système, partage.
Afin de sauvegarder un poste linux distant il est nécessaire que l'utilisateur backuppc du serveur se connecte au poste distant.
Se connecter au mac à sauvegarder en ssh avec un compte admin du mac qui a un mot de passe.
ssh admin@ip du mac
Passez en utilisateur root
sudo -su root
(FIXME est-ce vraiment correct sous MACOS ?)
Générez des clés ssh afin de créer le repertoire .ssh avec les droits appropriés.
ssh-keygen -t rsa
Allez dans le dossier .ssh, supprimer les clés générer et créer authorized_keys.
cd /var/root/.ssh/
rm *
vi authorized_keys
Collez dans le fichier authorized_keys le contenu du fichier id_rsa.pub de l'utilisateur backuppc du serveur de sauvegarde et enregistrez en tapant echap puis :wq!
Ensuite, depuis le serveur de sauvegarde, tentez une première connexion ssh vers le poste à sauvegarder (attention, si vous avez renseigné le nom du poste plutôt que son adresse IP, utilisez-le ici aussi) :
ssh root@adresse.ip.du.poste.a.sauvegarder
Répondre yes.
Attention : il faut être toujours l'utilisateur backuppc sur le poste de sauvegarde pour que cette précédente commande fonctionne.
Maintenant, il suffit d'ajouter la machine à sauvegarder à la liste.
Il suffit de procéder de la même façon qu'avec un client sous GNU/Linux
cf: [[#ajouter_la_machine_a_sauvegarder_a_la_liste|Ajout de la machine à sauvegarder dans la liste]]
===== Sauvegarder des postes Windows via « rsyncd » =====
==== Configuration des postes Windows ====
Sans s'étendre sur la configuration des postes Windows. Sachez qu'il existe un paquet tout fait sur le site de BackupPC, qui, en moins de 1 Mio comprend une version de CygWin et le binaire de //Rsync//.
Ce paquet s'appelle « cygwin-rsyncd » et est disponible [[http://sourceforge.net/project/showfiles.php?group_id=34854|ici]]
Ensuite, il suffit de suivre les instructions du « README.TXT » de ce paquet.
Je considère donc pour la suite de cet article que vous avez :
* un module « docs » partagé par //rsyncd// ;
* ce module doit permettre l'accès en écriture à l'utilisateur « UUU » avec le mot de passe « PPP » ;
* le service //rsyncd// lancé sur ce PC.
==== Configuration du fichier « config.pl » ====
[[:tutoriel:comment_editer_un_fichier|Éditez le fichier]] ** /etc/backuppc/config.pl** avec les [[:sudo|droits d'administration]] et modifiez les options suivantes :
$Conf{XferMethod} = 'rsyncd';
$Conf{RsyncdUserName} = "UUU";
$Conf{RsyncdPasswd} = "PPP";
$Conf{RsyncShareName} = "docs";
Sauvegarder le fichier et recharger la configuration //via// l'interface Web.
==== Sauvegarder des postes Windows via « smb » ====
=== Configuration des postes Windows ===
Créez un utilisateur (backup) avec un mot de passe (mdpbupc), puis créez un partage (docs$) sur la ressource à sauvegarder avec les droits modifier et lecture pour l'utilisateur créé précédemment.
Puis, effectuez les modifications des fichiers "config.pl" et "hosts" ou effectuez les changements dans l'interface web
== Configuration du fichier « config.pl » ==
[[:tutoriel:comment_editer_un_fichier|Éditez le fichier]] ** /etc/backuppc/config.pl** avec les [[:sudo|droits d'administration]] et modifiez les options suivantes :
$Conf{XferMethod} = 'smb';
$Conf{SmbShareUserName} = 'backup';
$Conf{SmbSharePasswd} = 'mdpbupc';
$Conf{SmbShareName} = 'docs$';
Sauvegarder le fichier et recharger la configuration //via// l'interface Web.
==== Configuration du fichier « hosts » ====
[[:tutoriel:comment_editer_un_fichier|Éditez le fichier]] **/etc/backuppc/hosts** avec les droits d'administration et modifiez les options suivantes :
puis ajouter cette ligne en fin de fichier (192.168.1.10 étant l'adresse IP de votre machine Windows) :
192.168.1.10 0 utilisateur UUU
Sauvegarder le fichier et recharger la configuration //via// l'interface web.
===== Sauvegarder des PC éteints =====
il est intéressant de pouvoir effectuer la sauvegarde des machines lorsqu'elles ne sont pas en production, par exemple la nuit. Par défaut, backuppc ne permet pas de gérer le wake on lan, mais avec quelques astuces, c'est possible!
==== 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** :
adresse:MAC nom_machine
il va sans dire que le nom de la machine doit être déclaré comme dans le fichier ** /etc/backuppc/hosts**.
Pour que le fichier ethers soit pris en compte par etherwake modifier le fichier **/etc/nsswitch.conf**, à la ligne ethers :
ethers: files
Par defaut, la commande etherwake n'est exécutable que par root, pour remédier à cela :
ln /usr/sbin/etherwake /usr/bin/
chmod +s /usr/sbin/etherwake
==== Script de réveil et d'arrêt des machines ====
j'ai créé des petits scripts, dans le dossier /etc/backuppc/ , pour l'envoi du paquet magique et pour l'arrêt de la machine. Je suis sûr qu'ils peuvent être améliorés...
voici le fichier **wol.sh** qui envoie le paquet magique:
#!/bin/bash
declare -i z
z=0
i=0
/usr/sbin/etherwake $1
sleep 1m
while [ $i = 0 -a $z -lt 15 ]
do
if smbclient -L $1 -U backup%mdpbupc>/dev/null
then
i=1
fi
sleep 10s
z=z+1
done
explication : une fois la commande etherwake exécutée, j'ai mis une pause d'une minute pour laisser le temps au pc de démarrer, puis la boucle while teste si le partage est actif, après 15 essais sans résultat la boucle s'arrête.
le fichier **shutdown.sh**
#!/bin/bash
if [ $(date +%k) -lt 07 -o $(date +%k ) -gt 20 ]
then
/usr/bin/net rpc SHUTDOWN -f -I $1 -U administrateur%mdpadministrateur -t 30
else
if [ $2 = 1 ]
then
echo sauvegarde terminé avec succès. | smbclient -M $1 --user="backuppc"
fi
fi
explication: entre 20h00 et 07h00 il exécute la commande d'extinction du pc sauvegardé, en dehors de cette plage horaire au lieu d'arrêter la machine, un message est envoyé.
N'oubliez pas de rendre les scripts [[permissions#execution|exécutables]] pour l'utilisateur backuppc!
Cette commande :net rpc SHUTDOWN -f -I $1 -U administrateur%mdpadministrateur -t 30peut ne pas fonctionner si le pc sous Windows n'accepte pas l'exécution de la commande d'extinction à distance.
Pour parer à cela je vous invite à lire le dernier message de cette discutions [[http://forum.ubuntu-fr.org/viewtopic.php?pid=2988204#p2988204|ici]]
==== Configuration de backuppc pour utiliser les scripts ====
backuppc contrôle la présence du pc sur le réseau avec ping, sans quoi il n'effectue pas de sauvegarde, nous allons remédier à cela, dans le fichier **/etc/backuppc/config.pl** modifier :
$Conf{PingPath} = '/bin/ping';
par
$Conf{PingPath} = '/bin/echo';
et ajouter les chemins des scripts comme suit :
$Conf{DumpPreUserCmd} = '/etc/backuppc/wol.sh $host';
$Conf{DumpPostUserCmd} = '/etc/backuppc/shutdown.sh $host $xferOK';
Sauvegardez le fichier et recharger la configuration via l'interface web.
Ne vous reste plus qu'à activer le wol sur les postes clients...
===== Erreurs =====
==== No files dumped for share ... ====
Cliquez sur "Last bad XferLOG". Si vous obtenez un message ressemblant à :
/bin/tar: --totals: Cannot chdir: No such file or directory
Sauvez votre configuration backuppc, puis effectuez ces commandes avec la console :
sudo mv /etc/backuppc/localhost.pl /etc/backuppc/fileserver.pl
sudo chown backuppc:www-data /etc/backuppc/fileserver.pl
Reparamétrez votre configuration dans xfer.
==== 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.
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 smblient pouvait s'y connecter.
Toutefois, ceci a été corrigé dans la nouvelle version de smbclient mais backuppc utilise toujours le -N. Ainsi, cette option empêche de prendre en compte votre mot de passe et provoquera une erreur.
Pour corriger ceci, sur la page web de backuppc, ouvrez Edit Config du Server, puis sous l'onglet Xfer supprimer le -N dans les 3 commandes pour la sauvegarde (smblient... -N ...).
===== Liens utiles =====
* [[http://backuppc.sourceforge.net/faq/BackupPC.html|la documentation de BackupPC]].
* [[http://backuppc.sourceforge.net/| Le site officiel]] **[en]**
* [[http://www.klipz.fr/tutoriel_backuppc.html]] **[fr]**
* [[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. // \\
// (partie [[#sauvegarder_un_poste_linux_distant_via_rsync_ssh|rsync pour linux avec sudo]]) : [[:utilisateurs:Ool]] //