\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{jeu. juil. 20 10:10:42 CEST 2017}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={rsync},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Outil de copie de fichier},
CreationDate={D:20170720101042},
ModDate={D:20170720101042},
Keywords={backup;rsync}
}}
\begin{document}
 
\begin{center}
{\Huge rsync }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Outil de copie de fichier}
 
\vspace{10mm}
 
\hspace{1mm}  rsync est un outils de copie de fichier versatile. Il peut copier localement, depuis/vers un autre autre via un shell distant, ou vers/depuis un service rsync distant. Il offre un grand nombre d'options qui contrôle tous les aspects de son fonctionnement, et permet de spécifier de manière très flexible le jeu de fichiers à copier. Il à un algorithme de transfert delta, qui réduit la quantité de données envoyées sur le réseau en envoyant seulement les différences entre les fichiers sources et les fichiers existants dans la destination. rsync est largement utilisé pour les sauvegardes et le mirroring et comme commande de copie améliorée.
\vspace{5mm} \\
 
 
\hspace{1mm}  rsync trouve les fichiers qu'il doit transférer en utilisant un algorithme vérification rapide (par défaut) qui recherche les fichier qui ont changé en taille ou de mtime. Tout changement dans les autres attributs préservés (comme requis par les options) sont fait dans le fichier de destination directement quand la vérification rapide indique que les données du fichiers n'ont pas besoin d'être mis à jours.
\vspace{5mm} \\
 
 
\hspace{1mm}  rsync copies les fichier depuis ou vers un hôte distant, ou localement. Il y a 2 manières différentes pour rsync pour contacter un système distant: utiliser un shell distant (tel que ssh ou rsh), ou contacter un service rsync directement via TCP. le transport par shell distant est utilisé quand le chemin source ou de destination contient un séparateur ":" après la spécification de l'hôte. Contacter un service rsync se fait en spécifiant le séparateur '::' après la spécification de l'hôte, ou quand une url rsync:// est spécifiée.
\vspace{5mm} \\
 
 
\hspace{1mm}  Un cas spéciale, si un argument de source simple est spécifié dans destination, les fichiers sont listés dans un format de sortie similaire à 'ls -l'.
\vspace{5mm} \\
 
 
\hspace{1mm}  Comme attendu, si ni le chemin source ni de destination ne spécifie d'hôte distant, la copie se produit localement.
\vspace{5mm} \\
 
 
\hspace{1mm}  rsync réfère au côté local comme le 'client' et le côté distant comme le 'serveur', à ne pas confondre avec le service rsync, qui est toujours un serveur, mais un serveur qui peut être soit un service ou un processus lancé par un shell distant.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Utilisation }
 
\
 
\hspace{1mm}  Il est possible d'utiliser rsync de la même manière que rcp, à l'exception que rsync n'accepte qu'un seul hôte distant.
\vspace{5mm} \\
 
 
\hspace{1mm} La meilleur manière d'expliquer la syntaxe est avec certains exemples: \\
\hspace{1mm} \textbf{rsync -t *.c foo:src/} \\
\hspace{1mm} Cela transfert tous les fichiers correspondant au motif *.c du répertoire courant vers un répertoire src sur la machine foo. Si un des fichiers existe déjà sur le système distant, le protocole de mise à jours distant de rsync est utilisé pour mettre à jours le fichie en envoyant seulement les données différente. Noter que l'expansion du wildcard sur la ligne de commande en une liste de fichiers est gérée par le shell avant de lancer rsync. \\
\hspace{1mm} \textbf{rsync -avz foo:src/bar /data/tmp} \\
\hspace{1mm} Transfert récursivement tous les fichiers du répertoire src/bar dans la machine foo dans le répetoire local /data/tmp/bar. Les fichiers sont transférés \\
 
