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