Sauvegarde sur un pc distant éteind avec Backup-manager

logoback-up-mnager.pngLe but est de sauvegarder un serveur distant sur un pc qui n'a pas vocation à être allumé en permanence. L'autre objectif est aussi de se passer de la location d'un espace ftp pour entreposer des sauvegardes. l'inconvénient est le temps d'upload qui sera beaucoup plus long en cas de restauration.

On va faire mumuse, avec le wake on lan, openssh et backup-manager.

Backup-manager est composé d'un ensemble de scripts qui sous-traitent à des programmes bien communs et rodés (tar, scp, etc... etc...) C'est notamment pour ça que je l'apprécie, pas de mauvaise surprise. Il me sert depuis 2 ou 3 ans pour les serveurs linux du travail et depuis moins de temps pour le serveur qui héberge ce blog.

Petit schéma de l'installation.

Il alourdit la lecture de ce billet, mais ça me fait mal au cœur de l'effacer.

________
|Dedibox|
|débian	|
________|
    |eth 0
    |IP publique:111.111.111.111
    |
    |
    |
    |IP publique:222.222.222.222
 ___|___
/Freebox/
--------
    |
    |IP locale: 192.168.0.254
    |_______________________
    |			    |ip locale 192.168.0.253 	adresse mac: 
    |			____|___________		XX:XX:XX:XX:XX
|-------|		|PC (Fédora13)	|
|PC 1   |		|sauvegardes	|
|	|		|---------------|
---------
  • Le serveur à sauvegarder IP notée 111.111.111.111
  • L'adresse publique du modem 222.222.222.222
  • L'IP locale du PC qui servira aux sauvegardes: 192.168.0.253 adresse mac notée: XX:XX:XX:XX:XX[1]

Le PC1 est là juste pour faire joli et quelques tests

Backup-manager

L'installer

apt-bet install backup-manager

Configurer backup-manager

Tout se passe dans le fichier /etc/backup-manager.conf. Si la lecture de l'anglais technique fait partie de vos compétences, le paramétrage ne devrait pas vous poser de soucis, car le fichier de configuration est bien documenté.
On va le configurer directement, dans sa version finale. Il faudra paramétrer le wake on lan et le ssh après.

Repository

J'ai tout laissé par défaut. La copie locale sera mise dans /var/archives

export BM_REPOSITORY_ROOT="/var/archives"

Archives

export BM_ARCHIVE_TTL

Indique le "time to live" Soit le nombre de jours dont les archives sont gardées. [2].

export BM_ARCHIVE_METHOD="tarball-incremental mysql"

Ce sont les méthodes de sauvegardes que j'ai choisi.

Un petit mot sur les avantages/inconvenants de l'incrémentiel: Dans une stratégie de sauvegardes incrémentielles, Des sauvegardes totales (tous les fichiers) sont effectuées à une périodicité assez éloignée. Entre deux, on effectue des sauvegardes incrémentielles, qui ne prennent que les fichiers qui ont été créés ou modifiés depuis la sauvegarde précédente.

L'avantage de l'incrémentiel est de prendre moins de place, et par effet de cause d'être plus rapide, et donc par exemple (ce n'est pas le cas dans ce tuto) d'aller changer la bande de sauvegarde moins souvent. L'inconvénient c'est que si jamais il y aura besoin de faire une restauration, ça se passera comme ça:
Restauration de la dernière sauvegarde totale puis restauration de toutes les sauvegardes incrémentielles une par une en écrasant les fichiers mois récent. Deux inconvénients:

  • S'il y a beaucoup d'incrémentielles, ce sera long.
  • Les fichiers qui ont été volontairement supprimés depuis la sauvegarde totale seront restaurés. ça peut paraitre bête, mais lors d'une des rare restaurations, la secrétaire de direction avait la veille passé quelques heures à faire du tri dans ses dossiers et ses fichiers. Elle a halluciné de voir tout revenir.

Encryption

Je ne chiffre pas les sauvegardes, je fais simplement attention à ce qu'elles soient suffisamment protégées et laisse ce chapitre par défaut. C'est un coup à les rendre inutilisables et à perdre du temps précieux lors d'une éventuelle restauration.

