Linux

CentOS 4.8

rsync(1)


rsync

NOM

rsync − une alternative rapide et flexible à rcp

SYNOPSIS

rsync [OPTION]... SRC [SRC]... [UTIL@]HOTE:DEST

rsync [OPTION]... [UTIL@]HOTE:SRC DEST

rsync [OPTION]... SRC [SRC]... DEST

rsync [OPTION]... [UTIL@]HOTE::SRC [DEST]

rsync [OPTION]... SRC [SRC]... [UTIL@]HOTE::DEST

rsync [OPTION]... rsync://[UTIL@]HOTE[:PORT]/SRC [DEST]

DESCRIPTION

rsync est un programme très similaire à rcp, mais possède bien plus d’options et utilise le protocole de mise à jour à distance rsync afin d’accélérer significativement le transfert de fichiers lorsque le fichier de destination existe déjà .

Le protocole de mise à jour à distance rsync permet à rsync de ne transférer que la différence entre deux jeux de fichiers à travers le lien de réseau, en utilisant un algorithme efficace de recherche de somme de contrôle qui est décrit dans le document technique fournit avec ce paquetage.

Quelques possibilités supplémentaires offertes par rsync :

o

possibilité de copier des liens, périphériques, propriétaires, groupes et permissions

o

des options exclut et exclut-depuis similaires à GNU tar

o

un mode d’exclusion CVS pour ignorer les mêmes fichiers que CVS

o

peut utiliser n’importe quel interpréteur de commandes, y compris rsh et ssh

o

ne nécessite pas de privilèges root

o

redirection des transferts de fichiers pour minimiser les coûts de latence

o

possibilité d’utilisation de serveurs rsync anonymes ou avec authentification (idéal pour le miroitage)

GÃNÃRAL

Il y a six façons différentes d’utiliser rsync. Les voici :

o

pour copier des fichiers locaux. Ceci est le cas lorsque ni le chemin de la source ni le chemin de destination ne contiennent un séparateur «:»

o

pour copier de la machine locale vers une machine distante en utilisant un interpréteur de commandes distant comme moyen de transport (comme rsh ou ssh). Ceci est le cas lorsque le chemin de destination contient un séparateur «:» unique.

o

pour copier d’une machine distante vers la machine locale en utilisant un interpréteur de commandes distant. Ceci est le cas lorsque le chemin de source contient un séparateur «:»

o

pour copier d’un serveur rsync distant vers la machine locale. Ceci est le cas lorsque le chemin de source contient un séparateur «::» ou une URL rsync://

o

pour copier de la machine locale vers un serveur rsync distant. Ceci est le cas lorsque le chemin de destination contient un séparateur «::»

o

pour lister des fichier d’une machine distante. Ceci est effectué lorsque vous omettez de spécifier une destination locale.

Notez que dans tous les cas (excepté celui du listage), au moins un des chemins de source et destination doit être local.

MISE EN PLACE

Consultez le ficher README pour les instructions d’installation.

Une fois installé vous pouvez utiliser rsync vers toute machine à laquelle vous pouvez accéder avec rsh. rsync utilise rsh pour ses communications, sauf si la source et la destination sont toutes les deux locales.

Vous pouvez aussi spécifier une alternative à rsh, soit en utilisant l’option de la ligne de commande -e, ou en utilisant la variable d’environnement RSYNC_RSH.

Une alternative couramment utilisée et offrant un degré de sécurité élevé est ssh.

Notez que rsync doit être installé sur la machine locale ainsi que sur la machine de destination.

UTILISATION

rsync s’utilise de la même façon que rcp. Vous devez spécifier une source et une destination, l’une des deux pouvant être distante.

Le meilleur moyen d’expliquer la syntaxe est peut être avec quelques exemples :

rsync *.c foo:src/

ceci transfère tous les fichiers correspondant au motif *.c du répertoire courant vers le répertoire src sur la machine foo. Si un fichier existe déjà sur le système distant, alors le protocole de mise à jour à distance rsync est utilisé pour mettre à jour le fichier en envoyant uniquement les différences. Consultez la documentation technique pour plus de détails.

rsync -avz foo:src/bar /data/tmp

ceci transfère récursivement tous les fichiers du répertoire src/bar de la machine foo dans le répertoire /data/tmp/bar de la machine locale. Les fichiers sont transférés en mode «archive», ce qui assure la préservation des liens symboliques, périphériques, attributs, permissions, propriétés, etc lors du transfert. De plus les donnés transférées seront compressées.

rsync -avz foo:src/bar/ /data/tmp

une barre oblique à la fin du chemin source modifie ce comportement pour transférer tous les fichiers du répertoire src/bar de la machine foo dans /data/tmp/. Une barre oblique à la fin d’un chemin source signifie «copie le contenu de ce répertoire». Sans la barre oblique à la fin cela signifie «copie le répertoire». Cette différence devient particulièrement importante lors de l’utilisation de l’option --delete.

Vous pouvez aussi utiliser rsync en mode local uniquement, lorsque ni la source ni la destination n’ont de «:» dans leur nom. Dans ce cas rsync fonctionne comme une commande performante de copie.

rsync unhote.mondomaine.com::

ceci liste tous les modules rsync anonymes, disponibles sur l’hôte unhote.mondomaine.com. (Consultez la section suivante pour plus de détails.)

CONNEXION Ã UN SERVEUR RSYNC

Il est possible également d’utiliser rsync sans utiliser rsh ou ssh comme agents de transport. Dans ce cas, vous allez vous connecter à un serveur rsync distant fonctionnant sur le port TCP 873.

Vous pouvez établir la connexion via un proxy web en donnant à la variable d’environnement RSYNC_PROXY une valeur nomdhote:port qui pointe vers votre proxy web. Notez que votre proxy web doit permettre l’utilisation du port 873.

Utiliser rsync comme cela est identique à une utilisation avec rsh ou ssh excepté que :

o

vous utilisez un double double point :: au lieu de l’unique double point pour séparer le nom d’hôte du chemin.

