Différences entre les versions de « Rsync »

De BlaxWiki
Aller à la navigationAller à la recherche
 
(20 versions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
=== Vérifications ===
=== Serveur Rsync ===
[http://doc.ubuntu-fr.org/rsync Doc très détaillée]
 
==== Vérifications ====
Voici une liste de points à vérifier lors de la mise en place d'un serveur rsync
Voici une liste de points à vérifier lors de la mise en place d'un serveur rsync
<pre>
<pre>
- le fichier secret doit etre en 700
- Le nom du serveur est le nom exacte de la machine cliente. Le même nom devra être répertorié sur rsync1b.agarik.com dans /nas/synchro/, /etc/hosts et /etc/rsyncd.conf. La moindre
  erreur empêchera la synchronisation.
  - Chaque serveur est synchronise en switche et non en routé dans la mesure du possible (une ip sur le serveur rsync dans le meme subnet / vlan que le serveur à backuper)
  - Chaque serveur est synchronise en switche et non en routé dans la mesure du possible (une ip sur le serveur rsync dans le meme subnet / vlan que le serveur à backuper)
  - Chaque serveur de plus de 10k fichiers sera synchronise localement sur disque / chaque serveur de moins de 10k fichiers sera sycnhronise sur un montage nfs (isilon ou netapp)
  - Chaque serveur de plus de 10k fichiers sera synchronise localement sur disque / chaque serveur de moins de 10k fichiers sera sycnhronise sur un montage nfs (isilon ou netapp)
  - Chaque script devra etre verifie pour s’assurer que la synchro correspond au plan de backup
  - Chaque script devra etre verifie pour s’assurer que la synchro correspond au plan de backup
  - Chaque script devra etre verifie pour s’assurer qu’il n’y a pas de dossier source erronee (ne pas mettre de / à la fin du dossier source)
  - Chaque script devra etre verifie pour s’assurer qu’il n’y a pas de dossier source erronee (ne pas mettre de / à la fin du dossier source)
  - Chaque script devra etre verifie pour s’assurer qu’il n’y a pas deux dossiers sources avec le meme nom de dossier en fin de path (ie /usr/local/etc et /etc, les 2 sont synchro dans
 
le dossier /etc, avec –delete, seul le dernier est garde). Si oui alors rajouter à la fin le nom du répertoire qui sera créé dans le "home" sur le serveur rsync (rsync -vrpogtlH  
  - Si des dossiers ont le même nom (exemple /etc & /opt/applis/apache/etc); il faut bien préciser un repertoire de destination différent :
--delete /opt/applis/clamav/etc agarik@192.168.26.17::proxy1.agarik.com/clamav-etc )
    - RSYNC_PASSWORD=xxxxx rsync -vrpogtlH --delete /etc agarik@192.168.26.18::agarik.com 2>/opt/agarik/rapport_rsync
    - RSYNC_PASSWORD=xxxxx rsync -vrpogtlH --delete /opt/applis/apache/etc agarik@192.168.26.18::agarik.com/apache/etc 2>>/opt/agarik/rapport_rsync
  - Chaque script devra etre verifie pour ajouter –delete, idealement, on pourrait avoir 2 comportement pour les synchros sur disques, le premier (6 jours sur 7) faire une synchro sans  
  - Chaque script devra etre verifie pour ajouter –delete, idealement, on pourrait avoir 2 comportement pour les synchros sur disques, le premier (6 jours sur 7) faire une synchro sans  
effacement, le second (1 jour par semaine), effectuerais une synchro avec effacement. Sur isilon, les snapshots permetteront d’avoir une semaine de retention.
  effacement, le second (1 jour par semaine), effectuerais une synchro avec effacement. Sur isilon, les snapshots permetteront d’avoir une semaine de retention.
 
- Importance du / à la fin de la source :
      - rsync -av /foo/ /bar/ : copie les fichiers présents dans foo dans le répertoire bar
      - rsync -av /foo /bar/ : copie le répertoire foo dans bar (et le créé si il n existe pas)
 
  - Les synchros seront repartis dans la journee en fonction de l’impact sur les serveurs. Pour les serveurs agarik, la synchro pourra etre fait en journee meme avec un impact leger.
  - Les synchros seront repartis dans la journee en fonction de l’impact sur les serveurs. Pour les serveurs agarik, la synchro pourra etre fait en journee meme avec un impact leger.
- Il est possible d'exclure des sous-répertoires. Si par exemple on veut exclure le sous-répertoire /www1/etc/ contenu dans /www/, on écrira alors :
    RSYNC_PASSWORD=5rtg2r5 /usr/bin/rsync -vrpogtlH --delete --exclude=/www1/etc /www agarik@192.168.254.25::www.agarik.com
    rsync -av --exclude="/dossier1/geek/" /foo/ /bar/ (le repertoire dossier1 se trouve dans /foo
    rsync va ici interpréter l’exclusion comme "/foo/dossier1/geek/", un oubli du premier / (foo/dossier1/geek) autoriserai rsync a exclure d’autres "dossier1/geek/" si il en trouvait
    dans l’arborescence de "/foo".
</pre>
</pre>


=== Rsync configuraiton ===
===== Rsync configuration serveur =====
Exemple de configuration rsyncd.conf au niveau serveur
<pre>
<pre>
log file=/home/rsyncd.log
log file=/home/rsyncd.log
munge symlinks = no # evite d avoir des liens symboliques cassés
munge symlinks = no # evite d avoir des liens symboliques cassés
[agadev2.agarik.com]
[agadev2.agarik.com]                                 # Nom de la machine entre crochets, à modifier en fonction de la machine.
      path=/nas/synchro2/Agarik/agadev2.agarik.com/
        path=/nas/synchro/Agarik/agadev2.agarik.com/ # Répertoire de sauvegarde, à modifier en fonction de la machine.
      lock file=/home/rsyncd.lock
        lock file=/home/rsync/rsyncd.lock
      read only=false
        read only=false
      use chroot=no
        use chroot=no
      auth users=agadev
        auth users=agadev                             # Identifiant RSync du client, à modifier en fonction du client.
      secrets file=/home/rsync/rsyncd.secrets
        secrets file=/home/rsync/rsync/rsyncd.secrets
      strict modes=true
        strict modes=true
      uid=root
        uid=root
      gid=wheel
        gid=wheel
      list=false
        list=false
      hosts allow=10.252.20.9
        hosts allow=192.168.0.160                    # Adresse IP de la machine à sauvegarder, à modifier en fonction de la machine.
</pre>
 
===== Purge de dump sql =====
Si des serveurs ont des dumps sql backupés (généralement avec la date dans le nom du fichier), ils vont s'accumuler. Il faudra donc mette en place une purge en crontab (ex : tmpwatch 48 /nas/rsync/sql.nrj.fr/CURRENT) pour les supprimer
 
==== Vérification des logs ====
 
Lorsque le dossier source d’un rsync est mal ecrit, il synchronise non pas le dossier mais le contenu, effacant par la meme les synchronisation precedente.
 
Exemple, dans le cas de sogec actuellement en place :
- RSYNC_PASSWORD= /opt/applis/rsync/bin/rsync -vrpogtlH --delete /etc sogec@172.26.36.11::www3.sogec-informatique.fr 2> /opt/agarik/rapport_rsync
- RSYNC_PASSWORD= /opt/applis/rsync/bin/rsync -vrpogtlH --delete /opt/applis/httpd/conf/ sogec@172.26.36.11::www3.sogec-informatique.fr 2>> /opt/agarik/rapport_rsync
 
La seconde source contient un /, ce qui entraine que le /etc est systematiquement efface et n’est donc pas present sur rsync, un ls le confirme d’ailleurs :
<pre>
[root@rsync1.lc.agarik.com rsync]# ls -la /nas/synchro2/Sogec/www3.sogec-informatique.fr/
total 268
drwxr-xr-x 6 root root  4096 Sep 25 04:48 .
drwxr-xr-x 6 root root  4096 Jan  4  2012 ..
drwxr-xr-x 2 root root  4096 Sep 24 23:31 CURRENT
drwxr-xr-x 5 root root  4096 Apr 11 18:04 data
drwxr-xr-x 2 root root  4096 Mar  1  2011 extra
-rw-r--r-- 1 root root  6748 Mar  1  2011 httpd.conf.bak
-rw-r--r-- 1 root root 16684 Feb 25  2011 httpd.conf.orig
-rw-r--r-- 1 root root  8261 May 22  2011 httpd_443.conf
-rw-r--r-- 1 root root  6860 Mar 10  2011 httpd_443.conf.2011031001
-rw-r--r-- 1 root root  7181 Mar 17  2011 httpd_443.conf.2011031701
-rw-r--r-- 1 root root  7993 May 22  2011 httpd_4433.conf
-rw-r--r-- 1 root root  6865 Mar 10  2011 httpd_4433.conf.201031001
-rw-r--r-- 1 root root  7189 Mar 17  2011 httpd_4433.conf.2011031701
-rw-r--r-- 1 root root  7512 May 22  2011 httpd_80.conf
-rw-r--r-- 1 root root  6748 Mar 10 2011 httpd_80.conf.2010031001
-rw-r--r-- 1 root root  6998 Mar 14  2011 httpd_80.conf.20110314
-rw-r--r-- 1 root root  7622 May 18  2011 httpd_80.conf.backuptest
-rw-r--r-- 1 root root  7400 May 22  2011 httpd_8080.conf
-rw-r--r-- 1 root root  6756 Mar 10  2011 httpd_8080.conf.2010031001
</pre>
</pre>


Exemple de script rsync au niveau client
Pour detecter ce comportement, il suffit de chercher, dans le fichier de log rsync, les serveurs effectuants une synchronisation du dossier en cours ‘./’, ici cela nous donne :
- [root@rsync1.lc.agarik.com rsync]# grep '\./$' rsyncd.log -B2 | grep "to " | awk '{print $6}' | sort | uniq www3.sogec-informatique.fr/
 
=== Script rsync au niveau client ===
<pre>
<pre>
#!/bin/sh
#!/bin/sh
Ligne 52 : Ligne 115 :
</pre>
</pre>


=== Ligne de commande rsync et crontab ===
* Copie qui permet d'avoir un mirroir entre la source et la destination (la source en tant que maitre du mirroir)
rsync -avz --delete-after /home/source user@ip_du_serveur:/dossier/destination/


=== Copie rapide ===
* Ici agarik est le nom du user défini dans le fichier secret du serveur rsync, et "pxe1-ins.agarik.com" est le nom défini dans rsyncd.conf
<pre>
rsync -vrpogtlH --delete /opt/agarik/scripts agarik@10.253.6.13::pxe1-ins.agarik.com
Pour faire une copie de fichier rapide entre 2 machines via ssh
rsync -avz --delete-after  3zax rsync://ben@217.174.206.68:443/pxe1-ins.agarik.com (ici on a changé le port par défaut de rsync sur le serveur rsync, maintenant 443 au lieu de 873)
A faire sur la machine qui va envoyer les données à copier. On va donc copier tout ce qui se trouve à l endroit ou on fait le tar vers le serveur 212.43.194.2 dans le repertoire
/home/benbis/test :
 
tar cvzf - . | ssh benj@212.43.194.2 "tar xvzf - -C /home/benbis/test"
ou alors pour un dd : dd if=/dev/volimages/firewall_image_root | ssh root@192.168.10.12 "dd of=/dev/volimages/firewall_image_root"
</pre>
=== Copie via Rsync ===
<pre>
rsync -av -e "ssh -p 44230" --delete-before --exclude=.ssh/ /home/user/backup/ user@host_destination:/var/backup/user --stats --bwlimit=25


Cette commande permet d'exécuter la commande “rsync” via du ssh sur un port non standard en limitant le débit de transmission.
* Dans une crontab, pour le cas d'un rsync via ssh (donc sans serveur rsync sur la destination), si openssh est mis via les sources et donc pas dans les path de base, il faut le préciser dans la ligne de commande :
0 12 * * * root /opt/applis/rsync-3.0.4-1/bin/rsync -e /opt/applis/openssh-5.1p1-1/bin/ssh  -vrpogtl --delete /home/stats root@192.168.203.79:/home/


    options :
        a : permet d'activer la récursivité
        v : permet à la commande d'être verbeuse
        e : permet de disposer d'option ssh. Dans notre cas nous spécifions un port particulier (44230)
        D : permet de copier les fichiers speciaux tel /dev/null
        exclude : permet d'exclure des répertoires du backup en partant du répertoire source du backup. Dans la commande, le fait de spécifier ”.ssh/” exclut ”/home/user/backup/.ssh/”.
        stats : permet d'afficher un rapport de fin de backup
        bwlimit : permet de limiter le débit. La valeur par défaut est en Kb [kilobytes = kilo octets]
</pre>


[[Catégorie:Software]]
[[Catégorie:Software]]

Version actuelle datée du 17 novembre 2014 à 11:04

Serveur Rsync[modifier]

Doc très détaillée

Vérifications[modifier]

Voici une liste de points à vérifier lors de la mise en place d'un serveur rsync

 - le fichier secret doit etre en 700
 - Le nom du serveur est le nom exacte de la machine cliente. Le même nom devra être répertorié sur rsync1b.agarik.com dans /nas/synchro/, /etc/hosts et /etc/rsyncd.conf. La moindre 
   erreur empêchera la synchronisation. 

 - Chaque serveur est synchronise en switche et non en routé dans la mesure du possible (une ip sur le serveur rsync dans le meme subnet / vlan que le serveur à backuper)

 - Chaque serveur de plus de 10k fichiers sera synchronise localement sur disque / chaque serveur de moins de 10k fichiers sera sycnhronise sur un montage nfs (isilon ou netapp)

 - Chaque script devra etre verifie pour s’assurer que la synchro correspond au plan de backup

 - Chaque script devra etre verifie pour s’assurer qu’il n’y a pas de dossier source erronee (ne pas mettre de / à la fin du dossier source)

 - Si des dossiers ont le même nom (exemple /etc & /opt/applis/apache/etc); il faut bien préciser un repertoire de destination différent :
    - RSYNC_PASSWORD=xxxxx rsync -vrpogtlH --delete /etc agarik@192.168.26.18::agarik.com 2>/opt/agarik/rapport_rsync
    - RSYNC_PASSWORD=xxxxx rsync -vrpogtlH --delete /opt/applis/apache/etc agarik@192.168.26.18::agarik.com/apache/etc 2>>/opt/agarik/rapport_rsync 
 
 - Chaque script devra etre verifie pour ajouter –delete, idealement, on pourrait avoir 2 comportement pour les synchros sur disques, le premier (6 jours sur 7) faire une synchro sans 
   effacement, le second (1 jour par semaine), effectuerais une synchro avec effacement. Sur isilon, les snapshots permetteront d’avoir une semaine de retention.

 - Importance du / à la fin de la source :
       - rsync -av /foo/ /bar/ : copie les fichiers présents dans foo dans le répertoire bar
       - rsync -av /foo /bar/ : copie le répertoire foo dans bar (et le créé si il n existe pas)

 - Les synchros seront repartis dans la journee en fonction de l’impact sur les serveurs. Pour les serveurs agarik, la synchro pourra etre fait en journee meme avec un impact leger.

 - Il est possible d'exclure des sous-répertoires. Si par exemple on veut exclure le sous-répertoire /www1/etc/ contenu dans /www/, on écrira alors :
    RSYNC_PASSWORD=5rtg2r5 /usr/bin/rsync -vrpogtlH --delete --exclude=/www1/etc /www agarik@192.168.254.25::www.agarik.com

    rsync -av --exclude="/dossier1/geek/" /foo/ /bar/ (le repertoire dossier1 se trouve dans /foo
    rsync va ici interpréter l’exclusion comme "/foo/dossier1/geek/", un oubli du premier / (foo/dossier1/geek) autoriserai rsync a exclure d’autres "dossier1/geek/" si il en trouvait 
    dans l’arborescence de "/foo".

Rsync configuration serveur[modifier]
log file=/home/rsyncd.log
munge symlinks = no # evite d avoir des liens symboliques cassés
[agadev2.agarik.com]                                  # Nom de la machine entre crochets, à modifier en fonction de la machine.
        path=/nas/synchro/Agarik/agadev2.agarik.com/  # Répertoire de sauvegarde, à modifier en fonction de la machine.
        lock file=/home/rsync/rsyncd.lock
        read only=false
        use chroot=no
        auth users=agadev                             # Identifiant RSync du client, à modifier en fonction du client.
        secrets file=/home/rsync/rsync/rsyncd.secrets
        strict modes=true
        uid=root
        gid=wheel
        list=false
        hosts allow=192.168.0.160                     # Adresse IP de la machine à sauvegarder, à modifier en fonction de la machine.
Purge de dump sql[modifier]

Si des serveurs ont des dumps sql backupés (généralement avec la date dans le nom du fichier), ils vont s'accumuler. Il faudra donc mette en place une purge en crontab (ex : tmpwatch 48 /nas/rsync/sql.nrj.fr/CURRENT) pour les supprimer

Vérification des logs[modifier]

Lorsque le dossier source d’un rsync est mal ecrit, il synchronise non pas le dossier mais le contenu, effacant par la meme les synchronisation precedente.

Exemple, dans le cas de sogec actuellement en place :

- RSYNC_PASSWORD= /opt/applis/rsync/bin/rsync -vrpogtlH --delete /etc sogec@172.26.36.11::www3.sogec-informatique.fr 2> /opt/agarik/rapport_rsync
- RSYNC_PASSWORD= /opt/applis/rsync/bin/rsync -vrpogtlH --delete /opt/applis/httpd/conf/ sogec@172.26.36.11::www3.sogec-informatique.fr 2>> /opt/agarik/rapport_rsync

La seconde source contient un /, ce qui entraine que le /etc est systematiquement efface et n’est donc pas present sur rsync, un ls le confirme d’ailleurs :

[root@rsync1.lc.agarik.com rsync]# ls -la /nas/synchro2/Sogec/www3.sogec-informatique.fr/
total 268
drwxr-xr-x 6 root root  4096 Sep 25 04:48 .
drwxr-xr-x 6 root root  4096 Jan  4  2012 ..
drwxr-xr-x 2 root root  4096 Sep 24 23:31 CURRENT
drwxr-xr-x 5 root root  4096 Apr 11 18:04 data
drwxr-xr-x 2 root root  4096 Mar  1  2011 extra
-rw-r--r-- 1 root root  6748 Mar  1  2011 httpd.conf.bak
-rw-r--r-- 1 root root 16684 Feb 25  2011 httpd.conf.orig
-rw-r--r-- 1 root root  8261 May 22  2011 httpd_443.conf
-rw-r--r-- 1 root root  6860 Mar 10  2011 httpd_443.conf.2011031001
-rw-r--r-- 1 root root  7181 Mar 17  2011 httpd_443.conf.2011031701
-rw-r--r-- 1 root root  7993 May 22  2011 httpd_4433.conf
-rw-r--r-- 1 root root  6865 Mar 10  2011 httpd_4433.conf.201031001
-rw-r--r-- 1 root root  7189 Mar 17  2011 httpd_4433.conf.2011031701
-rw-r--r-- 1 root root  7512 May 22  2011 httpd_80.conf
-rw-r--r-- 1 root root  6748 Mar 10  2011 httpd_80.conf.2010031001
-rw-r--r-- 1 root root  6998 Mar 14  2011 httpd_80.conf.20110314
-rw-r--r-- 1 root root  7622 May 18  2011 httpd_80.conf.backuptest
-rw-r--r-- 1 root root  7400 May 22  2011 httpd_8080.conf
-rw-r--r-- 1 root root  6756 Mar 10  2011 httpd_8080.conf.2010031001

Pour detecter ce comportement, il suffit de chercher, dans le fichier de log rsync, les serveurs effectuants une synchronisation du dossier en cours ‘./’, ici cela nous donne :

- [root@rsync1.lc.agarik.com rsync]# grep '\./$' rsyncd.log -B2 | grep "to " | awk '{print $6}' | sort | uniq www3.sogec-informatique.fr/

Script rsync au niveau client[modifier]

#!/bin/sh

RSYNC_PASSWORD=xxxxxx   /opt/applis/rsync/bin/rsync -vrpogtlH --delete /etc agarik@10.253.6.13::pxe1-ins.agarik.com 2>/opt/agarik/rapport2_rsync
RSYNC_PASSWORD=xxxxxx   /opt/applis/rsync/bin/rsync -vrpogtlH --delete /home/sites/default agarik@10.253.6.13::pxe1-ins.agarik.com 2>>/opt/agarik/rapport2_rsync
RSYNC_PASSWORD=xxxxxx   /opt/applis/rsync/bin/rsync -vrpogtlH --delete /opt/agarik/scripts agarik@10.253.6.13::pxe1-ins.agarik.com 2>>/opt/agarik/rapport2_rsync

sed -i '/vanished/d' /opt/agarik/rapport2_rsync
if [ -s /opt/agarik/rapport2_rsync ];
then
echo "From: <backup@agarik.com>
To: backup@agarik.com
Subject: Rapport Rsync `uname -n vers rsync1.lc`
`cat /opt/agarik/rapport2_rsync`" | sendmail -fbackup@agarik.com backup@agarik.com
fi
exit 0

Ligne de commande rsync et crontab[modifier]

  • Copie qui permet d'avoir un mirroir entre la source et la destination (la source en tant que maitre du mirroir)

rsync -avz --delete-after /home/source user@ip_du_serveur:/dossier/destination/

  • Ici agarik est le nom du user défini dans le fichier secret du serveur rsync, et "pxe1-ins.agarik.com" est le nom défini dans rsyncd.conf

rsync -vrpogtlH --delete /opt/agarik/scripts agarik@10.253.6.13::pxe1-ins.agarik.com rsync -avz --delete-after 3zax rsync://ben@217.174.206.68:443/pxe1-ins.agarik.com (ici on a changé le port par défaut de rsync sur le serveur rsync, maintenant 443 au lieu de 873)

  • Dans une crontab, pour le cas d'un rsync via ssh (donc sans serveur rsync sur la destination), si openssh est mis via les sources et donc pas dans les path de base, il faut le préciser dans la ligne de commande :

0 12 * * * root /opt/applis/rsync-3.0.4-1/bin/rsync -e /opt/applis/openssh-5.1p1-1/bin/ssh -vrpogtl --delete /home/stats root@192.168.203.79:/home/