Backup method: tarball

Même si on a mis tarball-incremental incrémental ci dessus, cette partie nous intéresse.

Les directives qui m'intéressent dans cette partie sont notamment:

export BM_TARBALL_DIRECTORIES="/etc /home /var"

Ce sont les répertoires à sauver

export BM_TARBALL_BLACKLIST="/var/archives"

Ce sont les répertoires à exclure.

tarball-incremental

ici on définie la périodicité incrémentielles/totales J'ai laissé par défaut

Backup method: MYSQL

export BM_MYSQL_DATABASES="__ALL__"

listez ici les bases à sauver. faites comme ci dessus pour toutes les sauver.

Quand aux paramètres de coonnection, là j'ai eu la négligence de laisser root. mais créer un user nommé backup-manager ayant les droits en lecture seulement (suffisant pour la sauvegarde) sur toutes les tables ça donne:

GRANT SHOW DATABASES,SELECT,LOCK TABLES ON *.* TO 'backupmanager'@'localhost' IDENTIFIED BY 'secret';

Backup method: svn

Non concerné

Backup method: pipe

Non concerné

Section "UPLOAD"

export BM_UPLOAD_METHOD="scp":

La méthode choisie

export BM_UPLOAD_HOSTS="222.222.222.222"

L'ip du serveur qui recevra les sauvegardes

export BM_UPLOAD_DESTINATION="/media/dd2/saves"

Le repertoire de dépot des sauvegardes sur le pc distant. Dans mon cas, c'est un disque dur dédié à ça.

The SSH method

export BM_UPLOAD_SSH_USER="sauveur"

l'user ssh à annoncer. on le créera plus loin

export BM_UPLOAD_SSH_KEY="/root/.ssh/id_dsa"

Il n'arrive pas à prendre la clé par défaut d'apres mes esais, faut lui indiquer. On la créera plus loin dans ce tuto.

export BM_UPLOAD_SSH_HOSTS="222.222.222.222"

L'IP publique de la freebox. Le mappage des ports sur l'interface freebox sera vue plus loin.

export BM_UPLOAD_SSH_PORT="22" export BM_UPLOAD_SSH_DESTINATION="/media/dd2/saves"

dossier destinataire

export BM_UPLOAD_SSH_PURGE="true" export BM_UPLOAD_SSH_TTL="15"

durée de vie des sauvegardes (je mets 15 j là dessus.)

on ne s'occupe pas des méthodes suivantes

Advanced settings, use this with care.

export BM_PRE_BACKUP_COMMAND="wakeonlan -i 222.222.222.22 xx:xx:xx:xx:xx"

On réveille l'ordinateur distant au démarrage de la sauvegarde.. Pas besoin de rajouter un délai. dès qu'il aura lancé la demande de wakeonlan, il compressera les donner à sauvegarder en local, avant de les envoyer. La première étape laisse le temps au pc de s'allumer tranquilou.

export BM_POST_BACKUP_COMMAND="ssh sauveur@222.222.222.222 -i /root/.ssh/id_dsa halt"

Eteindre la machine quand c'est fini. En théorie un simple user linux n'a pas le droit de le faire. On verra plus loin.

Paramétrer la freebox pour le ssh et le wakeonlan

  • Cocher le "Proxy wol"
  • ajoutez une redirection du port 22 vers l'adresse IP locale du PC qui recevra les sauvegardes.

Comme dans le screen ci dessous (il y a en plus le port 80 là). interface paramétrage routeur freebox

Installer wake on lan

Le PC n'a pas vocation à être allumé en permanence, il faudra que le serveur l'allume lorsqu'il souhaite faire sa sauvegarde. Il n'y a pas grand chose à faire pour le wol.

Pour vérifier que le pc est compatible wol

Les cartes mères récentes permettent le wol. pour vérifier, le mieux est d'installer un petit tool:

yum install ethtool

et lancer la commande:

ethtool eth0