o

le serveur distant peut afficher un message du jour lorsque vous vous connectez.

o

si vous ne spécifiez pas de chemin sur le serveur distant, alors la liste des chemins accessibles sur le serveur sera affichée.

o

si vous ne spécifiez pas de destination locale, alors une liste des fichiers spécifiés sur le serveur distant est affichée.

Certains chemins sur le serveur distant peuvent nécessiter une authentification. Si c’est le cas, un mot de passe vous sera demandé lors de votre connexion. Vous pouvez éviter la demande de mot de passe en fixant la variable d’environnement RSYNC_PASSWORD à la valeur du mot de passe que vous voulez utiliser ou en utilisant l’option --password-file. Ceci peut être utile en cas d’utilisation de rsync dans des scripts.

AVERTISSEMENT : Sur certains systèmes les variables d’environnement sont visibles à tous les utilisateurs. Sur ces systèmes, l’utilisation de --password-file est recommandée.

FAIRE FONCTIONNER UN SERVEUR RSYNC

Un serveur rsync est configuré à l’aide d’un fichier de configuration qui est appelé par défaut /etc/rsyncd.conf. Consultez le manuel rsyncd.conf(5) pour plus d’informations.

EXEMPLES

Voici quelques exemples de l’utilisation que je fais de rsync.

Pour sauvegarder le répertoire personnel de ma femme, qui est constitué de gros fichiers MS Word et de répertoires de courrier électronique, j’utilise un job cron qui exécute

rsync -Cavz . arvidsjaur:backup

chaque nuit à travers un lien PPP vers un répertoire de duplication sur ma machine «arvidsjaur».

Pour synchroniser mon arborescence du code source de samba, j’utilise les cibles de Makefile suivantes :

get:
rsync -avuzb --exclude ´*~´ samba:samba/.

put:
rsync -Cavuzb . samba:samba/

sync: get put

ceci me permet de synchroniser avec un répertoire CVS à l’autre bout du lien. J’effectue ensuite des opérations cvs sur la machine distante, ce qui sauve beaucoup de temps car le protocole cvs distant n’est pas très efficace.

Je miroite un répertoire entre mon «ancien» et «nouveau» site ftp avec la commande

rsync -az -e ssh --delete ~ftp/pub/samba/ nimbus:"~ftp/pub/tridge/samba"

ceci est lancé depuis cron chaque poignée d’heures.

RÃSUMÃ DES OPTIONS

Voici un court résumé des options disponibles dans rsync. Veuillez vous référer à la description détaillée ci dessous pour une description complète.

 -v, --verbose               plus loquace
 -q, --quiet                 moins loquace
 -c, --checksum              effectue toujours la somme de contrôle
 -a, --archive               mode archivage
 -r, --recursive             visite récursive des répertoires
 -R, --relative              utilise des noms de chemins relatifs
 -b, --backup                effectue des sauvegardes (suffixe ~ par défaut)
     --backup-dir            effectue des sauvegardes dans ce répertoire
     --suffix=SUFFIXE        spécifie un suffixe de sauvegarde
 -u, --update                mise à  jour uniquement (n’écrase pas les fichiers plus récents)
 -l, --links                 copie les liens symboliques comme liens symboliques
 -L, --copy-links            copie les fichiers référencés par les liens symboliques
     --copy-unsafe-links     copie les liens extérieurs à  l’arborescence de la source
     --safe-links            ignore les liens extérieurs à  l’arborescence de la destination
 -H, --hard-links            préserve les liens matériels
 -p, --perms                 préserve les permissions
 -o, --owner                 préserve le propriétaire (root uniquement)
 -g, --group                 préserve le groupe
 -D, --devices               préserve les périphériques (root uniquement)
 -t, --times                 préserve les dates
 -S, --sparse                traite les fichiers à trous efficacement
 -n, --dry-run               montre ce qui aurait été transféré
 -W, --whole-file            copie les fichiers entiers, pas de contrôle incrémental
 -x, --one-file-system       ne traverse pas les frontières du système de fichiers
 -B, --block-size=TAILLE     taille de bloc de la somme de contrôle (700 par défaut)
 -e, --rsh=COMMANDE          spécifie un remplacement de rsh
     --rsync-path=CHEMIN     spécifie le chemin de l’exécutable rsync sur la machine distante
 -C, --cvs-exclude           ignore automatiquement des fichiers, comme le ferait CVS
     --existing              met à  jour uniquement les fichiers qui existent déjÃ
     --delete                efface les fichiers qui n’existent pas du coté expédition
     --delete-excluded       efface également les fichiers exclus coté réception
     --delete-after          efface après transfert, pas avant
     --ignore-errors         efface même si il y a eu des erreurs IO
     --max-delete=NUM        n’efface pas plus de NUM fichiers
     --partial               conserve les fichiers partiellement transférés
     --force                 force la suppression de répertoires même s’ils ne sont pas vides
     --numeric-ids           ne remplace pas les numéros uid/gid par des noms d’utilisateur/groupe
     --timeout=DURÃE         fixe la durée d’attente IO en secondes
 -I, --ignore-times          n’exclut pas les fichiers qui ont une correspondance de taille et de date
     --size-only             utilise uniquement la taille du fichier pour déterminer si un fichier doit être transféré
     --modify-window=NUM     fenêtre temporelle (en secondes) pour la correspondance des fichiers (défaut=0)
 -T  --temp-dir=REP          crée des fichiers temporaires dans le répertoire REP
     --compare-dest=REP      compare également les fichiers de destination relativement à REP
 -P                          équivalent à --partial --progress
 -z, --compress              compresse les données
     --exclude=MOTIF         exclut les fichiers correspondant au MOTIF
     --exclude-from=FICHIER  exclut les motifs listés dans FICHIER
     --include=MOTIF         n’exclut pas les fichiers correspondant au MOTIF
     --include-from=FICHIER  n’exclut pas les motifs listés dans FICHIER
     --version               affiche le numéro de version
     --daemon                exécute rsync en tant que démon
     --no-detach             ne se détache pas du parent
     --address=ADDRESSE      se lie à  l’adresse spécifiée
     --config=FICHIER        spécifie un autre fichier rsyncd.conf
     --port=PORT             spécifie un autre numéro de port rsyncd
     --blocking-io           utilise des IO bloquantes pour le shell distant
     --stats                 donne quelques statistiques de transfert de fichiers
     --progress              montre l’avancement pendant le transfert
     --log-format=FORMAT     enregistre les transfert de fichiers en utilisant le format spécifié
     --password-file=FICHIER extrait les mot de passe de FICHIER
     --bwlimit=KBPS          limite la bande passante I/O, KOctets par seconde
     --read-batch=FICHIER    lit le fichier de traitement par lots
     --write-batch           écrit un fichier de traitement par lots
 -h, --help                  montre cet écran d’aide