\vspace{1cm}{\huge OPTIONS }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -v, --verbose]{Augmente la quantité d'informations données durant le transfert. Peut être spécifié plusieurs fois.}
\item[\hspace{1mm} --info=FLAGS]{Permet de spécifier plus finement les informations à afficher. Utiliser \textbf{--info=help} pour voir les flags disponibles. les flags sont séparés par des ","}
\item[\hspace{1mm} --debug=FLAGS]{Idem mais avec des informations plus verbeuses.}
\item[\hspace{1mm} --msgs2stderr]{Envoie sa sortie sur stderr au lieu de stdout. Principalement pour debug.}
\item[\hspace{1mm} -q, --quiet]{Mode silencieux, utile avec cron}
\item[\hspace{1mm} --no-motd]{Affecte les informations qui sont affichés au démarrage du transfert du service. Il supprime le mot du jours et la liste des modules.}
\item[\hspace{1mm} -I, --ignore-times]{Normalement rsync saute les fichiers qui existent déjà avec la même taille et le même mtime. Cette option désactive le mode vérification rapide, forçant tous les fichiers à être mis à jours.}
\item[\hspace{1mm} --size-only]{Modifie l'algorithme de vérification rapide pour trouver les fichiers qui doivent être transférés. Seuls les fichiers avec une taille différente sont mis à jours. Utile pour utiliser rsync avec un système de mirroring qui ne préserve pas les timestamps.}
\item[\hspace{1mm} --modify-window]{En comparant 2 timestamps, rsync traite les timestamps comme étant égaux s'ils diffèrent par moins que la valeur modify-window. C'est par défaut 0. En particulier, en transférant depuis ou vers un système de fichier FAT qui a une précision à 2 secondes, --modify-window=1 est utile.}
\item[\hspace{1mm} -c, --checksum]{Change la manière dont rsync vérifie si les fichiers ont été changés et ont besoin d'être transférés. Sans cette options, rsync utilise la vérification rapide. Ce option compare un checksum 128-bits pour chaque fichier. La génération des checksums signifie que le client et le serveur vont consommer plus de lecture disque, ce qui peut ralentir les choses significativement.}
\item[\hspace{1mm} -a, --archive]{C'est équivalent à \textbf{-rlptgoD}. C'est une manière rapide de dire que vous souhaiter une récursion et préserver tout. La seul exception par rapport à l'équivalence et quand \textbf{--files-from} est spécifié, auquel cas \textbf{-r} n'est pas induit. Noter que -a ne préserve pas les liens hard, utiliser -H.}
\item[\hspace{1mm} --no-OPTION]{Permet de désactiver une option en préfixant le nom de l'option avec \textbf{-no}. Toutes les options ne peut pas être préfixé de cette manière, seules les options qui sont sous-entendues par d'autres options (ex: --no-D, --no-perms) ou ont des valeurs par défaut en fonction des circonstances (ex: --no-whole-file, --no-blocking-io, --no-dirs). Note: l'ordre des options est importante}
\item[\hspace{1mm} -r, --recursive]{Dit à rsync de copier les répertoires récursivement. La récusivité est incrémentale, le transfert commence avant que tous les répertoires aient été scannés. certaines options nécessite un scan complet et désactivent la récursivité incrémentale.}
\item[\hspace{1mm} -R, --relative]{Utilise les chemins relatifs. Le chemin complet spécifié sur la ligne de commande est envoyé au serveur au lieu de simplement envoyer la dernière partie des noms de fichiers.}
\item[\hspace{1mm} --no-implied-dirs]{Affecte le comportement de l'option --relative. Si spécifié, les attributs des répertoires implicites des noms sources ne sont pas inclus dans le transfert. Cela signifie que les éléments de chemins sur la destination ne sont pas changé, et les répertoires créés le sont avec des attributs par défaut.}
\item[\hspace{1mm} -b, --backup]{Avec cette option, des fichiers de destination pré-existant sont renommé quand le fichier est transféré ou supprimé.}
\item[\hspace{1mm} --backup-dir=DIR]{Avec --backup, indique où stocker les backup. Peut être utilisé pour les backups incrémentals.}
\item[\hspace{1mm} --suffix-SUFFIX]{Permet de changer le suffixe backup par défaut pour l'option --backup. Défaut: "\textasciitilde" ou vis si --backup-dir a été spécifié}
\item[\hspace{1mm} -u, --update]{Force rsync à ignorer tout fichier existant dans la destination}
\item[\hspace{1mm} --inplace]{Chanqe la méthode de transfert d'un fichier quand les données sont mis à jours. Au lieu de créer une nouvelle copie du fichier et en le déplaçant une fois complété, rsync écrit directement dans le fichier de destination}
\item[\hspace{1mm} --append]{Met à jours un fichier en ajoutant les données à la fin du fichier, ce qui suppose que les données déjà existante dans la destination est identique avec le début du fichier.}
\item[\hspace{1mm} --append-verify]{Similaire à --append, mais les données existant sont inclus dans le checksum de vérification.}
\item[\hspace{1mm} -d, --dirs]{Indique à l'émetteur d'inclure tous les répertoire rencontrés. À la différence de --recursive, le contenu des répertoires ne sont pas copiés sauf si le nom du répertoire est "." ou se termine par "/". --recursive a précédence.}
\item[\hspace{1mm} -l, --links]{Quand les liens sont rencontrés, recréé les liens dans la destination}
\item[\hspace{1mm} -L, --copy-links]{Quand des liens sont rencontrés, l'élément pointé est copié au lieu du lien.}
\item[\hspace{1mm} --copy-unsafe-links]{Copie la référence des liens symboliques en dehors de l'arborescence copiée.}
\item[\hspace{1mm} --safe-links]{Ignore les liens symboliques pointant en dehors de l'arborescence copiée.}
\item[\hspace{1mm} --munge-links]{Modifie tous les liens symbolique reçu pour les rendre inutilisable, mais récupérable, ou réactive les liens stockés dans un état munge. rsync désactive les lients en les préfixant avec la chaîne /rsync-munged/. Celà empêche d'utiliser les liens tant que ce répertoire n'existe pas.}
\item[\hspace{1mm} -k, --copy-dirlinks]{Traite les liens vers un répertoire comme si c'est un vrai répertoire}
\item[\hspace{1mm} -K, --keep-dirlinks]{idem à -k, mais seulement s'il matche un vrai répertoire de l'émetteur.}
\item[\hspace{1mm} -H, --hard-links]{Recherche les liens hard dans la source et les lies ensemble aux fichiers correspondant dans la destination.}
\item[\hspace{1mm} -p, --perms]{Copie les permissions}
\item[\hspace{1mm} -E, --executability]{Préserve la permission 'x' des fichiers réguliers quand --perms n'est pas activé.}
\item[\hspace{1mm} -A, --acls]{Met à jours les ACL. Implique également --perms}
\item[\hspace{1mm} -X, --xattrs]{met à jours les attributs étendus}
\item[\hspace{1mm} --chmod]{Applique un ou plusieurs modes de permission aux fichiers transférés.}
\item[\hspace{1mm} -o, --owner]{Définis le propriétaire du fichier de destination}
\item[\hspace{1mm} -g, --group]{Définis le groupe propriétaire du fichier de destination}
\item[\hspace{1mm} --devices]{Transfert les fichiers caractère et block}
\item[\hspace{1mm} --specials]{transfert les fichiers spéciaux tels que les fichiers sockets et fifo}
\item[\hspace{1mm} -D]{= --devices --spécials}
\item[\hspace{1mm} -t, --times]{Transfert les horodatages de modification des fichiers}
\item[\hspace{1mm} -O, --omit-dir-times]{Omet les répertoire avec --times. Utile avec NFS sur des répertoires partagés}
\item[\hspace{1mm} -J, --omit-link-times]{Omet les liens symboliques en préservant les dates de modifications (--times)}
\item[\hspace{1mm} --super]{Tente les activités root même si le receveur n'est par root: --owner, --groups et --devices.}
\item[\hspace{1mm} --fake-super]{Simule les activités root en sauvant/restaurant les attributs privilégiés via des attributs étendus spéciaux attachés à chaque fichier (si nécessaire). Gère également --acls et --xattrs s'ils sont spécifiés}
\item[\hspace{1mm} -S, --sparse]{Tente de gérer les fichiers sparses efficacement pour qu'ils prennent moins d'espace sur la destination. Est en conflit avec --inplace}
\item[\hspace{1mm} --preallocate]{Indique au reçeveur d'allouer chaque fichier de destination avant d'écrire les données. rsync utilise le support de préallocation du système de fichier via fallocate(2). Avec cette options les gros fichier peuvent ne pas être contigüs.}
\item[\hspace{1mm} -n, --dry-run]{Effectue une simulation qui ne change rien. Utile avec --verbose et/ou --itemize-change}
\item[\hspace{1mm} -W, --whole-file]{Désactive l'algorithme de transfert delta de rsync. Peut être plus rapide si la bande passante entre la source et la destination est supérieure à la bande passante du disque.}
\item[\hspace{1mm} --checksum-choice=STR]{Change l'algorithme de checksum. (auto, md4, md5, none)}
\item[\hspace{1mm} -x, --one-file-system]{Ne traverse pas les systèmes de fichier lors des récursion. Si cette option est répétée, rsync omet tous les répertoires de point de montage qu'il rencontre}
\item[\hspace{1mm} --existing, --ignore-non-existing]{Saute la création de fichiers et répertoires qui n'existent pas dans la destination. Combinée avec --ignore-existing, aucun fichier n'est mis à jours.}
\item[\hspace{1mm} --ignore-existing]{Met à jours les fichiers qui existent déjà dans la destination.}
\item[\hspace{1mm} --remove-source-files]{Indique à rsync de supprimer les fichiers envoyés qui font partie du transfert et ont été dupliqués avec succès}
\item[\hspace{1mm} --delete]{Supprime les fichiers dans le receveur (ceux qui n'ont pas été envoyés), mais uniquement pour les répertoires qui sont synchronisés}
\item[\hspace{1mm} --delete-before]{Demande que la suppression de fichiers dans le receveur soit fait avant que le tranfert commence.}
\item[\hspace{1mm} --delete-during, --del]{Demande que la suppression de fichiers dans le receveur soit fait incrémentalement durant le transfert}
\item[\hspace{1mm} --delete-delay]{Demande que la suppression de fichiers dans le receveur soit calculé durant le transfert, puis supprimé à la fin du transfert}
\item[\hspace{1mm} --delete-after]{Demande que la suppression de fichiers dans le receveur soint fait une fois le transfert complété.}
\item[\hspace{1mm} --delete-excluded]{En plus de supprimer les fichiers dans le receveur qui ne sont pas dans l'émetteur, indique de supprimer également tous fichier dans le receveur qui sont exclus}
\item[\hspace{1mm} --ignore-missing-args]{Quand rsync traite d'abord les fichiers sources demandés explicitement (ex --files-from), si le fichier n'est pas trouvé, ne génère pas d'erreur et ne tente pas de transférer le fichier.}
\item[\hspace{1mm} --delete-missing-args]{Idem, mais chaque argument manquant devient une requête de suppression}
\item[\hspace{1mm} --ignore-errors]{--delete supprime les fichier quand il y a des erreurs d'entrées/sorties}
\item[\hspace{1mm} --force]{Supprime un répertoire non-vide quand il est remplacé par un non-répertoire.}
\item[\hspace{1mm} --max-delete=NUM]{Indique de ne pas supprimer plus de NUM fichiers/répertoires. Au delà, toutes les suppressions sont ignorées. rsync retourne avec un code d'erreur 25}
\item[\hspace{1mm} --max-size=SIZE]{Évite les transferts de fichiers supérieurs à la taille spécifiée.}
\item[\hspace{1mm} --min-size=SIZE]{Évite les transferts de fichiers inférieurs à la taille spécifiée.}
\item[\hspace{1mm} -B, --block-size=BLOCKSIZE]{Force la taille de block utilisé dans l'algorithme de transfert delta à une taille fixe.}
\item[\hspace{1mm} -e, --rsh=COMMAND]{Permet de choisir un shell distant alternatif à utiliser pour la communication.}
\item[\hspace{1mm} --rsync-path=PROGRAM]{Spécifie le programme à lancer sur la machine distante pour démarrer rsync.}
\item[\hspace{1mm} -M, --remote-option=OPTION]{Utilisé pour limiter certains effets sur le transfert, comme --log-file et --fake-super}
\item[\hspace{1mm} -C, --cvs-exclude]{Raccourci utile pour exclure un grande plage de fichier. la liste d'exclusion est: RCS SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS .make.state .nse\_depinfo *\textasciitilde \#* .\#* ,* \_\$* *\$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core .svn/ .git/ .hg/ .bzr/}
\item[\hspace{1mm} -f, --filter=RULE]{Ajoute une règle d'exclusion de fichier}
\item[\hspace{1mm} -F]{Raccourci pour ajouter 2 --filter, la première fois est un raccourci à --filter='dir-merge /.rsync-filter', qui indique de recherche les fichiers .rsync-filter dans les répertoire et d'utiliser leurs règles.}
\item[\hspace{1mm} --exclude=PATTERN]{Forme simplifiée de l'option --filter}
\item[\hspace{1mm} --exclude-from=FILE]{Cette option est liée à --exclude, mais spécifie un fichie qui contient des motifs d'exclusion.}
\item[\hspace{1mm} --include=PATTERN]{Forme simpifiée de --filter qui créé une règle d'inclusion}
\item[\hspace{1mm} --include-from=FILE]{Liée à --include, mais spécifie un fichier qui contient des motifs d'inclusion}
\item[\hspace{1mm} --files-from=FILE]{Spécifie la liste exacte de fichiers à transférer. Il personnalise également le comportement de rsync:}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} -R, --relative]{Implicite, et préserve les informations de chemin qui sont spécifiés pour chaque éléments dans le fichier.}
\item[\hspace{6mm} -d, --dirs]{Implicite, qui créé les répertoires spécifiés dans la liste dans la destination}
\item[\hspace{6mm} -a, --archive]{n'implique pas --recursive}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{1mm} -O, --fromO]{Les règles/noms de fichiers lus depuis un fichier sont terminés par un caractère null (\textbackslash{}0). Affecte --exclude-from, --include-from, --files-from, et tous fichiers fusionnés spécifiés dans une règle --filter}
\item[\hspace{1mm} -s, --protect-args]{Envoie tous les noms de fichier et les options au rsync distant sans permettre au shell distant de les interpréter.}
\item[\hspace{1mm} -T, --temp-dir=DIR]{Utiliser le répertoire comme répertoire scratch en créant des copies temporaires des fichiers transférés. Le comportement par défaut est de créer chaque fichier temporaire dans le même répertoire que le fichier de destination associé}
\item[\hspace{1mm} -y, fuzzy]{Indique à rsync qu'il doit rechercher un fichier de base pour tout fichier de destination manquant. l'algorithme actuel recherche dans le même répertoire que le fichier de destination un fichier qui a une taille et un mtime identique, ou un fichier de même nom. Si trouvé, rsync utilise le fichier pour accélerer le transfert. Si cette option est répétée, le fuzzy scan également tous les répertoires de destination correspondant qui sont spécifié via --compare-dest, --copy-dest ou --link-dest}
\item[\hspace{1mm} --compare-dest=DIR]{Utilise le répertoire dans la destination comme hiérarchie additionnelle pour comparer les fichiers de destination. Si un fichier est trouvé dans ce répertoire qui est identique au fichier à envoyer, le fichier n'est pas transféré}
\item[\hspace{1mm} --copy-dest=DIR]{Identique à --compare-dest, mais rsync copie également les fichiers inchangés trouvés dans ce répertoire. Peut être spécifié plusieurs fois}
\item[\hspace{1mm} --link-dest=DIR]{identique à --copy-dest, mais les fichiers inchangés sont hardlinked depuis ce répertoire .}
\item[\hspace{1mm} -z, --compress]{Compresse les données envoyée}
\item[\hspace{1mm} --compress-level=NUM]{Niveau de compression}
\item[\hspace{1mm} --skip-compress=LIST]{Liste de suffixe de fichier qui ne sont pas compressés. La liste par défaut est: 7z ace avi bz2 deb gpg gz iso jpeg jpg lz lzma lzo mov mp3 mp4 ogg png rar rpm rzip tbz tgz tlz txz xz z zip}
\item[\hspace{1mm} --numeric-ids]{Transfert les UID/GID au lieu d'utiliser les noms d'utilisateur/groupe.}
\item[\hspace{1mm} --usermap-STRING, --groupmap=string]{Spécifie les utilisateurs et groupe qui doivent être mappés à d'autres valeurs dans le receveur. Le chaîne consiste d'une ou plusieurs paires de FROM:TO.}
\item[\hspace{1mm} --chown=USER:GROUP]{Force tous les fichiers à être possédés par l'utilisateur et groupe spécifiés}
\item[\hspace{1mm} --timeout=TIMEOUT]{Permet de définir un timeout d'E/S maximum, en secondes. Si aucune données n'est transférée durant ce laps de temps, rsync quitte.}
\item[\hspace{1mm} --contimeout]{Délais d'attente pour une connexion avant de quitter}
\item[\hspace{1mm} --address]{Spécifie une adresse IP de connexion}
\item[\hspace{1mm} --port=PORT]{Port TCP pour la connexion. Défaut: 873}
\item[\hspace{1mm} --sockopts]{Fournis des options de socket. voir setsockopt(2)}
\item[\hspace{1mm} --blocking-io]{Utilise les E/S bloquant en lançant un shell distant. Si le shell distant est rsh ou remsh, rsync l'utilise par défaut}
\item[\hspace{1mm} --outbuf=MODE]{Définis le mode de buffering par défaut. Peut être None, Line, ou Block}
\item[\hspace{1mm} -i, --itemize-changes]{Demande une simple liste itemisée de changement qui sont faits à chaque fichier, incluant les changements d'attributs. Identique à --out-format='\%i \%n\%L'.}
\item[\hspace{1mm} --out-format=FORMAT]{Spécifie ce que le client rsync affiche à l'utilisateur sur une base par mise à jours. Défaut: "\%n\%L" si --info ou -v est spécifié.}
\item[\hspace{1mm} --log-file=FILE]{log les opérations dans un fichier}
\item[\hspace{1mm} --log-file-format=FORMAT]{Format des messages loggés Défaut: '\%i \%n\%L'}
\item[\hspace{1mm} --stats]{Affiche un jeu de statistiques durant le tranfert. Cette option est équivalente à --info=stats2 ou --info=stats3.}
\item[\hspace{1mm} -8, -8-bit-output]{laisse les caractères 8-bits non échappé dans la sortie au lieu de les tester pour voir s'ils sont valides dans la locale courante}
\item[\hspace{1mm} -h, --human-readable]{Affiche les nombre au format human-readable}
\item[\hspace{1mm} --partial]{par défaut, rsnyc supprime tout fichier partiellement transféré si le transfert a été interrompu. cette option permet de conserver le fichier partiel pour accélérer les transferts suivants}
\item[\hspace{1mm} --partial-dir=DIR]{Spécifie un répertoire utilisé pour maintenir les données partielles}
\item[\hspace{1mm} --delay-updates]{Place le fichier temporaire de chaque fichier mis à jours dans un répertoire jusqu'à la fin du transfert, puis tous les fichiers sont renommés. Cela rend les mises à jours un peu plus atomiques mais utilise plus de mémoire}
\item[\hspace{1mm} -m, --prune-empty-dirs]{Indique au receveur de gérer les répertoires vide depuis la liste des fichier, incluant les répertoires imbriqués qui ont des enfant non-répertoire. C'est utile pour éviter la création d'un grand nombre de répertoires inutiles}
\item[\hspace{1mm} --progress]{Affiche la progression du transfert}
\item[\hspace{1mm} -P]{Équivalent à --partiel --progress}
\item[\hspace{1mm} --password-file=FILE]{Permet de fournir un mot de passe pour accéder au service rsync via un fichier ou via l'entrée standard avec '-'.}
\item[\hspace{1mm} --list-only]{Liste les fichiers sources au lieu de les transférer}
\item[\hspace{1mm} --bwlimit=RATE]{Limite le taux de transfert}
\item[\hspace{1mm} --write-batch=FILE]{Enregistre un fichier qui peut être appliqué ultérieurement à une autre destination identique avec --read-batch.}
\item[\hspace{1mm} --only-write-batch=FILE]{Similaire à --write-batch, excepté qu'aucune mise à jours n'est faite dans le système de destination en créant le batch}
\item[\hspace{1mm} --read-batch=FILE]{Applique tous les changements stockés dans le fichier précédemment généré par --write-batch}
\item[\hspace{1mm} --protocol=NUM]{Permet de forcer une ancienne version de protocole. Utile avec --write-batch}
\item[\hspace{1mm} --iconv=CONVERT\_SPEC]{Convertis les noms de fichier entre les jeux de caractères. '.' indique à rsync de regarder le jeu de caractère par défaut}
\item[\hspace{1mm} -4, --ipv4, -6, --ipv6]{Socket à utiliser}
\item[\hspace{1mm} --checksum-seed=NUM]{Définis le checksum d'envoie. Ce checksum de 4 octets est inclus dans chaque block et chaque calcul MD4 (MD5 n'utilise pas de seed).}
\end{description}
 
\vspace{1cm}{\huge Options pour le mode service }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} --daemon]{Lance rsync en mode service. Le service devient accessible en utilisant host::module ou rsync://host/module/}
\item[\hspace{1mm} --address]{IP d'écoute du service}
\item[\hspace{1mm} --bwlimit=RATE]{Permet de spécifier le taux de transfert maximum pour les données que le service envoie}
\item[\hspace{1mm} --config=FILE]{Spécifie le fichier de configuration}
\item[\hspace{1mm} -M, --dparam=OVERRIDE]{Définis un paramètre de configuration spécifique au service}
\item[\hspace{1mm} --no-detach]{Ne détache pas le service en tâche de fond}
\item[\hspace{1mm} --port=PORT]{Spécifie le port TCP d'écoute}
\item[\hspace{1mm} --log-file=FILE]{Remplace le paramètre log file dans la configuration}
\item[\hspace{1mm} --log-file-format=FORMAT]{Remplace le paramètre log format dans la configuration}
\item[\hspace{1mm} --sockopts]{Remplace le paramètre socket options dans la configuration}
\item[\hspace{1mm} -v, --verbose]{mode verbeux}
\item[\hspace{1mm} -4, --ipv4, -6, --ipv6]{Spécifie la famille d'adresse d'écoute}
\end{description}
 
\vspace{1cm}{\huge Règles de filtrage }
 
\
 
\hspace{1mm}  Les règles de filtrage permet une sélection flexible des fichiers à transférer et à exclure. Les règles spécifient soit directement des motifs d'inclusion/exclusion pour spécifie une manière d'acquérir plus de motifs (par ex en lisant un fichier)
\vspace{5mm} \\
 
 
\hspace{1mm} Vu que la liste des fichiers/répertoires est construite, rsync vérifie chaque nom à transférer avec la liste, et le premier match est acté. rsync construit une liste ordonnée de règles de filtrage tel que spécifié dans la ligne de commande. Les règles de filtrage ont la syntaxe suivante:
 
{\ttfamily
RULE \texttt{[}PATTERN\_OR\_FILENAME\texttt{]}\\ RULE,MODIFIERS \texttt{[}PATTERN\_OR\_FILENAME\texttt{]}\\
}
\vspace{8mm}
 
\hspace{1mm}  Le motif ou nom de fichier qui suit, si présent, doit venir après soit un simple espace, ou un '\_'. Les préfixes de règles disponibles sont:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} exclude, -]{spécifie un motif d'exclusion}
\item[\hspace{1mm} include, +]{Spécifie un motif d'inclusion}
\item[\hspace{1mm} merge, .]{Spécifie un fichier où liste plus de règles}
\item[\hspace{1mm} dir-merge, :]{Spécifie un fichier par répertoire}
\item[\hspace{1mm} hide, H]{Spécifie un motif pour cacher des fichiers du transfert}
\item[\hspace{1mm} show, S]{Spécifie un motif pour afficher des fichiers}
\item[\hspace{1mm} protect, P]{Spécifie un motif pour protéger les fichiers de la suppression}
\item[\hspace{1mm} risk, R]{Ces fichier ne sont pas protégés}
\item[\hspace{1mm} clear, !]{effaces la liste d'inclusion/exclusion courante, n'a pas d'argument.}
\end{description}
 
\hspace{1mm}  Noter que les options --include/--exclude ne permettent pas tous les préfixes, ils autorisent seulement les motifs d'inclusion/exclusion, et '!' pour effacer la liste. Si un motif ne commence pas avec "- " ou "+ ", la règle est interprétée comme si "+ " (pour une option include), ou "- " (pour une option exclude). Une option --filter doit toujours contenir un nom de règle court ou long au début de la règle.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Règles de motif d'exclusion/inclusion }
 
\
 
\hspace{1mm}  Pour inclure et exclure des fichier, utiliser "+", "-", etc. Les règles spécifient un motif qui est matché avec les noms des fichiers qui doivent être transférés. Ces motifs peuvent prendre plusierus forme:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} -]{Si le motif commence avec un '/', il est attaché à un emplacement particulier dans la hiérarchie des fichiers, sinon il est matché avec la fin d'un nom de chemin. C'est similaire à un '\textasciicircum ' de début dans les expressions régulières. donc /foo matche un nom foo soit à la racine du transfert ou dans le répertoire dans le cas d'un merge-file.}
\item[\hspace{1mm} -]{Si le motif se termine avec un /, il ne matche qu'un répertoire, pas un fichier régulier, ni lien ni périphérique.}
\item[\hspace{1mm} -]{rsync choisi entre faire un simple match et un match wildcard en vérifiant si le motif contient un des caractères wildcard '*', '?', et '['}
\item[\hspace{1mm} -]{un '*' matche tous composant de chemin, mais il s'arrête aux '/'}
\item[\hspace{1mm} -]{addentry articles autoadd autofind autoprod createalpha createbeta createdb createprod findentry fullpowa generator.php genhtml genman genmd gentex html insert man md pdf regen setfor setfor2 sql temp temp-new-pc tex threads ToDo Match tout, incluant les '/'}
\item[\hspace{1mm} -]{? Matche tout caractère excepté '/'}
\item[\hspace{1mm} -]{[ introduit une classe de caractères}
\item[\hspace{1mm} -]{Dans un motif wildcard, un '\textbackslash{}' permet d'échapper un caractère wildcard.}
\item[\hspace{1mm} -]{Si le motif contient un '/' (sans compter le '/' final) ou un '**', il est matché avec le chemin complet. Si le motif ne contient pas de '/' ou '**', il est matché seulement avec le composant final du nom de fichier.}
\item[\hspace{1mm} -]{un 'dir\_name/***' final match le répertoire et tout ce qu'il contient.}
\end{description}
 
\hspace{1mm}  Noter que, en utilisant --recursive, qui est implicite avec -a, tous les sous-répertoires de tous les chemins sont visités de gauche à droite, chaque répertoire ayant une chance d'être exclus avant son contenu. De cette manière les motifs d'inclusion/exclusion sont appliqués récursivement au nom de fichier de chaque nœud dans le système de fichier. Les motifs d'exclusion court-circuitent l'étape de parcours du répertoire.
\vspace{5mm} \\
 
 
\hspace{1mm} Par exemple, pour inclure /foo/bar/baz, les répertoires /foo et /foo/bar ne doivent pas être exclus. Exclure un de ces parent empêche d'examiner son contenu. Le concept d'exclusion est particulièrement important en utilisant un '*' final, par exemple, ceci ne fonctionne pas:
 
{\ttfamily
+ /some/path/this-file-will-not-be-found\\ + /file-is-included\\ -\hspace{2mm}*\\
}
\vspace{8mm}
 
\hspace{1mm} Une solution est de demander à tous les répertoires dans la hiérarchie d'être inclus en utilisant une simple règle "+ */", et utiliser l'option --prune-empty-dirs. Une autre solution est d'ajouter des règles d'inclusion spécifiques pour tous les répertoires parents qui doivent être visités:
 
{\ttfamily
+ /some/\\ + /some/path/\\ + /some/path/this-file-is-found\\ + /file-also-included\\ -\hspace{2mm}*\\
}
\vspace{8mm}
 
\begin{description} \normalsize
\item[\hspace{1mm} '- *.o']{Excluse tous les nom matchant *.o}
\item[\hspace{1mm} '- /foo']{Exclus un fichier ou répertoire nommé foo dans le répertoire racine du transfert}
\item[\hspace{1mm} '- foo/']{Exclus tout répertoire nommé foo}
\item[\hspace{1mm} '- foo/*/bar']{Exclus tout fichier nommé bar 2 ou plusieurs niveaux sous un répertoire nommé foo}
\item[\hspace{1mm} '+ */', '+ *.c', '- *']{La combinaison de ces motifs incluent tous les répertoires et les fichiers source C mais rien d'autre (voir également l'option -prine-empty-dirs)}
\item[\hspace{1mm} '+ foo/', '+ foo/bar.c', '- *']{La combinaison de ces motifs incluent seulement le répertoire foo et foo/bar.c}
\end{description}
 
\hspace{1mm}  Les modifiers suivants sont acceptés après un '+' ou '-':
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} -]{un '/' spécifie que la règle d'inclusion/exclusion doit matcher le chemin absolu de l'élément. Par exemple, '-/ /etc/password' exclus le fichier /etc/passwd, et '-/ subdir/foo' exclus toujours foo quand il est dans un répertoire nommé subdir.}
\item[\hspace{1mm} -]{un '!' spécifie que l'inclusion/exclusion prend effet si le motif échoue au matche. Par exemple, '-! */' exclus tous les non-répertoires}
\item[\hspace{1mm} -]{un 'C' est utilisé pour indiquer que toutes les règles d'exclusion CVS globales devraient être insérés comme exclusion à la place de '-C'. n'a pas d'argument}
\item[\hspace{1mm} -]{un 's' est utilisé pour indiquer que la règle s'applique côté émetteur. Quand une règle affecte l'émetteur, il empêche les fichiers d'être transférés. Par défaut, un règle affecte les 2 côté sauf avec --delete-excluded, auquel cas seul l'émetteur est affecté.}
\item[\hspace{1mm} -]{un 'r' est utilisé pour indiquer que la règle s'applique au receveur. Quand une règle affecte le receveur, il empêche la suppression des fichiers.}
\item[\hspace{1mm} -]{un 'p' indique qu'une règle est périssable, signifiant qu'elle est ignorée dans les répertoires qui sont supprimés. Par exemple, les règles -C qui excluent des éléments tels que CVS et *-o sont marqués comme périssable, et n'empêchent pas un répertoire qui a été supprimé dans la source d'être supprimé dans la destination}
\end{description}
 
\vspace{1cm}{\huge Règles de filtre merge-file }
 
\
 
\hspace{1mm}  Il est possible de fusionner tous les fichiers dans des règles de filtrage en spécifiant soit une règle de filtre merge (.), ou un dir-merge (:). Un fichier est est lus une seule fois, et ses règles sont incorporées dans la liste de filtre à la place de la règle '.'. pour les fichiers merge par répertoire, rsync scanne chaque répertoire qu'il traverse à la recherche du fichier, et fusionne son contenu dans la liste courante des règles héritées. Ces règles par répertoire doient être crées côté émetteur.
\vspace{5mm} \\
 
 
\hspace{1mm} Par exemple:
 
{\ttfamily
merge /etc/rsync/default.rules\\ . /etc/rsync/default.rules\\ dir-merge .per-dir-filter\\ dir-merge,n- .non-inherited-per-dir-excludes\\ :n- .non-inherited-per-dir-excludes\\
}
\vspace{8mm}
 
\hspace{1mm}  Les modifiers suivants sont acceptés après une règle merge ou dir-merge:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} -]{un '-' spécifie que le fichier devrait consister seulement de motifs d'exclusion}
\item[\hspace{1mm} -]{un '+' spécifie que le fichier devrait consister seulement de motifs d'inclusion}
\item[\hspace{1mm} -]{un 'C' est une manière de spécifie que le fichier devrait être lu à la manière d'un CSV. Celà active 'n', 'w', et '-', mais autorise également le jeton '!'.}
\item[\hspace{1mm} -]{un 'e' exclus le nom du merge-file du transfert}
\item[\hspace{1mm} -]{un 'n' spécifie que les règles ne sont pas hérités par les sous-répertoires}
\item[\hspace{1mm} -]{un 'w' spécifie que les règle sont séparés par un espace blanc au lieu d'être séparés par des newline. Cela désactive les commantaires}
\end{description}
 
\hspace{1mm}  Les règles sont hérité sauf si 'n' est spécifié. Chaque règles de sous-répertoire a une priorité supérieur aux règles héritées. Quand la règle d'effacement de liste est lu dans un fichier par-répertoire, il efface seulement les règles héritées. Une autre manière d'empêcher l'héritage d'une règle est de l'attacher avec un '/'. Ces règles sont relatives au répertoire du merge-file, dont un motif '/foo' ne match que le fichier foo dans le répertoire.
\vspace{5mm} \\
 
 
\hspace{1mm} Exemple de fichier de filtre qui peut être spécifié via --filter="file"
 
{\ttfamily
merge /home/user/.global-filter\\ - *.gz\\ dir-merge .rules\\ + *.\texttt{[}ch\texttt{]}\\ - *.o\\
}
\vspace{8mm}
 
\hspace{1mm}  Cela fusionne le contenu du fichier /home/user/.global-filter au début de la liste et active le fichier .rules comme filtre par répertoire. Toutes les règles lues avant le début du scan de répertoire suivent la règle globales.
\vspace{5mm} \\
 
 
\hspace{1mm} Si un merge-file par répertoire est spécifié avec un chemin qui est un répertoire parent du premier répertoire, rsync scan tous les répertoires parents depuis le point de départ à la recherche du fichier par-répertoire. Par exemple:
 
{\ttfamily
--filter=': /.rsync-filter'\\
}
\vspace{8mm}
 
\hspace{1mm} Indique à rsync de scanner ce fichier dans tous les répertoire depuis la racine vers le répertoire parent du transfert avant de commencer le scan de répertoire normal. Quelques exemples de ce pré-scan:
 
{\ttfamily
rsync -avF /src/path/ /dest/dir\\ rsync -av --filter=': ../../.rsync-filter' /src/path/ /dest/dir\\ rsync -av --filter=': .rsync-filter' /src/path/ /dest/dir\\
}
\vspace{8mm}
 
\hspace{1mm}  Les 2 premières commandes recherchent .rsync-filter dans '/' et '/src' avant que le scan normal commence à regarder dans /srv/path et ses sous-répertoires. La dernière commande évite le scan de répertoire parent et ne recherche que les fichiers .rsync-filter dans chaque répertoire qui font partie du transfert.
\vspace{5mm} \\
 
 
\hspace{1mm} Pour inclure le contenu d'un .cvsignore dans les motifs, il faut utiliser la règle ':C', qui créé un dir-merge de fichier .cvsignore, mais parsé d'une manière compatible cvs. On peut l'utiliser pour affecter, quand l'inclusion de l'option -C du fichier .cvsignore par-répertoire est placé dans les règle avec ':C'. Sans celà, rsync ajoute la règle dir-merge pour le fichier .cvsignore à la fin de toutes les autres règles. Par exemple:
 
{\ttfamily
cat <<EOT | rsync -avC --filter='. -' a/ b\\ + foo.o\\ :C\\ - *.old\\ EOT\\ rsync -avC --include=foo.o -f :C --exclude='*.old' a/ b\\
}
\vspace{8mm}
 
\hspace{1mm}  Ces commandes sont identiques. Chacune va fusionner les règles .cvsignore par-répertoire au milieu de la liste au lieu de la fin. Cela permet aux règle par répertoire de remplacer les règles qui suivent le :C au lieu d'être subordonné à toutes les règles. Pour affecter les autres règles CVS d'exclusion (par ex. la liste d'exclusion par défaut, le contenu de \$HOME/.cvsignore, et la valeur de \$CVSIGNORE) il faut omettre -C et insérer un règle '-C' dans les règles de fitre; par ex: --filter=-C
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Règle de filtre d'effacement le liste }
 
\
 
\hspace{1mm}  Pour effacer la liste d'inclusion/exclusion, utiliser la règle '!'. La liste courante est soit la liste globale de règle (si la règle est rencontrée en parsant les options de filtre), ou un jeu le règle par répertoire (qui sont hérités dans leur propre sous-liste, donc un répertoire peut l'utiliser pour effacer les règle parent)
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Motifs include/exclude attachés }
 
\
 
\hspace{1mm}  Comme mentionné plus haut, les motifs include/exclude globaux sont attachés à la racine du transfert. Cette racine gouverne les motifs commençant par un '/'. Parce que le matching est relatif à cette racine, changer le slash dans le chemin source ou changer l'utilisation de l'option --relative affecte le chemin à utiliser dans les match. Les exemples suivant le démontrent.
\vspace{5mm} \\
 
 
\hspace{1mm} Disont que l'on souhaite matcher 2 fichiers sources, un avec un chemin absolue "/home/me/foo/bar" et un avec un chemin "/home/you/bar/baz". Voici divers choix de commande qui diffèrent pour un transfert:
 
{\ttfamily
\#> rsync -a /home/me /home/you /dest\\ +/- pattern: /me/foo/bar\\ +/- pattern: /you/bar/baz\\ Target file: /dest/me/foo/bar\\ Target file: /dest/you/bar/baz\\ \hspace{2mm}\\ \#> rsync -a /home/me/ /home/you/ /dest\\ +/- pattern: /foo/bar (note missing "me")\\ +/- pattern: /bar/baz (note missing "you")\\ Target file: /dest/foo/bar\\ Target file: /dest/bar/baz\\ \hspace{2mm}\\ \#> rsync -a --relative /home/me/ /home/you /dest\\ +/- pattern: /home/me/foo/bar (note full path)\\ +/- pattern: /home/you/bar/baz (ditto)\\ Target file: /dest/home/me/foo/bar\\ Target file: /dest/home/you/bar/baz\\ \hspace{2mm}\\ \#> cd /home; rsync -a --relative me/foo you/ /dest\\ +/- pattern: /me/foo/bar (starts at specified path)\\ +/- pattern: /you/bar/baz (ditto)\\ Target file: /dest/me/foo/bar\\ Target file: /dest/you/bar/baz\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Règles par-répertoire et suppression }
 
\
 
\hspace{1mm} Sans option delete, les règles par-répertoire sont seulement significatif du côté de l'émetteur, donc on peut exclure les fichiers merge eux-même sans affecter le transfert. Pour simplifier, le modifier 'e' ajoute cette exclusion:
 
{\ttfamily
rsync -av --filter=': .excl' --exclude=.excl host:src/dir /dest\\ rsync -av --filter=':e .excl' host:src/dir /dest\\
}
\vspace{8mm}
 
\hspace{1mm} Cependant, pour faire une suppression dans l'émetteur et exclure certains fichiers de la suppression, il faut s'assurer que le receveur connaisse les fichiers à exclure. La manière la plus simple est d'inclure les fichiers merge dans le transfert et utiliser --delete-after, parce que cela s'assure que le recerveur à toutes les règles d'exclusion avant de tenter quoi que ce soit:
 
{\ttfamily
rsync -avF --delete-after host:src/dir /dest\\
}
\vspace{8mm}
 
\hspace{1mm} Cependant, si les fichiers merge ne font pas partie du transfert, il faut spécifier des règles d'exclusion globales, ou maintenir les fichiers merge par répertoire côté receveur. Par exemple:
 
{\ttfamily
rsync -av --filter=': .rules' --filter='. /my/extra.rules' --delete host:src/dir /dest\\
}
\vspace{8mm}
 
\hspace{1mm} Le fichier extra.rules peut affecter les 2 côtés du transfert, mais côté emeteur les règles sont subordonnés aux règles fusionnées depuis les fichiers .rules. Dans un dernier exemple, le distant exclus les fichiers .rsync-filter du transfert, mais on souhaite utiliser les fichiers .rsync-filter pour contrôler ce qui est supprimé. Pour cela il faut spécifiquement exclure les fichiers de merge par répertoire et placer les règles dans les fichiers locaux pour contrôler ce qui ne devrait jamair être supprimé:
 
{\ttfamily
rsync -av --filter=':e /.rsync-filter' --delete host:src/dir /dest\\ rsync -avFF --delete host:src/dir /dest\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Mode batch }
 
\
 
\hspace{1mm}  Le mode batch peut être utilisé pour appliquer le même jeu de mises à jours à de nombreux systèmes identiques. Supposons une arborescence qui est répliquée dans plusieurs hôtes. Supposons que certains changements ont été fait dans cette arborescence et doivent être propagés sur tous les hôtes. Pour faire celà en mode batch, rsync est lancé avec l'option write-batch, qui stocke toutes les informations dans un fichier.
\vspace{5mm} \\
 
 
\hspace{1mm}  En générant le fichier batch une fois effectue le status de fichier, checksum et génération de block de données. Les protocoles de transport multicast peuvent être utilisés pour transférer les fichiers de mises à jours batch en parallèle.
\vspace{5mm} \\
 
 
\hspace{1mm}  Pour appliquer les changements enregistrés dans une autre arborescence de destination, lancer rsync avec l'option read-batch, en spécifiant le nom du fichier et de l'arborescence. Un fichier script peut également être créé quand l'option write-batch est utilisé: il est nommé avec le même nom que le fichier batch avec l'extension '.sh'. Ce script contient une ligne de commande utilisable pour mettre à jour une arborescence de destination en utilisant le fichier batch associé.
\vspace{5mm} \\
 
 
\hspace{1mm} Exemples:
 
{\ttfamily
\$ rsync --write-batch=foo -a host:/source/dir/ /adest/dir/\\ \$ scp foo* remote:\\ \$ ssh remote ./foo.sh /bdest/dir/\\ \hspace{2mm}\\ \$ rsync --write-batch=foo -a /source/dir/ /adest/dir/\\ \$ ssh remote rsync --read-batch=- -a /bdest/dir/ <foo\\
}
\vspace{8mm}
 
\hspace{1mm}  Dans ces exemples, rsync est utilisé pour mettre à jours /adest/dir/ depuis /source/dir/ et les information sont stockés dans 'foo' et 'foo.sh'. L'hôte distant peut ainsi être mis à jours avec les données batchés pour le répertoire /bdest/dir. La différence entre les 2 exemples révèlent une certaine flexibilité sur la manière de gérér les batchs:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} -]{Le premier exemple montre que la copie initiale n'a pas à être locale, on peut pousser ou envoyer les données depuis/vers un hôte distant en utilisant un shell distant ou le service rsync}
\item[\hspace{1mm} -]{Le premier exemple utiliser le fichier foo.sh pour obtenir les options rsync en lancant la commande read-batch sur l'hôte distant.}
\item[\hspace{1mm} -]{Le second exemple lit le batch via l'entrée standard donc le batch n'a pas à être copié dans la machine distante. Cet exemple évite le fichier foo.sh.}
\end{description}
 
\hspace{1mm}  L'option read-batch s'attend à ce que l'arborescence de destination qui est mise à jours soit identique à l'arborescence de destination utilisée pour créer le batch. Quand une différence est trouvée la mise à jour n'est pas effectuée avec une alerte (si le fichier apparaît être déjà à jour) ou tenté et donc, si le fichier échoue la vérification, la mise à jour n'est pas effectuée avec une erreur. Cela signifie que relancer l'opération est sûre si la commande est interrompue. Pour forcer la mise à jour à toujours tenter sans regarder la taille et les données, utiliser l'option -I. Si une erreur se produit, l'arborescence de destination va probablement être dans un état de mise à jour partielle. Dans ce cas, rsync peut être utilisé dans son mode régulier non-batch pour fixer la destination.
\vspace{5mm} \\
 
 
\hspace{1mm}  La version rsync utilisé dans toutes les destinations doit être au moins aussi récente que celle qui a été utilisée pour générer le batch. rsync s'arrête si la version du protocole dans le batch est trop récent.
\vspace{5mm} \\
 
 
\hspace{1mm}  En lisant un batch, rsync force la valeur de certaines options pour matcher les données dans le fichier batch si elles ne sont pas définies à la même valeur que la commande write-batch. D'autres options peuvent être changées. Par exemple, --write-batch changé en --read-batch, --files-from est supprimé, et les options --filter/--include/--exclude ne sont pas nécessaires à moins qu'une option --delete soit spécifiée
\vspace{5mm} \\
 
 
\hspace{1mm}  Le code qui créé le batch.sh transforme toutes les options filter/include/exclude en une simple liste qui est ajoutée comme un "here" document dans le script shell. Tout utilisateur avancé peut l'utiliser pour modifier la liste si un changement est désiré avec --delete.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Liens symboliques }
 
\
 
\hspace{1mm}  3 comportements sont possible quand rsync rencontre un lien symbolique dans le répertoire source. Par défaut les liens symbolique ne sont pas transférés du tout. Un message 'skipping non-regular" est émis. Si --links est spécifié, les symlinks sont recréés avec la même cible. Si --copy-links est spécifié, leur référant est copié au lieu du lien. rsync peut également distinguer les liens sûres et non-sûres. Par exemple, cela peut être utilisé pour un site web mirroir pour s'assurer que le module rsync qui est copié n'inclus pas les liens symboliques vers des fichier qui pointent sur la destination. --safe-links omet les liens non-sûres.
\vspace{5mm} \\
 
 
\hspace{1mm}  Les liens symboliques sont considérés comme non-sûres s'ils sont des liens absolus (commençant par '/'), vides, ou s'ils contiennent suffisamment de '..'. Voici un sommaire des options de liens et leur interprétation. Cette liste est dans l'ordre de précédence:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} --copy-links]{Transforme tous les liens en fichiers normaux}
\item[\hspace{1mm} --links, --copy-unsafe-links]{Transforme tous les liens non-sûres en fichier et duplique tous les liens sûrs.}
\item[\hspace{1mm} -copy-unsafe-links]{Transforme tous les liens non-sûres en fichier, et ignore les liens sûres}
\item[\hspace{1mm} --links, --safe-links]{Duplique les liens sûres et ignore les non-sûres}
\item[\hspace{1mm} --links]{Duplique tous les liens}
\end{description}
 
\vspace{1cm}{\huge Diagnostique }
 
\
 
\hspace{1mm} rsync produit occasionnellement des messages d'erreur qui peuvent être difficile à comprendre, tel que "protocol version mismatch - is your shell clean?". Ce message est généralement généré par les scripts de démarrage ou shell distant produisant des données incorrectes dans le flux que rsync utilise pour son transport. Pour diagnostiquer ce problème, lancer un shell distant commen: \\
\hspace{1mm} \textbf{ssh remotehost /bin/true > out.dat} \\
\hspace{1mm} et lire ce fichier. Si tout est correcte, il devrait être vide. \\
 
\vspace{1cm}{\huge Codes de sortie }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} 0]{succès}
\item[\hspace{1mm} 1]{Erreur de syntaxe ou d'utilisation}
\item[\hspace{1mm} 2]{Incompatibilité de protocole}
\item[\hspace{1mm} 3]{Erreurs en sélectionnant les fichiers/répertoires d'entrée/sortie}
\item[\hspace{1mm} 4]{Action demandée non supportées}
\item[\hspace{1mm} 5]{Erreur en démarrage le protocole}
\item[\hspace{1mm} 6]{Service incapable d'ajouter dans le fichier de log}
\item[\hspace{1mm} 10]{Erreur d'E/S socket}
\item[\hspace{1mm} 11]{Erreur d'E/S dans le fichier}
\item[\hspace{1mm} 12]{Erreurs avec les diagnostiques}
\item[\hspace{1mm} 14]{Erreur dans le code IPC}
\item[\hspace{1mm} 20]{SIGUSR1 ou SIGINT reçu}
\item[\hspace{1mm} 21]{Erreurs retournées par waitpid()}
\item[\hspace{1mm} 22]{Erreur en allouant les buffers mémoire}
\item[\hspace{1mm} 23]{Transfert partiel à cause d'erreur}
\item[\hspace{1mm} 24]{Transfert partiel à cause de fichiers sources disparus}
\item[\hspace{1mm} 25]{Limite --max-delete atteint}
\item[\hspace{1mm} 30]{Timeout dans l'envoie/reception des données}
\item[\hspace{1mm} 35]{Timeout durant la connexion avec le service}
\end{description}
 
\vspace{1cm}{\huge Variables d'environnement }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} CVSIGNORE]{Définie les fichiers .cvsignore}
\item[\hspace{1mm} RSYNC\_ICONV]{Spécifie le paramètre --iconv}
\item[\hspace{1mm} RSYNC\_PROTECT\_ARGS]{Spécifie un valeur non-zéro pour activer l'option --protect-args}
\item[\hspace{1mm} RSYNC\_RSH]{Définis le shell par défaut utilisé comme transport pour rsync}
\item[\hspace{1mm} RSYNC\_PROXY]{Redirige le client rsync pour utiliser un proxy web}
\item[\hspace{1mm} RSYNC\_PASSWORD]{Mot de passe pour lancer une connection authentifiée}
\item[\hspace{1mm} USER]{nom de l'utilisateur}
\item[\hspace{1mm} LOGNAME]{Nom de l'utilisateur}
\item[\hspace{1mm} HOME]{Répertoire personnel de l'utilisateur pour trouver le fichier .cvsignore}
\end{description}
\end{flushleft}
\end{document}
