Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
informatique:systeme:backup:backuppc [2012/03/05 15:55] – bn8 | informatique:systeme:backup:backuppc [2021/04/29 09:18] (Version actuelle) – [Ajouter une machine à sauvegarder] bn8 |
---|
====== BackupPC ====== | ====== BackupPC ====== |
| |
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. | 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. |
| |
===== Configuration ===== | ===== Configuration ===== |
//Procédure :// | //Procédure :// |
| |
* Installation de //rsync// : <code>apt-get install rsync</code> | * Installation de //rsync// : <code bash>apt-get install rsync</code> |
* Configuration du service //rsyncd// avec un partage nommé //slash// correspondant à la racine du système et accessible à l'utilisateur //backup// uniquement depuis le serveur BackupPC en lecture/écriture après authentification : | * Configuration du service //rsyncd// avec un partage nommé //slash// correspondant à la racine du système et accessible à l'utilisateur //backup// uniquement depuis le serveur BackupPC en lecture/écriture après authentification : |
| |
* Créer le fichier ///etc/rsyncd.conf// :<code>uid = root | * Créer le fichier ///etc/rsyncd.conf// :<code yaml>uid = root |
gid = root | gid = root |
[slash] | [slash] |
* Protéger le fichier ///etc/rsyncd.secrets// : <code>chmod 600 /etc/rsyncd.secrets</code> | * Protéger le fichier ///etc/rsyncd.secrets// : <code>chmod 600 /etc/rsyncd.secrets</code> |
| |
* Activer le lancement du service BackupPC en éditant le fichier ///etc/default/rsync// et en modifiant les variables comme suit : <code>RSYNC_ENABLE=true | * Activer le lancement du service BackupPC en éditant le fichier ///etc/default/rsync// et en modifiant les variables comme suit : <code bash>RSYNC_ENABLE=true |
RSYNC_OPTS='--address=[IP d'écoute]'</code> | RSYNC_OPTS='--address=[IP d'écoute]'</code> |
| |
* Lancer le service : <code>/etc/init.d/rsync start</code> | * Lancer le service : <code bash>service rsync start</code> |
| |
Le service est ainsi configuré. Les directives de configuration de BackupPC seront alors au minimum : <code>$Conf{XferMethod} = 'rsyncd'; | Le service est ainsi configuré. Les directives de configuration de BackupPC seront alors au minimum : <code perl>$Conf{XferMethod} = 'rsyncd'; |
$Conf{RsyncShareName} = [ 'slash' ]; | $Conf{RsyncShareName} = [ 'slash' ]; |
$Conf{RsyncdUserName} = 'backup'; | $Conf{RsyncdUserName} = 'backup'; |
Variable utiliser dans la configuration : | Variable utiliser dans la configuration : |
| |
* **[nom d'utilisateur]** = le nom de l'utilisateur POSIX de la machine utiliser par BackupPC pour s'y connecter | * **[nom utilisateur]** = le nom de l'utilisateur POSIX de la machine utiliser par BackupPC pour s'y connecter |
* **[fqdn de la machine]** = nom de domaine complet (= //fqdn//) de la machine connue dans la configuration de BackupPC | * **[fqdn de la machine]** = nom de domaine complet (= //fqdn//) de la machine connue dans la configuration de BackupPC |
| |
//Procédure :// | //Procédure :// |
| |
* Installation de *rsync* et du service *ssh* (s'il n'est pas déjà présent) : <code>apt-get install rsync openssh-server</code> | * Installation de //rsync// et du service //ssh// (s'il n'est pas déjà présent) : <code bash>apt-get install rsync openssh-server</code> |
| |
* Vérifier que la directive //PubkeyAuthentication// du fichier de configuration du service //ssh// (///etc/ssh/sshd_config//) soit bien à //yes// (par défaut sous Debian) | * Vérifier que la directive //PubkeyAuthentication// du fichier de configuration du service //ssh// (///etc/ssh/sshd_config//) soit bien à //yes// (par défaut sous Debian) |
* Autoriser BackupPC à se connecter en ssh sur la machine : <code>su - [nom d'utilisateur] | * Autoriser BackupPC à se connecter en ssh sur la machine : <code bash>su - [nom utilisateur] |
mkdir $HOME/.ssh | mkdir $HOME/.ssh |
cd $HOME/.ssh | cd $HOME/.ssh |
chmod 755 $HOME/.ssh | chmod 755 $HOME/.ssh |
scp root@srvbackup1.joinville.lan:/var/lib/backuppc/.ssh/id_rsa.pub $HOME/.ssh/authorized_keys | scp root@srvbackup:/var/lib/backuppc/.ssh/id_rsa.pub $HOME/.ssh/authorized_keys |
chmod 644 $HOME/.ssh/authorized_keys</code> | chmod 644 $HOME/.ssh/authorized_keys</code> |
| |
<note>Le fichier contenant la liste des clé SSH autorisées à se connecter est par défaut //$HOME/.ssh/authorized_keys//. Ceci est défini dans la configuration du service SSH par la directive //AuthorizedKeysFile// qui vaut alors //%h/.ssh/authorized_keys//.</note> | <note>Le fichier contenant la liste des clé SSH autorisées à se connecter est par défaut //$HOME/.ssh/authorized_keys//. Ceci est défini dans la configuration du service SSH par la directive //AuthorizedKeysFile// qui vaut alors //%h/.ssh/authorized_keys//.</note> |
| |
* Il faut ensuite, sur le serveur de sauvegarde, établir un première fois la connexion afin d'accepter la clé du service SSH de la machine : <code>su - backuppc -s /bin/bash | * Il faut ensuite, sur le serveur de sauvegarde, établir un première fois la connexion afin d'accepter la clé du service SSH de la machine : <code bash>sudo -u backuppc ssh [nom utilisateur]@[fqdn de la machine]</code> |
ssh [nom d'utilisateur]@[fqdn de la machine]</code> | |
| |
* Accepter la clé du service SSH de la machine lorsqu'on vous le demande. Aucun mot de passe devrai alors vous être demandé. Si ce n'est pas le cas, il y a un problème d'authentification par clé et il faut revoir la configuration de la machine à sauvegarder. La consultation des logs du système pourra vous aider à résoudre le problème (Sous Debian, c'est par défaut le fichier de log ///var/log/auth.log//). | * Accepter la clé du service SSH de la machine lorsqu'on vous le demande. Aucun mot de passe devrai alors vous être demandé. Si ce n'est pas le cas, il y a un problème d'authentification par clé et il faut revoir la configuration de la machine à sauvegarder. La consultation des logs du système pourra vous aider à résoudre le problème (Sous Debian, c'est par défaut le fichier de log ///var/log/auth.log//). |
| |
Le service est ainsi configuré. Les directives de configuration de BackupPC seront alors au minimum :<code> $Conf{XferMethod} = 'rsync'; | Le service est ainsi configuré. Les directives de configuration de BackupPC seront alors au minimum :<code perl>$Conf{XferMethod} = 'rsync'; |
$Conf{RsyncClientPath} = '/usr/bin/rsync'; | $Conf{RsyncClientPath} = '/usr/bin/rsync'; |
$Conf{RsyncClientCmd} = '$sshPath -l [nom d'utilisateur] $rsyncPath $argList+'; | $Conf{RsyncClientCmd} = '$sshPath -l [nom utilisateur] $rsyncPath $argList+'; |
$Conf{RsyncClientRestoreCmd} = '$sshPath -l [nom d'utilisateur] \ | $Conf{RsyncClientRestoreCmd} = '$sshPath -l [nom utilisateur] \ |
$host $rsyncPath $argList+'; | $host $rsyncPath $argList+'; |
$Conf{RsyncShareName} = [ '/' ]; | $Conf{RsyncShareName} = [ '/' ]; |
};</code> | };</code> |
| |
| == Partage NFS (via NFS + tar) == |
| |
| 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]// : |
| |
| * Créer ce dossier : <code bash>mkdir /mnt/[hostname]/[sharename]</code> |
| * Ajouter la ligne de montage automatique dans le fichier ///etc/fstab// : <code>hostname:/path/to/share /mnt/[hostname]/[sharename] nfs _netdev,defaults,auto 0 0</code> |
| * Monter le partage : <code bash>mount /mnt/[hostname]/[sharename]</code> |
| |
| Les directives de configuration de BackupPC seront alors au minimum : <code perl>$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';</code> |
| |
| <note>Il peut être nécessaire d'endosser les droits //root// pour permettre de parcourir et d'accéder à l'ensemble des données du partage. Pour cela : |
| |
| * Créer le fichier ///etc/sudoers.d/backuppc// : <code>backuppc ALL=NOPASSWD:/bin/tar</code> |
| * Corriger les droits du fichier précédemment créé : <code bash>chmod 0440 /etc/sudoers.d/backuppc</code> |
| * Ajouter //sudo// en préfixe des directives BackupPC //TarClientCmd// et //TarClientRestoreCmd// : <code bash>sudo $tarPath [...]</code> |
| </note> |
| |
== Machine Microsoft Windows == | == Machine Microsoft Windows == |
<note>Pour que la restauration soit possible, les données doivent être accessible en lecture et en écriture lors de la connexion.</note> | <note>Pour que la restauration soit possible, les données doivent être accessible en lecture et en écriture lors de la connexion.</note> |
| |
Les directives de configuration de BackupPC seront alors au minimum : <code>$Conf{XferMethod} = 'smb'; | Les directives de configuration de BackupPC seront alors au minimum : <code perl>$Conf{XferMethod} = 'smb'; |
$Conf{SmbShareName} = [ '[nom du partage]' ]; | $Conf{SmbShareName} = [ '[nom du partage]' ]; |
$Conf{SmbShareUserName} = '[nom d'utilisateur de connexion]'; | $Conf{SmbShareUserName} = '[nom utilisateur de connexion]'; |
$Conf{SmbSharePasswd} = '[mot de passe de connexion]';</code> | $Conf{SmbSharePasswd} = '[mot de passe de connexion]';</code> |
| |
| == NAS Synology == |
| |
| 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 : |
| * activer le service SSH sur le NAS : |
| * Se connecter à l'interface web du NAS avec un compte ayant des droits admins |
| * Dans le //Panneau de configuration//, aller dans //Terminal & SNMP// |
| * Cocher la case //Activer le service SSH// et cliquer sur le bouton //Appliquer// |
| * activer l'authentification par clé SSH sur le NAS : |
| * connecter vous en SSH au NAS avec un compte ayant des droits admins |
| * passer en tant que l'utilisateur //root// : <code bash>sudo su -</code> |
| * Éditer le fichier ''/etc/ssh/sshd_config'' et décomenter les lignes suivantes : <code>PubkeyAuthentication yes |
| AuthorizedKeysFile .ssh/authorized_keys</code> |
| * Autoriser BackupPC à se connecter au NAS en tant que //root// : |
| * créer le dossier ''/root/.ssh'' |
| * créer le fichier ''/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 : |
| <code perl>$Conf{BackupFilesOnly} = ['/volume1', '/volume2/partage1'];</code> |
| |
| <note warning>Le compte //admin// doit être actif pour que les sauvegardes via le compte //root// UNIX fonctionne !</note> |
| |
| |
* recharger la configuration du serveur en allant dans //Serveur// puis //Options d'administration// et cliquer sur le bouton //Recharger// | * recharger la configuration du serveur en allant dans //Serveur// puis //Options d'administration// et cliquer sur le bouton //Recharger// |
* configurer les sauvegardes du serveur en allant dans //Hôtes// puis //Modifier la configuration// | * configurer les sauvegardes du serveur en allant dans //Hôtes// puis //Modifier la configuration// |
| |
| |
==== Modifier la configuration d'une machine ==== | ==== Modifier la configuration d'une machine ==== |
| |
==== Supprimer une sauvegarde d'une machine ==== | ==== Supprimer une sauvegarde d'une machine ==== |
| |
Il existe un script pour cela **BackupPcDeleteBackups**. 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//. | Il existe un script pour cela **BackupPcDeleteBackups** (téléchargeable [[https://blog.hbis.fr/2012/07/04/backuppc-delete_and_cleanup/|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//. |
| |
| |
su - backuppc | su - backuppc |
/usr/share/backuppc/bin/BackupPC_nightly 0 255 | /usr/share/backuppc/bin/BackupPC_nightly 0 255 |
| |
| ==== Sauvegardes complètes uniquement les dimanches ==== |
| |
| 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 : |
| |
| * Configurer la périodicité des sauvegardes complète à plus de 7 jours : <code>$Conf{FullPeriod} = '9.97';</code> |
| |
| <note>Le choix de la valeur //-1// pour la périodicité des sauvegardes complètes pourrait être un choix tentant, cependant elle équivaut à une désactivation complète des sauvegardes de la machine, y compris pour les sauvegardes incrémentales. Ce choix peut convenir si on souhaite avoir que des sauvegardes complètes le dimanche et aucune sauvegarde incrémentale le reste du temps.</note> |
| |
| * Exclure toute la journée du dimanche pour la sauvegarde complète en plus de votre période d'exclusion du reste de la semaine : <code>$Conf{BlackoutPeriods} = [ |
| { |
| 'hourEnd' => '23.9', |
| 'weekDays' => [ |
| '1', |
| '2', |
| '3', |
| '4', |
| '5', |
| '6' |
| ], |
| 'hourBegin' => '6' |
| }, |
| { |
| 'hourEnd' => '23.9', |
| 'weekDays' => [ |
| '0' |
| ], |
| 'hourBegin' => '0' |
| } |
| ];</code> |
| * Utiliser la suite de scripts [[http://git.zionetrix.net/backuppc-run-backup|backuppc-run-backup]] pour planifier via une tâche //cron// la sauvegarde complète des machines tout les dimanches : <code>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</code> |
| |
| ==== Export des dernières sauvegardes sur disques USB chiffrés ==== |
| |
| Voir : https://gogs.zionetrix.net/bn8/backuppcExportOnUsbDisk |
| |
| ==== Les graphiques ne sont pas affichés sur la page d'accueil ==== |
| |
| 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 : <code>~# /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</code> |
| <note important>La ligne //rrdtool create// est issu du fichier ///usr/share/backuppc/bin/BackupPC// (version //3.2.1//). N’hésitez pas a vérifier que celle-ci n'est pas changé suite à une mise à jour.</note> |
| |
| ==== Désactiver le ping sur une machine ==== |
| |
| Pour une machine ne répondant pas au ping, il est possible de le //"désactiver"// à l'aide du paramètre suivant : <code perl>$Conf{PingPath} = '/bin/echo';</code> |
| |