BackupPC

Installation et configuration de BackupPC pour sauvegarder une SME:

Mise en fonctionnement de BackupPC

Source: http://doc.fedora-fr.org/wiki/Sauvegardes_avec_BackupPC

Installation et démarrage de BackupPC

sudo yum install BackupPC

Pour pouvoir accéder à l’interface web de BackupPC, il faut qu’Apache soit installé et démarré.
Dans l’installation standard de Fédora21, Apache est installé, mais n’est pas démarré. Pour ce faire:

sudo service httpd start

Si Apache doit être automatiquement lancé:

sudo service httpd enable

Créer l'utilisateur d’administration de BackupPC (pour Apache) et lui donner un mot de passe:

sudo htpasswd -c /etc/BackupPC/apache.users admin_BackupPC

ATTENTION: “-c” = créer n'est à utiliser que la première fois que la commande est lancée sinon on efface ce qui existait déjà!
Pour créer si besoin est un utilisateur “normal” de backupPC:

sudo htpasswd /etc/BackupPC/apache.users backuppc_user_normal

Configurer le nom de l'admin dans le paramétrage de BackupPC pour pouvoir accéder aux paramétrages dans l'interface web de BackupPC:

sudo cp /etc/BackupPC/config.pl /etc/BackupPC/config.pl.orig
sudo pluma /etc/BackupPC/config.pl

Chercher “set $Conf{CgiAdminUsers}” et mettre “admin_BackupPC” comme valeur (le tout sans les “ ”).

Lancer BackupPC

sudo service backuppc start

plus si besoin est:

sudo service backuppc enable

Il devrait alors être possible de se connecter à l’interface web via http://localhost/BackupPC ainsi qu’aux menus de paramétrage de BackupPC.
Pour info: BackupPC crée un utilisateur nommé « backuppc » sous le nom duquel BackupPC réalise ses opérations.

Pour la création et l’envoi de clès ssh vers la SME à sauvegarder:

$ su

pour se connecter en root.

# su backuppc

pour se connecter en backuppc. Ne pas entrer de mot de passe: appuyer seulement sur return.

$ ssh-keygen -t rsa

pour générer la paire de clés et la sauvegarder dans le répertoire par défaut.

$ cat /var/lib/BackupPC/.ssh/id_rsa.pub | ssh root@192.168.2.5 "cat >> /root/.ssh/authorized_keys2"

pour envoyer la clé publique sur la SME.
Afin de pouvoir lancer des scripts ou des commandes en pré- ou postjobs, il faut donner à l’utilisateur backuppc les permissions nécessaires.
Par exemple, pour que BackupPC puisse éteindre la machine après le backup, il faut ajouter dans sudoers:

backuppc ALL = (ALL) NOPASSWD: /usr/sbin/shutdown

Remarque: BackupPC “travaille” (cad met un peu d’ordre dans les fichiers, génére les rapports etc...) encore un peu après avoir terminé les sauvegardes. Il ne faut donc pas mettre « shutdown » dans le post-job, mais dans un script d’extinction qui lancera « shutdown » après quelques minutes d’attente. Le script lui peut être lancé par le post-job.

Pour que BackupPC puisse envoyer des Mails

à l’administrateur ou aux utilisateurs «normaux»:
Source: configuration de sendmail: http://doc.fedora-fr.org/wiki/Configurer_sendmail_:_envoyer_des_courriels_via_un_relai_SMTP et http://blog.technotesdesk.com/configure-sendmail-on-fedora-20redhatcentos-to-send-emails/

Installer sendmail-cf pour pouvoir configurer sendmail:

sudo yum install sendmail-cf

Sauvegarder les fichiers d'origine:

su
cd /etc/mail
cp sendmail.mc sendmail.mc.orig
cp sendmail.cf sendmail.cf.orig

Dans /etc/mail/sendmail.mc, modifier:

dnl # définir smtp.fournisseur.fr comme serveur de relais
define(`SMART_HOST',`smtp.fournisseur.fr')

S’assurer d’enlever « dnl » du début des lignes suivantes:

LOCAL_DOMAIN (‘localhost.localdomain’) dnl
FEATURE (masquerade_envelope) dnl
FEATURE (masquerade_entire_domain) dnl

Entrer le nom du domaine à utiliser – cloudman.ca dans l’exemple – dans ces 2 lignes:

MASQUERADE_AS (‘cloudman.ca’) dnl
MASQUERADE_DOMAIN (cloudman.ca) dnl

Recréer le fichier sendmail.cf - ATTENTION: ne fonctionne qu'en root, pas avec sudo - et re-lancer sendmail:

cd /etc/mail
m4 /etc/mail/sendmail.mc > /etc/sendmail.cf
service sendmail restart

Pour tester l'envoi d'emails de BackupPC:

su -s /bin/sh backuppc -c '/usr/share/BackupPC/bin/BackupPC_sendEmail -u user@domain.org'

Change the used folder for backups

Source: http://doc.fedora-fr.org/wiki/Sauvegardes_avec_BackupPC
Natively, BackupPC stores the backups into /var/lib/BackupPC
To change the folder:

copy or move the original folder /var/lib/BackupPC to the new folder:

mv (or cp -a) /var/lib/BackupPC /new/folder/

then there are 2 ways:

with a symbolic link pointing to the new folder:

# cd /var/lib
# ln -s ../../the/new/folder/BackupPC ./BackupPC

For BackupPC the backups are still saved at the same place.

by modifying the parameter $Conf{TopDir} of the conf file etc/BackupPC/config.pl

I prefer the second possibility and I applied it.

Extinction de la machine sur laquelle tourne BackupPC – backup d'une SME:

Dans ma configuration actuelle, mon client Fedora effectue une sauvegarde avec BackupPC de mon serveur SME.
À une heure précise, le serveur SME “réveille” donc la machine client via un wake-on-lan pour que ce dernier effectue la sauvegarde. Pour des raisons évidentes d'économie d'énergie, j'ai souhaité que la machine client s'éteigne automatiquement une fois la sauvegarde effectuée.

Le problème est alors le suivant : BackupPC ne prend la sauvegarde en considération seulement une fois le « post-job » positivement achevé.
Donc si la commande d'extinction est située dans le post-job, celui-ci ne renvoie jamais de retour positif à BackupPC, vu que la machine sur laquelle il tourne est éteinte avant !!!

La création de scripts d'extinction enfants du post-job, avec des commandes pour récupérer le prompt avant la fin de l'exécution de la tâche (entre autre le « & ») s'est révélée infructueuse sur toute la ligne car backupPC s'entête à attendre la fin de chaque script enfant.

C'est quelque part sur la toile que j'ai trouvé la solution à ce problème: il faut que le post-job de BackupPC se contente de créer un fichier drapeau. L'extinction est elle réalisée via cron.d qui surveille la présence ou non de ce drapeau et qui déclenche l'arrêt de la machine le cas échéant.
Voilà mon script pre-job (qui au passage envoie le signal-event pre-backup à la SME):

#!/bin/bash
ssh root@IP_SME /sbin/e-smith/signal-event pre-backup
touch /etc/BackupPC/dump-start.flg
exit 0;

Voilà mon script post-job (qui au passage envoie le signal-event post-backup à la SME):

#!/bin/bash
ssh root@IP_SME /sbin/e-smith/signal-event post-backup
mv /etc/BackupPC/dump-start.flg /etc/BackupPC/dump-end.flg
exit 0;

Ainsi que l'entrée cron.d: /etc/cron.d/backuppc-halt

*/5 * * * * root [ -f /etc/BackupPC/dump-end.flg ] && sleep 3m && [ ! -f /etc/BackupPC/dump-start.flg ] && [ "$(/usr/bin/users)" = "(unknown)" ] && rm /etc/BackupPC/dump-end.flg && /usr/sbin/shutdown -h now

Pas besoin de relancer cron.d: les modifications sous le répertoire /etc/cron.d sont rescannées toutes les minutes(https://docs.fedoraproject.org/en-US/Fedora/21/html/System_Administrators_Guide/ch- Automating_System_Tasks.html)

ATTENTION: Pour Fedora22, il faut légèrement modifier l'entrée cron.d: /etc/cron.d/backuppc-halt

*/5 * * * * root [ -f /etc/BackupPC/dump-end.flg ] && sleep 3m && [ ! -f /etc/BackupPC/dump-start.flg ] && [ "$(/usr/bin/users)" = "" ] && rm /etc/BackupPC/dump-end.flg && /usr/sbin/shutdown -h now

Explications: cron cherche la présence du fichier « dump-end » toutes les 5 minutes. Si le fichier est présent, on attend 3 minutes au cas où une autre sauvegarde de BackupPC devrait se lancer, on vérifie qu'il n'y a pas de backup en cours (fichier dump-start), on vérifie qu'aucune session n'est ouverte, on efface le fichier drapeau et on éteint la machine.

Génialement simple, simplement génial et....... efficace!
Et voilà !!!

Move a pool of backups to another disk

In order to avoid any problems due to hardlinks or similar between the archives, I choose to move the pool in 2 steps using “tar”:

create an archive of the entire pool (make sure you have a temporary disk with enouth free space. The size of the archive = the size of the Backup folder). e.g. “taring” to a usb drive

cd /the/current/path
sudo tar -cvf /run/media/the_user/the_usb_drive/BackupPC.tar BackupPC/

extract the archive into the new path (= new drive). e.g. from the usb drive

cd /the new/path
sudo tar -xvf /the/path/to/archive/BackupPC.tar

check the permissions / give the right permissions if needed to the new folder:

sudo chown -R backuppc:backuppc /the/new/path/Backuppc
sudo chmod 750 -R /the/new/path/Backuppc

Commandes lancées manuellement

Lancer manuellement le processus de nettoyage nocturne

Astuce trouvée chez Daniel

La suppression des fichiers qui ne sont plus utilisés par aucune sauvegarde se fait par le processus BackupPC_nightly. Ce script scan tout ou partie du pool de fichier, à la recherche de ceux qui n'ont plus qu'un seul lien (hardlink) sur le système de fichier (ce qui veut dire que aucun lien n'existe dans /var/lib/BackupPC/pc). Par défaut, ce processus est lancé toute les nuits, mais il est possible de le lancer manuellement:

sudo -u backuppc /usr/share/BackupPC/bin/BackupPC_serverMesg BackupPC_nightly run

Cette commande devrait répondre:

Got reply: ok

Lancer manuellement une sauvegarde

source: http://doc.fedora-fr.org/wiki/Sauvegardes_avec_BackupPC

Il est possible de lancer la sauvegarde en ligne de commande

# su - backuppc
$ /usr/share/BackupPC/bin/BackupPC_dump -v -f {hote}

Le drapeau -v active le mode verbeux, remplacez simplement {hoste} par le nom d'hôte incriminé.
Notez que la commande ci dessus lancera une sauvegarde complète, vous devrez remplacer l'option -f par -i pour effectuer une sauvegarde incrémentale.

Allonger le temps de réponse du ping

https://sourceforge.net/p/backuppc/mailman/message/19351138/
Quand il y a une erreur de connexion du style: pas de ping (ping too slow on 192.168.32.2 37.74msec (thresho...)
En configuration d'origine, BackupPC n'accepte d'effectuer une sauvegarde seulement si le temps de ping est inférieur à 20ms.
Ce temps est acceptable pour une connexion locale mais pas distante.

Pour effectuer des sauvegardes de machines distantes, il faut augmenter ce temps de ping limite:

nano /etc/backuppc/config.pl
...
et modifier "$Conf{PingMaxMsec} = 20;"

Chez moi je l'ai monté à 350.