web-dev-qa-db-fra.com

Est-ce que rsync supprime les fichiers, les dossiers de destination par défaut?

Des dossiers

Supposons que /foo/src ne contienne que A.c et que /foo/dest contienne à la fois A.c et B.c. Et supposons que je lance la commande suivante:

rsync /foo/src/ /foo/dest

rsync effacera-t-il B.c?

Dossiers

Supposons maintenant que /foo/src contienne le répertoire A avec quelques fichiers et que /foo/dest contienne les deux répertoires A et B, chacun contenant des fichiers. Et supposons que j'exécute la commande suivante (l'option -a inclut -r, récursif):

rsync -a /foo/src/ /foo/dest

rsync effacera-t-il B et son contenu?

41
Crowder

Par défaut, rsync ne supprime pas les fichiers mais cela dépend des options de commande que vous spécifiez. Vous pouvez utiliser les éléments suivants si vous voulez supprimer des fichiers:

  • −−del (alias pour −−delete − During)
  • −−delete (supprime les fichiers superflus des répertoires de destination)
  • −−delete − before (le récepteur supprime avant xfer [défaut])
  • −−delete − During (le récepteur supprime pendant xfer, pas avant)
  • −−delete − after (le récepteur supprime après xfer, pas avant)
  • −−delete − excluded (supprime également les fichiers exclus des répertoires de destination)
  • −−max − delete = NUM ​​(ne supprimez pas plus que NUM fichiers)

Puisque vous avez spécifiquement appelé l'option - a , voici ce que dit la page de manuel

- a, −−archive >

Ceci est équivalent à - rlptgoD . C'est un moyen rapide de dire que vous voulez la récursion et que vous voulez préserver presque tout (avec -H étant une omission notable). La seule exception à l'équivalence ci-dessus est lorsque −− fichiers-de ( est spécifié, auquel cas −r n'est pas impliqué.

Notez que - a ne conserve pas les liens durs , car la recherche de fichiers à liaisons multiples est coûteuse. Vous devez spécifier séparément - H .

Il semble donc que la réponse à votre question est NON, elle ne sera pas supprimée compte tenu de vos exemples.
HTH

48
SaxDaddy