Rsync

Définition

Rsync est un outil formidable qui permet de synchroniser des données sur une machine, mais aussi à travers un réseau.

J'utilise principalement ce programme pour faire une sauvegarde complète de mon site intranet hébergé sur un autre serveur.

Analyse d'un cas concret pour la sauvegarde de données

Description

Nous avons d'un côté, un serveur web nommé servLin1 (IP: 172.19.1.5). De l'autre une machine distante nommée jld07 (IP: 172.19.6.7).

Je désire faire une copie de sauvegarde de tout le contenu /var/www/html/site vers /home/servlin1_sav

À partir de la machine cliente (jld07), je lance le script suivant backup_servlin1 :

#!/bin/sh
# Données :
USER=root
SOURCE=172.19.1.5
OPTION="--links --update --archive --hard-links --force --partial --compress --verbose -e ssh --delete"
 
# Commande
rsync $OPTION $USER@$SOURCE:/var/www/html/site /home/servlin1_sav

Mémo : pour rendre un fichier exécutable, taper
chmod +x servlin1_sav
puis ./servlin1_sav pour le lancer.

Authentification

Si vous avez testé le script du haut, vous remarquerez qu'il vous demande le mot de passe de la machine distante servLin1. Si l'on veut réaliser cette opération de synchronisation automatiquement, il convient d'identifier la machine cliente sur le serveur. Ensuite ; il ne vous demandera plus le mot de passe.

Voici la procédure :

  • À partir de jld07, on génére un trousseau de clé public + privé. On valide les options par défaut :
    ssh-keygen -t rsa

  • la clé se trouve dans le répertoire ~/.ssh (sinon dans /root/.ssh) :
    • id_rsa : clé privé
    • id_rsa.pub : clé publique
  • On copie la clé publique sur le poste distant.

    scp ~/.ssh/id_rsa.pub root@172.19.1.5:/root

  • On se connecte sur le poste distant

    ssh root@172.19.1.5

  • On ajoute à la machine distante la clé publique dans la liste des clés autorisées :

    cat /root/id_rsa.pub >> /root/.ssh/authorized_keys2

    (le premier ”>” écrase le fichier ; le deuxième ”>” met à la suite des clés existantes).

Voilà, vous etes normalement identifié. Pour le vérifier, retournez sur votre machine en tapant

exit

puis faite une nouvelle tentative de connexion au serveur :

ssh root@172.19.1.5

Normalement, le système ne doit plus vous demander de mot de passe.

Automatiser la procédure

Maintenant, que l'on arrive à synchroniser les données du serveur, il ne reste plus qu'à automatiser l'ensemble. Disons par exemple, tout les midis à l'heure où l'on mange (13h30) ?

Je vais avoir besoin d'utiliser les cron. En l'occurrence, la commande crontab me permet de lancer des tâches à intervalles réguliers.

  1. Existe-t-il des tables déjà définies ?
    crontab -l

  2. Ajout d'une nouvelle table

    crontab -e


    # m h  dom mon dow   command
     
    # Sauvegarde site intranet sur servlin1 (edit: 18/07/06)
    30 13 * * *      /home/servlin1_sav/backup_servlin1 /dev/null 2>&1

Si vous avez installé mailx ou un autre utilitaire de lecture de messages envoyés par la machine, vous aurez même le compte rendu des fichiers synchronisés.

Liens connexes