Le service BackupPC gère les sauvegardes de la machines. Il s'occupe de lancer périodiquement les sauvegardes complètes ou incrémentale ainsi que les restaurations à la demande. Il maintient par ailleurs sont pool de données qu'il rend accessible au travers de son interface web qui permet aussi le déclenchement de restauration.
La configuration du service est stockée dans le dossier /etc/backuppc/*. Le fichier config.pl contient la configuration générale du service. Ce fichier contient également la configuration par défaut de la sauvegarde des machines gérées. Chaque machine dispose par ailleurs d'un fichier de configuration et qui porte son nom suffixer par “*.pl*”. Les variables de configuration définies dans ces fichiers remplacent les valeurs par défaut définies dans la configuration générale.
Le fichier hosts contient la déclaration des machines clientes ainsi que les personnes qui auront accès aux sauvegardes de ces machines. Le propriétaire des machines doit systématiquement être backuppc pour que les alertes soient reçues par les administrateurs du système.
L'interface web de BackupPC est accessible en générale au travers du service HTTP Apache. La configuration du service HTTP Apache se situe dans le dossier /etc/apache2 et plus particulièrement dans le fichier /etc/apache2/backuppc. C'est un lien logique vers le fichier /etc/backuppc/apache.conf.
L'authentification des utilisateurs se connectant à l'interface de BackupPC est confié au serveur web.
BackupPC exploite ses données de manière autonome et les rend accessibles au travers d'outils. Il est cependant intéressant de savoir où sont stockés ces données. Le répertoire les contenant toutes est /var/lib/backuppc dans lequel on retrouve les sous-répertoires suivant :
La page d'accueil vous présente l'état global du serveur avec, entre autre, les travaux actuellement en cours, les échecs pour lesquels l'intervention d'un administrateur est nécessaire et des graphiques de l'espace disque occupé par les sauvegardes.
Via rsyncd :
La méthode rsyncd est la plus adaptée pour une machine tournant sous un système d'exploitation GNU Linux. Cette méthode requiert la présence du service rsyncd sur la machine à sauvegarder avec un partage permettant l'accès à toutes les données.
Exemple de mise en place sous Debian GNU Linux :
Variables utilisées dans la configuration :
Procédure :
apt-get install rsync
uid = root gid = root [slash] path = / auth users = backup secrets file = /etc/rsyncd.secrets list = false exclude = /proc/* /dev/* /sys/* /mnt/* /media/* read only = false hosts allow = [IP serveur BackupPC] address = [IP d'écoute]
backup:[mot de passe]
chmod 600 /etc/rsyncd.secrets
RSYNC_ENABLE=true RSYNC_OPTS='--address=[IP d'écoute]'
service rsync start
Le service est ainsi configuré. Les directives de configuration de BackupPC seront alors au minimum :
$Conf{XferMethod} = 'rsyncd'; $Conf{RsyncShareName} = [ 'slash' ]; $Conf{RsyncdUserName} = 'backup'; $Conf{RsyncdPasswd} = '[mot de passe]';
Via rsync + ssh :
La méthode rsync + ssh est la plus adaptée pour une machine tournant sous un système d'exploitation GNU Linux et dont la sauvegarde devra être effectuée au travers un réseau sensible tel que Internet. Cette méthode requiert la présence du service ssh sur la machine à sauvegarder et du programme rsync. De plus, l'authentification des connexions ssh de BackupPC sur la machine devront se faire grâce au mécanisme d'authentification par clé. La clé ssh de l'utilisateur backuppc du serveur de sauvegarde devra donc être ajoutée aux clés autorisés de l'utilisateur POSIX de la machine utilisé par BackupPC pour se connecter.
Exemple de mise en place sous Debian GNU Linux :
Variable utiliser dans la configuration :
Procédure :
apt-get install rsync openssh-server
su - [nom utilisateur] mkdir $HOME/.ssh cd $HOME/.ssh chmod 755 $HOME/.ssh scp root@srvbackup:/var/lib/backuppc/.ssh/id_rsa.pub $HOME/.ssh/authorized_keys chmod 644 $HOME/.ssh/authorized_keys
sudo -u backuppc ssh [nom utilisateur]@[fqdn de la machine]
Le service est ainsi configuré. Les directives de configuration de BackupPC seront alors au minimum :
$Conf{XferMethod} = 'rsync'; $Conf{RsyncClientPath} = '/usr/bin/rsync'; $Conf{RsyncClientCmd} = '$sshPath -l [nom utilisateur] $rsyncPath $argList+'; $Conf{RsyncClientRestoreCmd} = '$sshPath -l [nom utilisateur] \ $host $rsyncPath $argList+'; $Conf{RsyncShareName} = [ '/' ]; $Conf{BackupFilesExclude} = { '*' => [ '/proc', '/sys', '/dev' ] };
La méthode NFS + tar est la plus adaptée pour la sauvegarde d'un partage NFS d'une machine ne permettant pas la mise en place d'une sauvegarde via rsync en local (Exemple : appliance propriétaire). Le principe consiste ici à faire un montage de ce partage NFS sur la machine exécutant BackupPC et de faire une sauvegarde via l'outil tar en local.
Pour cela, il faut commencer par mettre en place le montage du partage NFS. Par convention, celui-ci sera effectué dans le dossier /mnt/[hostname]/[sharename] :
mkdir /mnt/[hostname]/[sharename]
hostname:/path/to/share /mnt/[hostname]/[sharename] nfs _netdev,defaults,auto 0 0
mount /mnt/[hostname]/[sharename]
Les directives de configuration de BackupPC seront alors au minimum :
$Conf{XferMethod} = 'tar'; $Conf{TarShareName} = ['[sharename]']; $Conf{TarClientCmd} = 'sudo $tarPath -c -v -f - -C /mnt/$host/$shareName --totals'; $Conf{TarClientRestoreCmd} = 'sudo $tarPath -x -p --numeric-owner --same-owner -v -f -' . ' -C /mnt/$host/$shareName';
backuppc ALL=NOPASSWD:/bin/tar
chmod 0440 /etc/sudoers.d/backuppc
sudo $tarPath [...]
La méthode smb est la plus adaptée pour une machine tournant sous un système d'exploitation Microsoft Windows. Il vous suffit de paramétrer le partage du dossier contenant les fichiers à sauvegarder. Il est éventuellement possible d'utiliser les partages systèmes comme C$ accessible uniquement en s'authentifiant comme un utilisateur ayant les droits administrateur.
Les directives de configuration de BackupPC seront alors au minimum :
$Conf{XferMethod} = 'smb'; $Conf{SmbShareName} = [ '[nom du partage]' ]; $Conf{SmbShareUserName} = '[nom utilisateur de connexion]'; $Conf{SmbSharePasswd} = '[mot de passe de connexion]';
La méthode rsync + ssh est la plus adaptée pour un NAS Synology. Pour permettre la connexion de BackupPC au NAS, il vous faut :
sudo su -
/etc/ssh/sshd_config
et décomenter les lignes suivantes : PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
/root/.ssh
/root/.ssh/authorized_keys
et y déposer la clé publique SSH de BackupPC
Le reste de procédure est équivalent à celle pour une machine GNU/Linux via la méthode rsync + ssh. Les volumes de données du NAS se trouvent dans /volumeX
. On pourra sauvegarder spécifiquement certains volumes/partages via le paramètre $Conf{BackupFilesOnly}
, par exemple :
$Conf{BackupFilesOnly} = ['/volume1', '/volume2/partage1'];
Pour ajouter une machine à sauvegarder, il faut :
host dhcp user moreUsers machine.domaine.tld 1/0 propriétaire personne1,personne2,..
/etc/init.d/backuppc reload
L'ajout d'une machine peut également être fait via l'interface web par les administrateurs de BackupPC uniquement. Cette interface web peut être très pratique pour découvrir les paramètres de configuration utilisable car pour chaque directive, l'interface vous donne facilement accès à sa documentation directement accessible en ligne.
Pour ajouter une machine depuis l'interface, il faudra :
La modification de la configuration d'une machine est directement possible depuis l'interface web de BackupPC. Il est également possible d'éditer le fichier de configuration de la machine manuellement.
Depuis l'interface web :
L'interface est composée de différent onglets regroupant les directives de configuration par thème. En cliquant sur le nom d'une directive vous pouvez accéder directement à sa documentation. Une fois toutes vos modifications apporté, cliquer sur le bouton Sauvegarder en haut de la page.
Édition manuelle du fichier de configuration de la machine :
/etc/init.d/backuppc reload
Les sauvegardes se déclenche depuis l'interface web de BackupPc.
La sauvegarde est alors lancée et vous revenez sur la page de la machine. Vous pouvez suivre l'état de la machine en cliquant sur le lien Fichier journal dans le menu de gauche.
L'interface web offre une interface de navigation dans les données sauvegardés qui permet leur téléchargement ou leur restauration. Pour accéder à cette interface, il faut :
Par défaut, vous naviguez dans les données de la dernière sauvegarde disponible pour cette machine. Un menu déroulant en haut permet éventuellement de choisir une sauvegarde plus ancienne. La navigation se fait à la manière d'un explorateur de fichiers.
Pour télécharger ou restaurer des données, il suffit de les sélectionner dans l'explorateur et de cliquer sur le bouton Restaurer les fichiers sélectionnés en haut ou en bas de la page. Une page vous permet ensuite de choisir quelques méthodes vous souhaitez utiliser pour récupérer ces données :
Vous devez ici cliquer sur le bouton correspondant à la méthode que vous désirez. Dans le cas de la restauration directe, une page vous demandera de confirmer l'action.
Cette restauration n'est possible que si vous avez sauvegardé tout les fichiers et dossiers du serveur et que celui-ci est sauvegardé en utilisant la méthode rsyncd. Pour restaurer une machine Linux complètement, il faudra alors :
scp root@srvbackup:/usr/bin/rsync /bin/ scp root@srvbackup:/lib/libpopt.so.0 /lib/ scp root@srvbackup:/lib/libacl.so.1 /lib/ scp root@srvbackup:/lib/libattr.so.1 /lib/
path = /
path = /target
rsync --daemon
chroot /target grub-install /dev/sda exit
rm /target/etc/udev/rules.d/*persistent-net*.rules
Cette restauration n'est possible que si vous avez sauvegardé tout les fichiers et dossiers du serveur et que celui-ci est sauvegarder en utilisant la méthode rsync via ssh. Pour restaurer une machine Linux complètement, il faudra alors :
/etc/init.d/ssh restart
grub-install /dev/sda exit
rm /etc/udev/rules.d/*persistent-net*.rules
Il existe un script pour cela BackupPcDeleteBackups (téléchargeable ici). Il faut l'installé en complément sur le serveur. Il permet de supprimé une ou plusieurs sauvegardes d'une machine. Il est recommandé de l'installer dans /usr/local/bin/BackupPcDeleteBackups.
Utilisation :
Usage: /usr/local/bin/BackupPcDeleteBackups [-c <client> [-d <backupnumber> -b <before data> -r [-f]] | [-l]] | [-n] -c <client> - client machine for which the backup was made -d <number> - number of Backup which should be deleted -b <date> - delete all backups before this date (YYYY-MM-DD) -r - remove the entire client -f - force to run Backuppc_nightly so the space got free afterwards -n - only run Backuppc_nightly -l - list the backups which made for <client> -n - Just run BackupPC_nightly (even if no backups deleted) -h - this help
Exemple d'utilisation :
/usr/local/bin/BackupPcDeleteBackups -c <machine> -l
/usr/local/bin/BackupPcDeleteBackups -c <machine> -d 3
/usr/local/bin/BackupPcDeleteBackups -c <machine> -b 2010-02-01
Le script BackupPcDeleteBackups installable en complément sur le serveur qui vous permet en premier lieu de supprimer une ou plusieurs sauvegardes d'une machine, vous permet également de faire cela. Il va pour vous :
Vous devez pour cela exécuter ce script de la manière suivante :
cd /var/lib/backuppc/pc/[machine]/[id_backup]/ rm -fr [truc]
su - backuppc /usr/share/backuppc/bin/BackupPC_nightly 0 255
Pour être certain que les sauvegardes complètes est lieu uniquement le dimanche, et du fait que BackupPC ne dispose pas d'une différenciation de période de blackout spécifique entre sauvegarde complète et sauvegarde incrémentale, il est nécessaire de contourner le fonctionnement normal de la manière suivante :
$Conf{FullPeriod} = '9.97';
$Conf{BlackoutPeriods} = [ { 'hourEnd' => '23.9', 'weekDays' => [ '1', '2', '3', '4', '5', '6' ], 'hourBegin' => '6' }, { 'hourEnd' => '23.9', 'weekDays' => [ '0' ], 'hourBegin' => '0' } ];
cd /usr/local/src git clone http://git.zionetrix.net/git/backuppc-run-backup ln -s /usr/local/src/backuppc-run-backup/run-backup /usr/local/sbin/ ln -s /usr/local/src/backuppc-run-backup/run-all-backup /usr/local/sbin/ echo -e "# BackupPC : Full backup every Sunday\n1 0 * * 0 root /usr/local/sbin/run-all-backup" > /etc/cron.d/backuppc-full-backup
Il suffit d'installer manuellement le paquet Debian rrdtool. Il faudra également attendre qu'un job Nightly se termine pour que le fichier /var/lib/backuppc/log/pool.rrd soit créé et alimenté afin de permettre l'affichage des graphiques. Si vous ne voulez pas attendre, vous pouvez également utiliser la commande suivante :
~# /usr/bin/rrdtool create /var/lib/backuppc/log/pool.rrd --step 86400 DS:ckb:GAUGE:172800:0:U RRA:AVERAGE:0.5:1:1400 ~# chown backuppc: /var/lib/backuppc/log/pool.rrd ~# chmod 640 /var/lib/backuppc/log/pool.rrd
Pour une machine ne répondant pas au ping, il est possible de le “désactiver” à l'aide du paramètre suivant :
$Conf{PingPath} = '/bin/echo';