Sauvegarder les données via SSH

De FphAdmin.

Le texte qui suit décrit la procédure pour organiser la sauvegarde régulière et automatique des données des ordinateurs de l'équipe vers le serveur interne de la FPH. Cette procédure nécessite Ssh et Rsync, elle est donc disponible sous Linux et Mac OS X. Avec cette procédure, le membre de l'équipe continue de travailler sur son ordinateur, il ne travaille pas directement sur le serveur (cas du lecteur U:, du webdav). C'est donc une procédure particulièrement adapté pour les portables qui ne sont pas connectés en permanence. Elle permet en outre d'affiner les données régulièrement sauvegardées voire de fixer des rythmes de sauvegarde différents en fonction des données.

Le principe de la procédure est simple, il s'agit de créer un script qui se connecte sur le serveur avec le compte personnel du membre de l'équipe et via rsync synchronise le contenu des répertoires sélectionnés.

Étape de la procédure

  • 1) ouvrir un accès ssh pour le compte en question (l'accès ssh à un compte n'est pas activé par défaut)
  • 2) procéder à l'échange de clés ssh : pour cela il faut générer une clé ssh (avec ssh-keygen -t rsa, ne pas mettre de phrase-clé) sur l'ordinateur client et copier la partie publique (dans le fichier id_rsa.pub) sur le compte sur le serveur (dans le fichier .ssh/authorized_keys), le fichier ne doit pouvoir être écrit par d'autres que l'utilisateur.
  • 3) rédiger un ou plusieurs scripts sur l'ordinateur client organisant la sauvegarde
  • 4) Ajouter dans la crontab de l'ordinateur client l'appel au script

Pour garder une cohérence, on copiera les sauvegardes dans le répertoire sauvegarde du client. L'échange de clés peut permettre également le montage du répertoire du serveur sur le compte client via FUSE, ce qui est une autre manière de reproduire le comportement du lecteur U:.

Exemple de script

Ce script copie l'intégralité du répertoire dev/ (où se trouve tout le code source développé par Exemole) ainsi qu'une partie des courriels.

#!/bin/bash
COMPTE=vic@192.168.200.2
DESTINATION=$COMPTE:sauvegarde/dev
cd /home/vic/dev
rsync -a --delete -e ssh * $DESTINATION
DESTINATION=$COMPTE:sauvegarde/courriels
cd /home/vic/.thunderbird/er1eb1de.default/Mail
rsync -a --delete -e ssh exemole.fr/Inbox $DESTINATION/exemole.fr/Inbox
rsync -a --delete -e ssh mapeadores.net $DESTINATION

Ce script s'appelle rsync-vic.sh et du côté de la crontab (accessible via crontab -e), l'entrée est la suivante (pour une sauvegarde toutes les deux heures, à la onzième minute)

11 */2 * * * /home/vic/rsync-vic.sh

Autre exemple :

#!/bin/bash
USER=mac
COMPTE=$USER@192.168.200.2
DESTINATION=$COMPTE:sauvegarde/textes
cd /home/$USER/textes
rsync -a --delete -e ssh * $DESTINATION
DESTINATION=$COMPTE:sauvegarde/courriels
cd /home/$USER/.thunderbird
rsync -a --delete -e ssh * $DESTINATION
DESTINATION=$COMPTE:sauvegarde/firefox
cd /home/$USER/.mozilla/firefox/x1c9kdx6.default
rsync -a --delete -e ssh bookmarks.html $DESTINATION