Sauvegarde par scripts périodiques

fc - 21 sep 2007

Note: documentation technique à usage interne AMAP, ne concerne pas les membres de la communauté Capsis. Ce document décrit la mise en place d'un script à exécution périodique automatique pour sauvegarder le serveur CVS capsis ainsi que le poste de travail de F. de Coligny sur le serveur de sauvegarde Cornouaille d'AMAP.
0. Installations si nécessaire

samba et rsync

Utiliser le gestionnaire de paquetages (apt-get / urpmi / yum ...).

1. Montage de cornouaille sur /mnt/cormouaille

  • créer un fichier smb-credentials dans /home/coligny
username=coligny
password=********
  • le rendre illisible pour les autres:
chmod 600 smb-credentials
  • ajouter une ligne dans /etc/fstab:
//cornouaille/coligny /mnt/cornouaille smbfs defaults,credentials=/home/coligny/
smb-credentials,users,noauto 0 0
  • créer un point de montage
cd /mnt
mkdir cornouaille

pour monter cornouaille (/ le démonter / vérifier son montage):

mount /mnt/cornouaille
umount /mnt/cornouaille
mount

2. Préparer une connexion SSH avec capsis.cirad.fr

Le serveur cvs capsis.cirad.fr ne voit pas le réseau local, donc pas cornouaille. Le même script de backup va donc sauver (1) le poste de travail et (2) le serveur cvs sur cornouaille. La connexion poste de travail - serveur cvs se fait par ssh. Pour éviter la demande d'un mot de passe à chaque connexion dans le script, on met génère une paire de clés en local et on recopie la clé publique sur le serveur.

génération des clés en local. une paire de clés privée / publique est générée dans /home/coligny/.ssh/:

ssh-keygen
-> id_rsa et id_rsa.pub

sur le serveur:

cd /home/coligny/.ssh

éditer authorized_keys et copier la clé publique (contenu de id_rsa.pub) dans le fichier,
*ATTENTION: sur une seule ligne. *
Les connexions par ssh ne demanderont plus de mot de passe.

3. Faire un script de backup avec rsync

script backup.sh dans /home/coligny/bin

## backup on cornouaille
# fc - 21.9.2007

echo backup to /mnt/cornouaille/workstation started...
date

# mount cornouaille, see /etc/fstab
if [ `mount | grep cornouaille | wc -l` != "1" ]; then 
mount /mnt/cornouaille
fi 

# check if cornouaille was mounted correctly. If not, exit
if [ `mount | grep cornouaille | wc -l` != "1" ]; then 
echo backup error: /mnt/cornouaille was not mounted properly, aborted
exit 1
fi 

# rsync commands for backup
echo /home/coligny/Documents/...
rsync -aqz --delete /home/coligny/Documents /mnt/cornouaille/workstation/
echo /home/coligny/Mail/...
rsync -aqz --delete /home/coligny/Mail /mnt/cornouaille/workstation/
echo /home/coligny/java/capsis4/...
rsync -aqz --delete /home/coligny/java/capsis4 /mnt/cornouaille/workstation/
echo /home/coligny/java/capsis4_openGL_branch/...
rsync -aqz --delete /home/coligny/java/capsis4_openGL_branch /mnt/cornouaille/workstation/

echo coligny@capsis.cirad.fr:/opt/cvs/capsis4...
rsync -aqz --rsh=ssh --delete coligny@capsis.cirad.fr:/opt/cvs/capsis4 /mnt/cornouaille/cvs-server/

date
echo backup terminated
echo "***" 
exit 0

backup.sh s'assure de ne monter /mnt/cornouaille qu'une seule fois et stoppe en erreur s'il n'est pas monté correctement. Il peut donc être lancé plusieurs fois de suite sans problème. Il ne démonte pas /mnt/cornouaille à la fin. Le script ecrit des messages sur la sortie standard au fur et à mesure de son avancement.

4. Mettre backup.sh dans la crontab

Pour exécution automatique tous les jours, utilisation de la crontab.

Autorisation de l'utilisation de la crontab par coligny:

su - (passer root)
vi /etc/cron.allow
i (mode insertion de vi)
coligny
Esc (sortie du mode insertion)
:wq (ecrire, quitter)
exit (sortir de root)

Modification de la crontab par coligny:


crontab -e

Ajouter une ligne comme suit:

00 22 * * * /home/coligny/bin/backup.sh>>/home/coligny/var/backup.log

backup.sh_ sera lancé tous les jours à 22h et sa sortie sera redirigée (en ajout) dans le fichier /home/coligny/var/backup.log