Linux |
CentOS 4.8 |
|
rsync(1) |
rsync − une alternative rapide et flexible à rcp |
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] |
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) |
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. |
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. |
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.) |
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. |
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. |
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: put: 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. |
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 |
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. |
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 "*") |
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] \ |
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. |
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. |
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. |
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 |
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. |
/etc/rsyncd.conf |
rsyncd.conf(5) |
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/ |
Cette page de manuel est à jour pour la version 2.0 de rsync |
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. |
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. |
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. |
Denis Mertz, 2002. |
rsync(1) |