OPTIONS

rsync utilise le paquetage «options longues» de GNU. De nombreuses options de la ligne de commande ont deux variantes, une courte et une longue. Celles ci sont exposées ci dessous, séparées par une virgule. Certaines options n’existent que dans la variante longue. Le «=» pour les options qui prennent un paramètre est optionnel ; des blancs peuvent être utilisés à la place.

-h, --help

Affiche une page d’aide décrivant succinctement les options disponibles dans rsync

--version

Affiche le numéro de version de rsync et quitte

-v, --verbose

Cette option augmente la quantité d’information que vous obtenez lors du transfert. Par défaut, rsync travaille silencieusement. Avec un -v, rsync vous indique quels sont les fichiers actuellement transmis et affiche un bref résumé à la fin. Avec deux drapeaux -v, rsync vous informe des fichiers ignorés et affiche un résumé avec légèrement plus d’informations à la fin. Plus de deux drapeaux -v ne devraient être utilisés que pour déboguer rsync.

-q, --quiet

Cette option diminue la quantité d’informations affichée lors du transfert, les messages du serveur distant notamment sont supprimés. Cette option est utile lorsque vous appelez rsync à partir de cron.

-I, --ignore-times

Normalement rsync ignore tous les fichiers qui ont la même taille et ont une horodate identique. Cette option arrête ce comportement.

--size-only

Normalement rsync ignore tous les fichiers qui ont la même taille et une horodate identique. Avec l’option --size-only, les fichiers seront ignorés si ils ont la même taille, indépendamment de l’horodate. Ceci est utile lorsqu’on commence à se servir de rsync après avoir utilisé un autre outil de miroitage qui peut ne pas préserver les horodates exactement.

--modify-window

Lors de la comparaison de deux horodates, rsync considère les horodate égales si elles sont dans une fenêtre temporelle modify_window. Celle-ci est est normalement nulle, mais vous pouvez trouver cela utile de la fixer à une valeur plus grande dans certaines situations. En particulier cette option est utile lors de transferts de/vers des systèmes de fichiers FAT qui ne peuvent pas représenter les dates avec une résolution d’une seconde.

-c, --checksum

Ceci force l’expéditeur à faire une somme de contrôle 128-bit MD4 de tous les fichiers avant le transfert. La somme de contrôle est ensuite explicitement vérifiée à la réception et tous les fichiers du même nom qui existent déjà et ont la même somme de contrôle et la même taille sur le système de réception sont ignorés. Cette option peut être assez lente.

-a, --archive

Ceci est équivalent à -rlptgoD. C’est un moyen rapide de dire que vous voulez la récursion et tout préserver.

Notez toutefois que -a ne préserve pas les liens matériels, parce que trouver les fichiers multiplement liés est coûteux en ressources. Vous devez spécifier séparément -H.

-r, --recursive

Ceci dit à rsync de copier les répertoires récursivement. Si vous ne spécifiez pas cela, alors rsync ne copiera pas de répertoire du tout.

-R, --relative

Utilise des chemins relatifs. Ceci signifie que les chemins complets spécifiés sur la ligne de commande sont envoyés au serveur plutôt que juste la dernière partie des noms de fichiers. Ceci est particulièrement utile lorsque vous voulez envoyer plusieurs répertoires différents en même temps. Par exemple, si vous avez utilisé la commande

rsync foo/bar/foo.c remote:/tmp/

alors ceci aurait créé un fichier appelé foo.c dans /tmp/ sur la machine distante. Si vous aviez utilisé plutôt

rsync -R foo/bar/foo.c remote:/tmp/

alors un fichier appelé /tmp/foo/bar/foo.c aurait été crée sur la machine distante. Le nom de chemin complet est préservé.

-b, --backup

Avec cette option les fichiers de destination préexistants sont renommés avec une extension ~ lors du transfert de chaque fichier. Vous pouvez contrôler le suffixe de sauvegarde en utilisant l’option --suffix.

--backup-dir=REP

En combinaison avec l’option --backup, ceci dit à rsync de garder toutes les sauvegardes dans le répertoire spécifié. Ceci est très utile pour des sauvegardes incrémentales.

--suffix=SUFFIXE

Cette option permet de modifier le suffixe de sauvegarde utilisé par l’option -b. Par défaut c’est un «~».

-u, --update

Ceci force rsync à ignorer tous les fichiers pour lesquels le fichier de destination existe déjà et avec une date postérieure à celle du fichier de source.

-l, --links

Lorsque des liens symboliques sont rencontrés, ils sont recrées à la destination.

-L, --copy-links

Lorsque des liens symboliques sont rencontrés, le fichier vers lequel ils pointent est copié plutôt que le lien symbolique.

--copy-unsafe-links

Ceci dit à rsync de copier le fichier référencé par les liens symboliques qui pointent en dehors de l’arborescence source. Les liens symboliques absolus sont également traités comme des fichiers ordinaires, ainsi que les liens symboliques dans l’arborescence source elle même lorsque --relative est utilisé.

--safe-links

