Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
serveur:rsync [Le 22/12/2006, 14:18] Manu_Ubu |
— (Version actuelle) | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | DokuWiki | ||
- | <code> | ||
- | Version Hoary, Breezy | ||
- | </code> | ||
- | |||
- | Rédigé par [[utilisateurs:ostaquet]]. | ||
- | |||
- | ====== Mettre en place un serveur de synchronisation avec rsync ====== | ||
- | |||
- | ===== Introduction ===== | ||
- | |||
- | D'un point de vue de l'entreprise, un serveur de synchronisation est utile pour centraliser les backups sur une même machine équipée accessoirement d'un enregistreur de bande. | ||
- | |||
- | Pour le particulier, il est intéressant (si vous avez plusieurs machines), d'avoir un backup simple et rapide de son répertoire home. | ||
- | |||
- | **rsync** est prévu à cet effet. Il peut même faire plus mais nous allons envisager dans ce tutoriel comment faire une synchronisation entre deux serveurs; un serveur de production et un serveur de centralisation des backups. | ||
- | |||
- | ===== Les particularités de rsync ===== | ||
- | |||
- | **rsync** est un outil simple disponible sans installation particulière sous Ubuntu et existant pour divers systèmes d'exploitation. La grande particularité de rsync est d'optimiser la bande passante disponible en compressant les données à synchroniser et en ne transférant que les octets modifiés. | ||
- | |||
- | ==== Étude de cas ==== | ||
- | |||
- | Pour vous donner une idée de l'amélioration que rsync peut apporter, voici quelques tests que nous avons effectués en entreprise sur un serveur de production. | ||
- | |||
- | * Masse de données : environ 30 Go | ||
- | * Taux de modification des données : 1% par heure (environ 250 fichiers) | ||
- | * Liaison dédiée 100Mbits entre les deux serveurs. | ||
- | * Temps de synchronisation avec parcours de fichiers : 4h30 (du coup, on faisait que 3 synchros par jour). | ||
- | * Temps de synchronisation avec rsync : 22min (quand on le fait 3x par jour, maintenant, on fait 1 synchro par heure avec un temps de synchro de 10min). | ||
- | |||
- | C'était pour la petite histoire, passons maintenant à la configuration du serveur rsync. | ||
- | |||
- | ===== Configuration du serveur de synchronisation ===== | ||
- | |||
- | Sous Breezy, aucune installation particulière n'est à effectuer. Pour Hoary, reportez vous à la section //Sous Hoary// en fin de page. | ||
- | |||
- | Pour autoriser **rsync** à se lancer, il faut éditer le fichier ''/etc/default/rsync'' via la commande : | ||
- | <code> | ||
- | sudo vi /etc/default/rsync | ||
- | </code> | ||
- | |||
- | et modifier la ligne RSYNC à true | ||
- | <code> | ||
- | RSYNC_ENABLE=true | ||
- | </code> | ||
- | |||
- | Ensuite, pour lancer rsync sans redémarrage avec la commande : | ||
- | <code> | ||
- | sudo /etc/init.d/rsync start | ||
- | </code> | ||
- | |||
- | |||
- | Pour configurer **rsync**, on crée le fichier de configuration de rsync en éditant le fichier ''/etc/rsyncd.conf'' via la commande : | ||
- | |||
- | <code> | ||
- | sudo vi /etc/rsyncd.conf | ||
- | </code> | ||
- | |||
- | Dans ce fichier, on introduit les informations concernant les modules. Un module est une sorte de //partage// rsync. Dans notre cas, on va créer un module nommé ''share_rsync''. | ||
- | |||
- | <code> | ||
- | [share_rsync] | ||
- | path = /srv/intern | ||
- | comment = Synchro fichiers internes | ||
- | read only = false | ||
- | </code> | ||
- | |||
- | Vous pouvez bien entendu créer plusieurs modules de synchronisation. Il existe également d'autres mots clés à utiliser dans le fichier ''/etc/rsyncd.conf'' qui permettent l'authentification et d'autres choses. Vous trouverez de plus amples détails en tapant : | ||
- | |||
- | <code> | ||
- | man rsyncd.conf | ||
- | </code> | ||
- | |||
- | //Remarque : //sous Hoary, vous devez rechercher la configuration de l'//Internet Super Daemon//; vous trouverez plus d'informations en fin d'article. | ||
- | |||
- | Le serveur est maintenant prêt pour recevoir les requêtes de synchronisation. | ||
- | |||
- | ===== Configuration du client ===== | ||
- | |||
- | Les synchronisations du (ou des) client(s) peuvent se faire par le biais de la commande ''rsync''. La syntaxe de cette dernière est relativement simple. Voici la commande que j'utilise : | ||
- | |||
- | <code> | ||
- | rsync -raz --stats --delete /srv/intern 192.168.252.201::share_rsync/ | ||
- | </code> | ||
- | |||
- | Avec cette commande, j'indique que je souhaite supprimer les fichiers (option ''--delete'') qui ne sont plus sur la source (la source dans ce cas-ci est ''/srv/intern'') et que je souhaite obtenir des statistiques quant à la vitesse de transfert (option ''--stats''). | ||
- | |||
- | Les options clés se trouvant juste après la commande sont explicitées ci-dessous : | ||
- | * **''r''** : indique que je souhaite synchroniser le répertoire source de manière récursive. | ||
- | * **''a''** : indique que ''rsync'' doit travailler en mode //archive//, c'est-à-dire que les permissions et les propriétaires des fichiers sont synchronisés également. | ||
- | * **''z''** : indique à ''rsync'' qu'il doit utiliser la compression pour le transfert des données. | ||
- | |||
- | La destination de synchronisation (notre serveur) s'indique comme suit : | ||
- | |||
- | <code> | ||
- | adresse_ip::module/ | ||
- | </code> | ||
- | |||
- | Notez que si vous ne placez pas le ''/'' après le module, vous allez obtenir un sous-répertoire ''intern'' (dans ce cas-ci) dans le répertoire définit dans le module. Ce qui peut être intéressant dans certains cas mais ce n'est pas le but ici. | ||
- | |||
- | Donc, en exécutant cette commande, le répertoire ''/srv/intern'' est synchronisé avec le module ''share_rsync'' sur le serveur ''192.168.252.201''. | ||
- | |||
- | Sur une station de travail, on peut utiliser cette commande à chaque fois où l'on veut faire un petit backup (c'est ce que je fais à la maison) mais en entreprise, on souhaite que ces synchronisations (ou backup, comme vous voulez) soit faites à des intervalles fixes. | ||
- | |||
- | Pour ce faire, nous allons configurer [[applications:cron]] pour lancer les synchronisations automatiquement. Ceci est fait en ajoutant une ligne au fichier ''/etc/crontab''. Par exemple, pour une synchronisation par heure de 7h à 22h : | ||
- | |||
- | <code> | ||
- | 05 7-22 * * * root rsync -raz --stats --delete /srv/intern 192.168.252.201::share_rsync/ | ||
- | </code> | ||
- | |||
- | N'oubliez pas de forcer le rechargement du ''crontab'' via la commande : | ||
- | |||
- | <code> | ||
- | sudo /etc/init.d/cron reload | ||
- | </code> | ||
- | |||
- | Pour plus d'informations concernant les configurations de cron, veuillez vous reporter à [[cron|cette page]]. | ||
- | |||
- | |||
- | Si l'adresse des fichiers à copier contient des espaces, il faut les remplacer par ? ou \ , par exemple, dans le cas de Windows avec cwrsync : | ||
- | |||
- | <code> | ||
- | C:\Mes documents\ | ||
- | </code> | ||
- | devient : | ||
- | <code> | ||
- | /cygdrive/c/Mes?documents/ | ||
- | </code> | ||
- | |||
- | ===== Sous Hoary ===== | ||
- | |||
- | ==== Configuration de l'Internet Super Daemon ==== | ||
- | |||
- | Sous Hoary, nous devons configurer notre //Internet Super Daemon// pour gérer les connexions entrantes **rsync**, pour ce faire, on édite le fichier ''/etc/inetd.conf'' avec la commande suivante : | ||
- | |||
- | <code> | ||
- | sudo vi /etc/inetd.conf | ||
- | </code> | ||
- | |||
- | Et on y ajoute la ligne : | ||
- | <code> | ||
- | rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon | ||
- | </code> | ||
- | |||
- | ==== Rechargement de la configuration ==== | ||
- | |||
- | Voici la commande à effectuer pour recharger le fichier de configuration de l'//Internet Super Daemon// afin qu'il tienne compte de ''rsync'' : | ||
- | |||
- | <code> | ||
- | sudo /etc/init.d/inetd reload | ||
- | </code> |