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