Ceci dit à rsync d’ignorer tous les liens symboliques qui pointent vers l’extérieur de l’arborescence de destination. Tous les liens symboliques absolus sont ignorés également. Utiliser cette option en même temps que --relative peut donner des résultats inattendus.

-H, --hard-links

Ceci dit à rsync de recréer les liens matériels sur le système distant à l’identique du système local. Sans cette option, les liens matériels sont traités comme des fichiers réguliers.

Notez que rsync ne peut détecter les liens matériels que si les deux parties du lien sont dans la liste de fichiers envoyés.

Cette option peut être assez lente, ne l’utilisez que si vous en avez vraiment besoin.

-W, --whole-file

Avec cette option, l’algorithme rsync incrémental n’est pas utilisé, au lieu de cela, le fichier entier est envoyé tel quel. Le transfert peut être plus rapide grâce à cette option lorsque la bande passante entre les machine source et cible est plus grande que la bande passante vers le disque (en particulier lorsque le «disque» est en fait un système de fichiers sur réseau NFS). Cette option est utilisée par défaut lorsque la source et la cible sont sur la même machine.

-p, --perms

Cette option entraîne la mise à jour des permissions distantes pour qu’elles soient identiques aux permissions locales.

-o, --owner

Cette option dit à rsync de mettre le propriétaire du fichier de destination identique à celui du fichier source. Sur la plupart des systèmes, uniquement le super-utilisateur peut fixer le propriétaire des fichiers.

-g, --group

Cette option dit à rsync de mettre le groupe du fichier de destination identique à celui du fichier source. Si le programme réceptionniste n’est pas exécuté en tant que super-utilisateur, uniquement les groupes dont le réceptionniste est un membre seront préservés (par nom de groupe, pas par numéro id de groupe).

-D, --devices

Cette option entraîne le transfert d’informations sur les périphériques caractères et blocs vers le système distant pour recréer ces périphériques. Cette option n’est disponible que pour le super-utilisateur.

-t, --times

Ceci dit à rsync de transférer les dates de modifications avec les fichiers et de les mettre à jour sur le système distant. Notez que si cette option n’est pas utilisée, l’optimisation qui consiste à exclure les fichiers qui n’ont pas été modifiés ne peut pas être efficace ; en d’autres termes, un -t ou -a absent va faire que le prochain transfert se ferra comme s’il utilisait -I, et tous les fichiers vont avoir leur somme de contrôle comparée et affichée dans les fichiers de log même si ils n’ont pas été modifiées.

-n, --dry-run

Ceci dit à rsync de ne faire aucun transfert, mais de juste rapporter les actions qu’il aurait faites.

-S, --sparse

Essaye de traiter les fichiers à trous efficacement, de sorte qu’ils prennent moins de place sur la destination. [NDT : sparse = clairsemé]

NOTE : N’utilisez pas cette option lorsque la destination est un système de fichiers «tmpfs» Solaris. Il semble qu’il ne traite pas les recherches sur des régions de zéros (seeks over null regions) et cela entraîne des corruptions de fichiers.

-x, --one-file-system

Ceci dit à rsync de ne pas traverser les limites du système de fichiers lors d’un parcours récursif. Ceci est utile pour transférer le contenu d’un système de fichiers exclusivement.

--existing

Ceci dit à rsync de ne créer aucun nouveau fichier - uniquement mettre à jour les fichiers qui existent déjà sur la destination.

--max-delete=NUM

Ceci dit à rsync de ne pas effacer plus de NUM fichiers ou répertoires. Ceci est utile lorsque l’on miroite de très grandes arborescences pour prévenir des désastres.

--delete

Ceci dit à rsync d’effacer tous les fichiers côté réception qui ne sont pas du côté envoi. Les fichiers qui sont exclus du transfert ne seront pas effacés sauf si vous utilisez --delete-excluded.

Cette option n’a pas d’effet si le parcours récursif des répertoires n’est pas sélectionné.

Cette option peut être dangereuse si elle n’est pas utilisée correctement ! C’est une très bonne idée d’exécuter rsync avec l’option -n pour voir quels seront les fichiers effacés et s’assurer qu’aucun fichier important n’est listé.

Si le côté envoi détecte des erreurs d’entrée sortie, alors l’effacement des fichiers côté destination est automatiquement empêché. Ceci prévient des échecs temporaires de système de fichiers (comme les erreurs NFS) du côté envoi causant une destruction massive de fichiers côté destination. Vous pouvez passer outre ceci avec l’option --ignore-errors.

--delete-excluded

En plus d’effacer les fichiers côté réception qui ne sont pas côté envoi, ceci dit à rsync d’effacer également tous les fichiers côté réception qui sont exclus (voir --exclude).

--delete-after

Par défaut, rsync efface les fichiers avant le transfert afin d’assurer qu’il y a assez de place sur le système de fichiers réception. Si vous voulez effacer après le transfert, utilisez l’option --delete-after.

--ignore-errors

Dit à --delete de continuer et d’effacer les fichiers même lorsqu’il y a des erreurs d’entrée-sortie.

--force

Cette option dit à rsync d’effacer les répertoires même s’ils ne sont pas vides. Ceci s’applique à l’option --delete ainsi qu’aux cas ou rsync essaye de copier un fichier normal mais la destination contient un répertoire du même nom.

Depuis l’ajout de cette option, les effaçages ont été réordonnés pour être faits «le plus profond en premier» (depth-first), de sorte que ceci n’est pratiquement plus nécessaire, sauf dans des cas très obscurs.

-B , --block-size=BLOCKSIZE

Ceci contrôle la taille de bloc utilisée dans l’algorithme rsync. Reportez vous à la documentation technique pour plus de détails.

-e, --rsh=COMMAND

Cette option vous permet de choisir un interpréteur de commandes distantes alternatif pour la communication entre les copies locales et distantes de rsync. Par défaut, rsync va utiliser rsh, mais vous apprécierez l’utilisation de ssh à la place, à cause de sa sécurité.