Si on lit ce genre de trucs c'est ok:

Supports Wake-on: pumbg
Wake-on: g

Sinon, il faut aller farfouiner dans le bios pour l'activer. Pour utiliser le wakeonlan il nous faut l'adresse mac du PC à allumer. La commande "ifconfig" (en root) vous donnera ce renseignement. Je la note XX:XX:XX:XX:XX.

Test du wol en local

Le pc 1 est un ubuntu. Installer un script qui permet d'envoyer le signal magique wakeonlan

sudo apt-get install wakeonlan

Puis on éteind le pc fedora et on l'allume depuis PC1 en tapant :

wakeonlan XX:XX:XX:XX:XX

Et ça marche (le cas contraire n'est pas évoqué dans ce tuto).

Le wol depuis internet

Depuis la dédibox (en ssh) on tente apres avoir installé le paquet wakeonlan:

wakeonlan -i 222.222.222.222 XX:XX:XX:XX

Et ça marche (le cas contraire n'est pas évoqué dans ce tuto).

A ce niveau là on sait que le serveur pourra allumer le pc distant. Passons maintenant à la mise en place d'un espace de stockage sur ce pc pour y déposer les sauvegardes.

openssh avec clés

logo_openssh.png

Créer un user unix qui sera utilisé pour les sauvegardes (sur le PC qui recevra les sauvegardes)

En tant que root sur le pc qui recevra les sauvegardes:
Je le nomme sauveur

useradd -m -G users -s /bin/bash sauveur 
passwd sauveur

Installation et paramétrage openssh

Sur l'ordinateur qui recevra les sauvegardes

yum install openssh-server

éditer le fichier de configuration

vi /etc/ssh/sshd_config

Temporairement on laisse "yes" à la directive PasswordAuthentication mais "no" pour PermitRootLogin

PasswordAuthentication yes
PermitRootLogin no

Et on ajoute à la fin:

AllowUsers sauveur

Relancer le daemon ssh:

/etc/init.d/sshd restart

Générer des clés ssh pour se connecter au compte sauveur:

Sur le serveur qu'on veut sauvegarder (la dédibox), en root

cd ~
ssh-keygen -t dsa
exit

Laissez les valeurs par défaut quand il demande où enregistrer les fichiers. je ne mets pas de passphrase.

Placer la clé publique générée dans la listes de celles autorisées par "sauveur" sur le PC qui reçoit les sauvegardes. Toujours depuis le serveur à sauvegarder:

ssh-copy-id -i ~/.ssh/id_dsa.pub sauveur@222.222.222.222

Revenir sur le PC qui reçoit les sauvegardes et éditer la configuration de sshd

vi /etc/ssh/sshd_config

et mettre "no" à la directive PasswordAuthentication Relancer le daemon ssh:

/etc/init.d/sshd restart

Permettre au compte "sauveur" d'utiliser la commande halt

J'ai fait un petit appel au secours sur le forum de fedora à ce sujet. Un utilisateur utiisant l'interface graphique (et donc présent localement devant le PC?) aurait plus de droit qu'un utilisateur distant (du moins pour l'extinction).

En root sur le pc qui recevra les sauvegardes:

chmod u+s /sbin/halt

Finaliser

Il reste juste à créer les dossiers qui recevront les sauvegardes et y donner les droits au compte sauveur. Puis il faut tester:

backup-manager

Conclusion

L'écriture de ce billet m'a un peu gonflé en fait. fastidieux, dur à présenter, il faut que je me trouve un plugin dotclear "sommaire" dans un billet.... boaf, allez, plus que l'introduction à refaire, chasser les fautes et publier. :D

Notes

[1] Je pense que si je mettais mon adresse IP et l'adresse mac ici, certains petits malins mettraient en place un script pour allumer mon pc toutes les nuits à 3h du matin.

[2] Ici il est assez faible, 5 j seulement. Dans le centre hospitalier pour lequel je travaille, c'est 6 mois d'archives (sur bandes), car mes boulets d'utilisateurs sont capables de se rendre compte de fichiers disparus des mois après

Page top