Re: diff de répertoire

Page principale

Répondre à ce message
Auteur: anne.guilde@free.fr
Date:  
À: Guilde
Sujet: Re: diff de répertoire
Le 22/01/2018 à 06:38, Frédéric a écrit :
> Le dimanche 21 janvier 2018, anne.guilde@??? a écrit :
>
>> --delete sert a quoi?
>
> $ man rsync
>
>    --delete    delete extraneous files from dest dirs

>
> Ça efface de la cible les fichiers qui n'existent plus sur la source.
> Sinon, par défaut, ils sont conservés.
>


Pour comparer 2 répertoires, edgar m'avait dit de faire

      rsync -anv --delete $new_dir $old_dir


à la place du diff qui me disait mémoire épuisée

les répertoires à comparer font 400 go.

diff met très longtemps pour s'exécuter, rsync s'est très rapide.
J'ai regardé ce que voulait dire les options

-----------------
-a, --archive
     Ceci est équivalent à -rlptgoD. C'est un moyen rapide de dire que 
vous voulez la récursion et tout préserver pratiquement tout. La seule 
exception est que si --files-from a été spécifié alors -r n'est pas 
utilisée.
     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.


-n, --dry-run
     Ceci dit à rsync de ne faire aucun transfert, mais de juste 
rapporter les actions qu'il aurait faites.


-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'information à la fin. Plus de deux drapeaux -v ne devraient être 
utilisés que pour déboguer rsync.
     Remarquez que les noms des fichiers transmis qui sont affichés le 
sont selon la valeur par défaut de --log-format qui est «%n%L», ce qui 
ne présente que le nom du fichier et, si c'est un lien, vers où il 
pointe. Avec un seul -v, il ne sera pas fait mention si un fichier a eu 
ses attributs modifiés. Si vous demandez une liste des attributs 
modifiés (soit avec --itemize-changes ou bien en ajoutant «%i» à 
--log-format), alors l'affichage fera mention de tous les attributs 
modifiés pour une quelconque raison. Référez-vous à l'option 
--log-format pour plus d'information.


--delete
     Ceci dit à rsync d'effacer tous les fichiers superflus côté 
réception (ceux qui ne sont pas du côté envoi); uniquement pour les 
répertoires synchronisés. Vous devez explicitement demander à rsync de 
transmettre le contenu du répertoire (par ex : «dir» ou «dir/»), sans 
utiliser de méta-caractères pour indiquer le contenu du répertoire (par 
ex : «dir/*»). En effet, les méta-caractères sont interprétés par le 
shell, ce qui implique que rsync reçoit une requête pour transmettre une 
liste de fichiers et non pas un répertoire entier. Les fichiers qui sont 
exclus du transfert ne seront pas effacés sauf si vous utilisez 
--delete-excluded ou que vous indiquez dans les règles de ne faire de 
correspondance que sur le côté émetteur (cf. les modificateurs 
d'inclusion/exclusion de la section RÈGLES DE FILTRE).
     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 
--dry-run (-n) pour voir quels seraient 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 (E/S), alors 
l'effacement des fichiers côté destination est automatiquement 
désactivé. 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.
     L'option --delete peut être combinée avec l'une des options 
--delete-QUAND ainsi qu'avec --delete-excluded. Si aucune des options 
--delete-QUAND n'est spécifiée, actuellement, rsync choisira 
l'algorithme --delete-before. Cependant, il se peut que les versions 
futures choisissent par défaut l'algorithme --delete-during. Voir aussi 
--delete-after.
-----------------


Je me suis posé la question sur l'option --delete que je n'ai pas osé 
mettre, donc juste
      rsync -anv  $new_dir $old_dir
à la place de
      rsync -anv --delete $new_dir $old_dir


Mais avec l'option -n je pourrais peut-être mettre l'option --delete,
cela me donnerait plus d'informations.

Anne