Vous pouvez aussi choisir le programme interpréteur de commandes distantes en utilisant la variable d’environnement RSYNC_RSH.

Regardez également l’option --blocking-io qui est affectée par cette option -e.

--rsync-path=PATH

Utilisez ceci pour spécifier le chemin vers de la copie de rsync sur la machine distante. Utile si ce chemin n’est pas dans votre path. Notez que ceci est le chemin complet de l’exécutable, et pas juste le répertoire dans lequel réside l’exécutable.

--exclude=PATTERN

Cette option vous permet d’exclure sélectivement certains fichiers de la liste de fichiers à transférer. Ceci est le plus utile en combinaison avec des transferts récursifs.

Vous pouvez utiliser autant d’options --exclude sur la ligne de commande que vous le désirez pour construire la liste de fichiers à exclure.

Reportez vous à la section sur les motifs d’exclusion pour des informations sur la syntaxe de cette option.

--exclude-from=FICHIER

Cette option est similaire à l’option --exclude, mais ajoute les motifs d’exclusion listés dans le fichier FICHIER à la liste d’exclusion. Les lignes vides dans FICHIER ou les lignes commençant par «;» ou par «#» sont ignorées.

--include=MOTIF

Cette option dit à rsync de ne pas exclure le motif de fichiers spécifié. Ceci est utile car ça permet de construire des règles d’exclusion/inclusion plutôt complexes.

Reportez vous à la section sur les motifs d’exclusion pour des informations sur la syntaxe de cette option.

--include-from=FICHIER

Ceci spécifie une liste de motifs d’inclusion à lire d’un fichier.

-C, --cvs-exclude

Ceci est un raccourci utile pour exclure une grande quantité de fichiers que vous n’avez souvent pas envie de transférer entre deux systèmes. Il utilise l’algorithme que CVS utilise pour déterminer si un fichier doit être ignoré.

La liste d’exclusion est initialisée à :

RCS SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS .make.state .nse_depinfo *~ #* .#* ,* *.old *.bak *.BAK *.orig *.rej .del-* *.a *.o *.obj *.so *.Z *.elc *.ln core

ensuite les fichiers listés dans $HOME/.cvsignore sont ajoutés à la liste ainsi que tous les fichiers listés (séparés par des blancs) dans la variable d’environnement CVSIGNORE.

Finalement, tous les fichiers qui sont dans le même répertoire qu’un .cvsignore et qui correspondent à l’un des motifs listé dans celui-ci sont ignorés. Consultez le manuel cvs(1) pour plus d’informations.

--csum-length=LENGTH

Par défaut, la somme de contrôle primaire utilisée dans rsync est une somme MD4 16 octets forte (a very strong 16 byte MD4 checksum). Dans la plupart des cas, vous trouverez qu’une version tronquée de cette somme de contrôle est assez efficace, et ceci va décroître la taille des données de la somme de contrôle envoyées à travers le lien, rendant les choses plus rapides.

Vous pouvez choisir le nombre d’octets composant la somme de contrôle tronquée en utilisant l’option --csum-length. Toute valeur inférieure ou égale à 16 est valide.

Notez que si vous utilisez cette option, vous risquez de finir avec un fichier cible incorrect. Le risque avec une valeur de 16 est microscopique et peut être ignoré (l’univers va probablement s’arrêter avant un échec) mais avec des valeurs plus petites le risque augmente.

La version actuelle de rsync utilise en fait un algorithme adaptatif pour la longueur de la somme de contrôle par défaut, utilisant une somme de 16 octets pour déterminer si un deuxième passage avec une somme de contrôle plus longue est nécessaire. N’utilisez cette option que si vous avez lu le code source et savez ce que vous faites.

-T, --temp-dir=REP

Cette option dit à rsync d’utiliser REP comme répertoire scratch pour la création de copies temporaires des fichiers transférés sur le coté réception. Le comportement par défaut est de créer les fichiers temporaires dans le répertoire de réception.

--compare-dest=REP

Cette option ordonne à rsync d’utiliser REP sur la machine de destination comme un répertoire supplémentaire avec lequel il faut comparer les fichiers de destination. Ceci est utile pour des transferts vers un nouveau répertoire en laissant l’ancien intact, procédant à un remplacement-éclair de l’ancien par le nouveau une fois le transfert terminé. (par exemple en renommant les répertoires, et en supprimant finalement l’ancien répertoire, même si cela nécessite de faire le transfert avec l’option -I afin d’éviter d’ignorer les fichiers qui n’ont pas changés) [NDT : cela sert pour des répertoires contenant des fichiers interdépendants ; une synchronisation traditionnelle entre la source et la cible rendrait l’arborescence cible invalide pendant toute la durée des transferts]. Cette option augmente l’utilité de --partial parce que les fichiers transférés partiellement vont rester dans la nouvelle destination temporaire jusqu’à ce qu’ils ont une chance d’être complétés. Si REP est un chemin relatif, il est relatif au répertoire de destination.

-z, --compress

Avec cette option, rsync compresse toutes les données des fichiers qu’il envoie à la machine de destination. Cette option est utile avec des connexions réseau lentes. La méthode de compression utilisée est la même que celle utilisée par gzip.

Notez que cette option permet d’obtenir des taux de compression meilleurs que ce qui peut être obtenu avec des interpréteur de commandes distantes qui compressent, ou un transport qui compresse, car cela prend en compte l’information implicite envoyée pour les blocs de données qui correspondent entre eux.

--numeric-ids

Avec cette option, rsync va transférer le numéro identificateur de groupe et d’utilisateur plutôt que d’utiliser les noms de groupe et d’utilisateur en les mappant des deux cotés.

Par défaut rsync va utiliser le nom d’utilisateur et de groupe pour déterminer quel propriété donner aux fichiers. Le numéro d’utilisateur spécial 0 et le numéro de groupe spécial 0 ne sont jamais mappés sur les noms d’utilisateurs/groupes même si l’option --numeric-ids n’est pas spécifiée.

