Normalement, rsync
saute des fichiers lorsque les fichiers ont des tailles et des durées identiques du côté de la source et de la destination. Il s'agit d'une heuristique qui est généralement une bonne idée, puisqu'elle empêche les rsync
de ne pas avoir à examiner le contenu de fichiers qui sont très probablement identiques du côté de la source et de la destination.
--ignore-times
dit à rsync
pour désactiver l'heuristique de durée et de taille des fichiers, et ainsi transférer inconditionnellement TOUS les fichiers de la source à la destination. rsync
procédera ensuite à la lecture de chaque fichier du côté source, puisqu'il devra soit utiliser son algorithme de transfert delta, soit simplement envoyer chaque fichier dans son intégralité, selon que l'option --whole-file
a été spécifiée.
--checksum
modifie également l'heuristique des temps et des tailles de fichiers, mais ici, elle ignore les temps et examine uniquement les tailles. Les fichiers des côtés source et destination qui diffèrent en taille sont transférés, puisqu'ils sont évidemment différents. Les fichiers de même taille sont soumis à une somme de contrôle (avec MD5 dans le cas de rsync
version 3.0.0+, ou avec MD4 dans les versions antérieures), et ceux dont les sommes sont différentes sont également transférés.
Dans les cas où les côtés source et destination sont pratiquement les mêmes, --checksum
aura pour résultat que la plupart des fichiers seront vérifiés des deux côtés. Cela peut prendre beaucoup de temps, mais le résultat est que le strict minimum de données sera effectivement transféré sur le fil, surtout si l'algorithme de transfert delta est utilisé. Bien sûr, ce n'est un avantage que si vous avez des réseaux très lents et/ou des processeurs très rapides.
--ignore-times
D'autre part, cette option enverra plus de données sur le réseau et entraînera la lecture de tous les fichiers source, mais au moins elle n'imposera pas la charge supplémentaire du calcul de nombreux hashsums cryptographiquement forts sur les CPU source et destination. Je m'attends à ce que cette option soit plus performante que --checksum
lorsque vos réseaux sont rapides, et/ou votre CPU relativement lent.
Je pense que je n'utiliserai jamais que --checksum
ou --ignore-times
si je transférais des fichiers vers une destination où l'on soupçonne que le contenu de certains fichiers est corrompu, mais dont les heures de modification n'ont pas été modifiées. Je ne vois pas vraiment d'autre bonne raison d'utiliser l'une ou l'autre de ces options, bien qu'il existe probablement d'autres cas d'utilisation.