132 votes

rsync: différence entre --size-only et --ignore-times

J'essaie de comprendre quelle est la différence entre les deux options de rsync: --taille uniquement et --ignore-temps. C'est ma compréhension que, par défaut, rsync va comparer les horodatages et les tailles des fichiers afin de décider si oui ou non un fichier doit être synchronisé ou pas. Les options ci-dessus permettent à l'utilisateur d'influencer ce comportement.

Les deux options semblent, au moins verbalement à la suite de la même chose: la comparaison par la taille seulement. Ai-je raté quelque chose de subtil ici?

Merci, AJK

124voto

ckg Points 521

Il y a plusieurs façons de rsync compare les fichiers -- la source de référence est la description d'algorithme rsync: http://cs.anu.edu.au/techreports/1996/TR-CS-96-05.pdf. L' article de wikipedia sur rsync est également très bon.

Pour les fichiers locaux, rsync compare les métadonnées et si on dirait qu'il n'a pas besoin de copier le fichier parce que la taille et la date du match entre la source et la destination qu'il ne regarde pas plus loin. Si elles ne correspondent pas, il cp le fichier. Cependant, si les métadonnées ne correspondent mais les fichiers ne sont pas vraiment les mêmes? Puis rsync n'a probablement pas faire ce que vous avez prévu.

Les fichiers qui sont de la même taille peut tout de même changé. Un exemple simple est un fichier texte dans lequel vous corriger une faute, comme le changement de "teh" à "la". La taille du fichier est le même, mais le fichier corrigé auront un horodatage plus récent. --taille-dit seulement: "ne regarde pas l'heure; si la taille correspond à assumer les fichiers de match", ce qui serait un mauvais choix dans ce cas.

D'autre part, supposons que vous avez accidentellement fait un gros "cp-r Un B" hier, mais vous avez oublié de préserver les repères de temps, et maintenant vous voulez faire l'opération dans le sens inverse "rsync B A". Tous ces fichiers vous cp ed ont le temps d'hier timbre, même si elles n'étaient pas vraiment modifié hier, et rsync, par défaut, en fin de copie de tous les fichiers, et de mettre à jour l'horodatage hier trop. --taille-seulement peut-être votre ami dans ce cas (modulo l'exemple ci-dessus).

--ignore-times dit pour comparer les fichiers, indépendamment de savoir si les fichiers ont le même modifier le temps. Envisager la typo exemple ci-dessus, mais pas seulement avez-vous de corriger la faute de frappe, mais vous avez utilisé "touch" pour rendre le fichier corrigé avoir le même modifier le temps que le fichier d'origine -- disons simplement que vous êtes sournois de cette façon. Bien --ignore-temps va faire un diff sur des fichiers même si la taille et le temps de match.

52voto

rjmunro Points 10522

Il vous manque que rsync peut également comparer des fichiers par de la somme de contrôle.

--size-only signifie que rsync va ignorer les fichiers qui correspondent à la taille, même si les horodateurs diffèrent. Cela signifie qu'il se synchronise moins de fichiers que le comportement par défaut. Il va manquer aucun fichier avec les modifications qui n'affectent pas la taille globale du fichier.

--ignore-times signifie que rsync va de somme de contrôle de tous les fichiers, même si les horodateurs et les tailles de fichier de match. Cela signifie qu'il se synchronise plus de fichiers que le comportement par défaut. Il comprendra les modifications apportées aux fichiers même lorsque la taille du fichier est le même que pour la modification de la date/heure a été réinitialisé à la valeur d'origine (la réinitialisation de la date/heure est rare d'être fait dans la pratique, mais ça peut arriver).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X