Si le système source est un démon utilisant chroot, alors si un nom d’utilisateur ou de groupe n’existe pas sur le système de destination, alors le numéro d’identification du système source est utilisé à la place.

--timeout=TIMEOUT

Cette option vous permet de fixer le temps d’attente avant échec d’entrée sortie en secondes. Si aucune donnée n’est transférée pendant la durée spécifiée alors rsync va quitter. Vaut 0 par défaut, ce qui signifie pas de durée de fin d’attente.

--daemon

Ceci dit à rsync de fonctionner en tant que démon. Celui-ci peut être accédé en utilisant la syntaxe host::module ou rsync://host/module.

Si l’entrée standard est un socket alors rsync va supposer qu’il est lancé par inetd, sinon il va se détacher du terminal courant et va devenir un démon tournant en arrière plan. Le démon va lire le fichier de configuration (/etc/rsyncd.conf) à chaque connexion faite par un client et répondre aux requêtes en conséquence. Consultez la page de manuel rsyncd.conf(5) pour plus de détails.

--no-detach

Lorsque rsync fonctionne en tant que démon, cette option lui demande de ne pas se détacher lui-même pour devenir un processus fonctionnant en arrière-plan. Cette option est nécessaire lorsque rsync est exécuté en tant que service Cygwin, et peut également être nécessaire lorsque rsync est supervisé par un programme comme daemontools ou le Contrôleur de Ressources Système de AIX. --no-detach est également recommandé lorsque rsync est exécuté dans un débogueur. Cette option n’a pas d’effet si rsync est exécuté depuis inetd ou sshd.

--address

Par défaut rsync va s’attacher à l’adresse joker (wildcard address) lorsque exécutée en tant que démon avec l’option --daemon ou lors d’une connexion à un serveur rsync. L’option --address vous permet de spécifier une adresse IP (ou un nom d’hôte) spécifique à laquelle se connecter. Ceci permet l’accueil d’hôtes virtuels (virtual hosting) possible en conjonction avec l’option --config.

--config=FICHIER

Ceci spécifie un fichier de configuration alternatif au lieu de celui par défaut /etc/rsyncd.conf. Ceci n’a de sens que si l’option --daemon est spécifiée.

--port=PORT

Ceci spécifie un numéro de port TCP alternatif à utiliser au lieu du port par défaut 873.

--blocking-io

Ceci dit à rsync d’utiliser des entrées-sorties bloquantes lorsqu’il démarre un interpréteur de commandes distantes pour le transport. Si -e ou --rsh ne sont pas spécifiés ou sont fixés à la valeur par défaut «rsh», cette option est utilisée par défaut, sinon des entrées-sorties non bloquantes sont utilisées. Vous pouvez avoir besoin de l’option --blocking-io pour des interpréteurs de commandes distantes qui ne peuvent pas traiter les entrées sorties non bloquantes. ssh préfère les entrées-sorties bloquantes.

--log-format=FORMAT

Ceci vous permet de spécifier exactement ce que le client rsync enregistre sur la sortie standard pour chaque fichiers [NDT : to log = enregistrer]. Le format d’enregistrement est spécifié en utilisant les mêmes conventions de format que pour l’option de format d’enregistrement dans rsyncd.conf.

--stats

Ceci dit à rsync d’afficher un jeu de statistiques verbeux sur le transfert de fichiers, ce qui vous permet quantifier l’efficacité de l’algorithme rsync pour vos données.

--partial

Par défaut, rsync va effacer tous les fichiers transférés partiellement si le transfert est interrompu. Dans certaines circonstances il est préférable de conserver les fichiers partiellement transférés. L’option --partial dit à rsync de garder le ficher incomplet ce qui devrait rendre les transfert ultérieurs de la fin du fichier plus rapides.

--progress

Cette option dit à rsync d’afficher des information montrant la progression des transferts. Ceci donne à un utilisateur qui s’ennuie quelque chose à regarder.

Cette option est normalement combinée avec -v. Utiliser cette option sans l’option -v va produire des résultats bizarres sur votre affichage.

-P

L’option -P est équivalente à --partial --progress. Je me suis rendu compte que j’utilisais cette combinaison d’options souvent et j’ai donc crée une option pour rendre cela plus facile.

--password-file

Cette option vous permet de fournir un mot de passe dans un fichier pour accéder à un serveur rsync distant. Notez que cette option est utile uniquement pour accéder à un serveur rsync en utilisant le transport interne, pas lors de l’utilisation d’un interpréteur de commandes distant comme transport. Le fichier ne doit pas être lisible par tout le monde. il devrait contenir juste le mot de passe sur une ligne unique.

--bwlimit=KBPS

Cette option vous permet de spécifier un taux de transfert maximum en kilo-octets par secondes. Cette option est la plus efficace lorsqu’utilisée avec de gros fichiers (plusieurs mega-octets et plus). Ãtant donnée la nature des transferts rsync, des blocs de données sont envoyés, alors si rsync détermine que le transfert a été trop rapide, il va attendre avant d’envoyer le bloc de données suivant. Le résultat est un taux de transfert moyen égal à la limite spécifiée. Une valeur de zéro signifie pas de limitation.

--read-batch

Exécute une liste de commandes [NDT : batch] de modifications générée précédemment.

--write-batch

Génère un jeu de fichiers qui peuvent être transférés lors d’une mise à jour à l’aide d’une liste de commandes.

MOTIFS D’EXCLUSION

Les motifs d’exclusion et d’inclusion spécifiés à rsync permettent une sélection flexible des fichiers à transférer et à ignorer.

rsync construit une liste ordonnée d’options d’inclusion/exclusion spécifiées sur la ligne de commandes. Lorsque un nom de fichier est rencontré, rsync vérifie ce nom pour chaque motif d’exclusion/inclusion. Le premier motif qui correspond est actif. Si c’est un motif d’exclusion, le fichier est ignoré. Si c’est un motif d’inclusion, le fichier n’est pas ignoré. Si aucun motif d’inclusion/exclusion qui correspond n’est trouvé, le fichier n’est pas ignoré.

Notez que lorsque utilisé avec -r (qui est impliqué par -a), chaque sous-composant de chaque chemin est visité de haut en bas, ainsi les motifs d’inclusion/exclusion sont appliqués récursivement à chaque sous composants.

Notez aussi que les options --include et --exclude prennent un motif chacune. Pour ajouter plusieurs motifs, utilisez les options --include-from et --exclude-from ou plusieurs options --include et --exclude.

Les motifs peuvent prendre plusieurs formes. Les règles sont :

o

si le motif commence par un /, il est vérifié pour correspondance avec le début du nom de fichier, sinon il est vérifié avec la fin du nom de fichier. Ainsi «/foo» correspond avec des fichiers appelés «foo» à la base de l’arborescence. D’autre part «foo» correspond avec tous les fichiers appelés «foo» n’importe où dans l’arborescence parce que l’algorithme est appliqué récursivement de haut en bas ; il se comporte comme si chaque composante de chemin était à son tour la fin du nom de fichier.

o

si le motif finit avec un /, il va correspondre à un répertoire uniquement, pas un fichier, ni un lien ou un périphérique.

o

si le motif contient un caractère joker (wildcard character) parmi les caractères *?[ alors la correspondance d’expression est appliquée en utilisant les règles de correspondance d’un interpréteur de commandes. Sinon une simple correspondance de chaîne de caractères est utilisée.

o

si le motif contient un double astérisque «**» alors toutes les correspondances des jokers dans le motifs vont inclure les barres obliques, sinon ils vont s’arrêter aux barres obliques.

o

si le motif contient un / (à l’exclusion d’un / final) alors il doit correspondre au nom de fichier complet, avec les répertoires précédant le nom inclus. Si le motif ne contient pas de / alors il doit correspondre uniquement à la dernière composante du nom de fichier. Encore une fois, souvenez-vous que l’algorithme est appliqué récursivement, ainsi «nom complet» peut en fait être une portion quelconque d’un chemin.

o

si le motif commence avec un «+ » (un plus suivi d’un espace), il est toujours considéré comme étant un motif d’inclusion, même s’il est spécifié comme partie d’une option d’exclusion. La partie «+» est enlevée avant le test de correspondance.

o

si le motif commence avec un «- » (un moins suivi d’un espace), il est toujours considéré comme étant un motif d’exclusion, même s’il est spécifié comme partie d’une option d’inclusion. La partie «- » est enlevée avant le test de correspondance.

o

si le motif est un point d’exclamation !, alors la liste d’inclusion/exclusion courante est remise à zéro, tous les motifs définis précédemment sont enlevés.

Les règles +/- sont le plus utile dans les listes d’exclusion, elles vous permettent d’avoir une liste d’exclusion qui contient des options d’exclusions ainsi que des options d’inclusion.

Si vous terminez une liste d’exclusion avec --exclude ´*´, notez que comme l’algorithme est appliqué récursivement, que sauf si vous incluez explicitement les répertoires parents des fichiers que vous voulez inclure, alors l’algorithme va s’arrêter aux répertoires parents et ne verra jamais les fichiers en-dessous d’eux. Pour inclure tous les répertoires, utilisez --include ´*/´ avant le --exclude ´*´.

Voici quelques exemples exclude/include :

o

--exclude "*.o" exclut tous les fichiers correspondant à *.o

o

--exclude "/foo" exclut un fichier du répertoire de base nommé foo

o

--exclude "foo/" exclut tous les répertoires nommés foo

o

--exclude "/foo/*/bar" exclut tous les fichiers nommés bar dans tous les répertoires situés deux niveaux en dessous du répertoire nommé foo.

o

--exclude "/foo/**/bar" exclut tous les fichiers nommés bar dans tous les répertoires situés deux niveaux ou plus en dessous du répertoire nommé foo.

o

--include "*/" --include "*.c" --exclude "*" inclut tous les répertoires et fichiers sources C

o

--include "foo/" --include "foo/bar.c" --exclude "*" inclut uniquement foo/bar.c (le répertoire foo/ doit être inclus explicitement sinon il est exclu par le "*")

MODE TRAITEMENT PAR LOTS

Note : Le mode traitement par lots devrait être considéré comme expérimental dans cette version de rsync. L’interface ou le comportement peut changer avant stabilisation.

L’appel suivant génère 4 fichiers qui encapsulent l’information nécessaire pour synchroniser le contenu de rep_cible avec les mises à jour trouvées dans rep_src

$ rsync --write-batch [autres options rsync ici] \
/quelquepart/rep_src /quelquepart/rep_cible

Les fichiers générés sont étiquetés avec une horodate commune :

o

rsync_argvs.<horodate> arguments de la ligne de commandes

o

rsync_flist.<horodate> méta-données sur les fichiers, interne à rsync

o

rsync_csums.<horodate> somme de contrôles rsync

o

rsync_delta.<horodate> blocs de données pour mises à jours et modifications de fichiers

Consultez http://www.ils.unc.edu/i2dsi/unc_rsync+.html pour des articles et rapports techniques.

LIENS SYMBOLIQUES

Trois comportements de base sont possibles lorsque rsync rencontre un lien symbolique dans le répertoire source.

Par défaut, les liens symboliques ne sont pas transférés. Un message «skipping non-regular file» (fichier non-ordinaire ignoré) est émis pour tous les liens symboliques existants.

Si --links est spécifié, alors les liens symboliques sont recrées avec la même cible sur la destination. Notez que --archive implique --links.

Si --copy-links est spécifié, alors les liens symboliques sont «regroupés» [NDT : collapsed] en copiant le fichier sur lequel ils pointent, plutôt que le lien lui-même.

De plus rsync distingue des liens symboliques «sûrs» et «non sûrs». Un exemple où ceci peut être utilisé est un site web miroir qui veut s’assurer qu’un module rsync copié ne contient pas de liens symboliques vers /etc/passwd dans la section publique du site. L’utilisation de --copy-unsafe-links va copier tous les fichiers pointés par des liens sur la destination. L’utilisation de --safe-links va empêcher les liens non sûrs d’être copiés.

DIAGNOSTICS

rsync produit occasionnellement des messages d’erreur qui peuvent paraître un peu cryptiques. Celui qui semble causer le plus de confusion est «protocol version mismatch - is your shell clean?».

Ce message est en général causé par vos scripts de démarrage ou shell distant produisant des données parasites sur le flux utilisé par rsync pour son transport. Le moyen de diagnostiquer ce problème est d’exécuter votre shell distant comme ceci :

rsh remotehost /bin/true > out.dat

ensuite examinez out.dat. Si tout fonctionne correctement, alors out.dat devrait être un fichier de taille zéro. Si vous obtenez de rsync l’erreur ci-dessus, alors vous allez probablement vous rendre compte que out.dat contient un peu de texte ou des données. Vérifiez le contenu et essayez de trouver ce qui le produit. La cause la plus courante est un script de démarrage du shell (comme .cshrc ou .profile) mal configuré contenant des instructions de sortie pour des logins non-interactifs.

Si vous avez des difficultés pour déboguer les motifs d’inclusion et d’exclusion, alors essayez de spécifier l’option -vv. à ce niveau de verbosité, rsync va montrer pourquoi chaque fichier individuel est inclus ou exclus.

VALEURS DE RETOUR

RERR_SYNTAX 1

Erreur de syntaxe ou d’utilisation

RERR_PROTOCOL 2

Incompatibilité de protocole

RERR_FILESELECT 3

Erreurs lors de la sélection des fichiers d’entrée sortie et répertoires

RERR_UNSUPPORTED 4

Action demandée non supportée : une tentative de manipulation de fichiers 64-bits sur une plate-forme qui ne les supporte pas a été faite ; ou une option qui est supportée par le client mais pas par le serveur a été spécifiée.

RERR_SOCKETIO 10

Erreur dans le socket d’entrée sortie

RERR_FILEIO 11

Erreur d’entrée sortie fichier

RERR_STREAMIO 12

Erreur dans flux de donnée du protocole rsync

RERR_MESSAGEIO 13

Erreur avec les diagnostics du programme

RERR_IPC 14

Erreur dans le code IPC

RERR_SIGNAL 20

SIGUSR1 ou SIGINT reçu

RERR_WAITCHILD 21

Une erreur retournée par waitpid()

RERR_MALLOC 22

Erreur lors de l’allocation des tampons de mémoire de coeur

RERR_TIMEOUT 30

Temps d’attente écoulé dans l’envoi/réception de données

VARIABLES D’ENVIRONNEMENT

CVSIGNORE

La variable d’environnement CVSIGNORE permet d’ajouter des motifs d’exclusion à ceux trouvés dans les fichiers .cvsignore. Voir l’option --cvs-exclude pour plus de détails.

RSYNC_RSH

La variable d’environnement RSYNC_RSH vous permet de passer outre le shell utilisé par défaut comme transport pour rsync. Ceci peut être utilisé à la place de l’option -e.

RSYNC_PROXY

La variable d’environnement RSYNC_PROXY vous permet de rediriger votre client rsync pour utiliser un proxy web lors de la connexion à un démon rsync. Vous devez fixer RSYNC_PROXY à une paire hostname:port.

RSYNC_PASSWORD

Fixer RSYNC_PASSWORD au mot de passe nécessaire vous permet d’exécuter des connexions rsync authentifiées à un démon rsync sans intervention de l’utilisateur. Notez que cela ne fournit pas de mot de passe à un shell de transport comme ssh.

USER or LOGNAME

Les variables d’environnements USER et LOGNAME sont utilisées pour déterminer le nom d’utilisateur par défaut envoyé à un serveur rsync.

HOME

La variable d’environnement HOME est utilisée pour trouver le fichier .cvsignore par défaut du l’utilisateur.

FICHIERS

/etc/rsyncd.conf

VOIR AUSSI

rsyncd.conf(5)

BOGUES

les temps sont transférés comme valeurs unix time_t

les permissions de fichiers, périphériques etc. sont transférés comme valeurs numériques natives.

voir aussi les commentaires de l’option --delete

Reportez les bogues s’il vous plaît ! Le système de suivi de bogues est en ligne à http://rsync.samba.org/rsync/

VERSION

Cette page de manuel est à jour pour la version 2.0 de rsync

CRÃDITS

rsync est distribué sous la licence publique GNU. Consultez le fichier COPYING pour plus de détails.

Un site WEB est disponible à http://rsync.samba.org/. Le site contient une FAQ-O-Matique qui peut répondre à certaines questions restées sans réponses à la lecture de ce manuel.

Le site ftp primaire pour rsync est ftp://rsync.samba.org/pub/rsync.

Nous serions ravis d’avoir de vos nouvelles si vous appréciez ce programme.

Ce programme utilise l’excellente bibliothèque de compression zlib écrite par Jean-loup Gailly et Mark Adler.

REMERCIEMENTS

Merci à Richard Brent, Brendan Mackay, Bill Waite, Stephen Rothwell et David Bell pour leurs suggestions très utiles, patches, et tests de rsync. J’ai probablement oublié certaines personnes, mes excuses.

Merci également à : David Dykstra, Jos Backus, Sebastian Krahmer.

AUTEUR

rsync a été écrit par Andrew Tridgell <tridge@samba.org> et Paul Mackerras.

rsync est maintenant maintenu par Martin Pool <mbp@samba.org>.

Des listes de diffusion pour le support et le développement sont disponibles à http://lists.samba.org

Si vous pensez avoir trouvé une faille de sécurité dans rsync, envoyez la directement à Martin Pool et Andrew Tridgell s’il vous plait. Pour d’autres requêtes, utilisez la liste de diffusion.

TRADUCTION

Denis Mertz, 2002.


rsync(1)