Question Quelles sont les différences entre les options de suppression de rsync?


Je vois sur le page de manuel rsync qu'il y a un certain nombre de delete options, mais ne comprennent pas vraiment les différences entre eux. Quelles sont les différences entre ces options?

 --del                   an alias for --delete-during
 --delete                delete extraneous files from dest dirs
 --delete-before         receiver deletes before transfer (default)
 --delete-during         receiver deletes during xfer, not before
 --delete-delay          find deletions during, delete after
 --delete-after          receiver deletes after transfer, not before
 --delete-excluded       also delete excluded files from dest dirs

100
2018-06-25 12:29


origine


Pourquoi --delete-before est décrit comme (default)? Je ne peux pas comprendre quoi (default) veux dire. - Marco Marsala
Il n'est plus spécifié par défaut dans le man page pour rsync version 3.1.2 protocol version 31. Cependant, je suppose sur la version avec le texte cité que si vous utilisez uniquement --delete plutôt que --delete-WHEN, alors c'est comme si vous spécifiiez --delete-WHEN où WHEN par défaut à before. - Tom Hale


Réponses:


  • --del/--delete_during: Supprime les fichiers du répertoire de destination au fur et à mesure de leur copie (économise de la mémoire par rapport à --delete-before: --delete-before effectue une analyse distincte pour rechercher les éléments supprimables)

  • --delete: Supprime les fichiers du répertoire de destination s’ils n’existent pas dans le répertoire source.

  • --delete-before: Supprimer des fichiers dans le répertoire de destination avant de copier le fichier avec le même nom à partir du répertoire source

  • --delete-during: Supprimer des fichiers dans le répertoire de destination WHILE copier le fichier avec le même nom du répertoire source

  • --delete-delay: Mark supprime pendant le transfert, mais attend que le transfert soit terminé

  • --delete-after: Récepteur supprime après le transfert, pas avant ... Si une autre partie de la rsync déplacé des fichiers supplémentaires ailleurs, vous voulez cela au lieu de --delete-delay, car --delete-delay décide ce qu'il va supprimer au milieu du transfert, alors que --delete-after vérifie le répertoire des fichiers à supprimer APRÈS que tout soit terminé.

  • --delete-excluded: Supprime les fichiers du répertoire de destination explicitement exclus du transfert à partir du répertoire source.

Le but de rsync n'est pas de copier, mais bien d'archiver. Cette distinction est importante. Le traitement des fichiers supprimés / modifiés est critique et, dans de nombreux cas, nuancé.

le --delete Le drapeau en particulier est celui que j'ai vu foiré plusieurs fois. Beaucoup de gens utilisent rsync pour déplacer les fichiers vers un stockage de faible priorité et, dans ce cas, vous voulez que les fichiers que vous déplacez restent EXIST dans le répertoire de destination. Ce n'est pas ce que supprimer: --delete s'assure que, lorsque vous supprimez un fichier du répertoire source, il est également supprimé de votre répertoire de destination, afin que votre destination ne soit pas remplie de courrier indésirable ... Une fois qu'un gars a effacé sa sauvegarde en mettant un nouveau lecteur , et ne pas éteindre son script rsync nocturne. Le script a vu que le répertoire source était maintenant vide et il a supprimé tous les fichiers du répertoire de destination, donc ils correspondaient.

La plupart des autres options sont liées à l'espace ou aux performances. Lorsque vous supprimez les fichiers est important si vous voulez vous assurer que le transfert est réussi avant de faire quoi que ce soit, mais si votre appareil est trop petit pour gérer 2 copies de toutes les informations, vous devez les supprimer, etc. peu loufoque à cause de sa longue histoire sur plusieurs plates-formes: certaines options ont été ajoutées pour que les personnes habituées à certains comportements ne soient pas confondues.


101
2018-06-25 14:19



Est-ce que --delete et --delete-before sont les mêmes? man rsync ne dit pas quand --delete supprime les fichiers. - ppr
@ppr: dépend du système. La raison pour laquelle il a tant d'options spécifiques est que supprimer sous Solaris! = Supprimer sous HP-UX! = Supprimer sous AIX! = Supprimer sous Linux. - Satanicpuppy
Lors de la synchronisation de tout un répertoire, delete-after supprimer chaque fichier entre la synchronisation ou seulement après que tout le répertoire ait été mis en miroir? j'ai pensé delete-after était suffisant pour mes besoins, mais je ne reçois pas d’espace sur l’appareil lors de la sauvegarde de l’un de mes lecteurs. - Sridhar-Sarnobat
@ Sridhar-Sarnobat: Soit. Cela déplace tout ce qui va bouger et quand cela est fait, ça commence à supprimer des choses. Si vous voulez le supprimer avant de tout déplacer, utilisez --delete-during - Satanicpuppy
Après une certaine expérience, je trouve que même delete-during n'empêche pas toujours no space left on device (sous Linux). Alors delete-before est le seul moyen garanti de l'éviter (comme lors de la mise en miroir d'un disque presque plein et que le disque de destination est également presque plein). - Sridhar-Sarnobat


Il y a deux choses:

  1. Qui fait la suppression
  2. Quand ça arrive

On peut demander à l'expéditeur ou au destinataire de procéder à la suppression (je ne sais pas pourquoi c'est important). Ainsi, lorsque rsync d'un ordinateur se connecte au serveur rsync de l'autre côté, cela détermine qui émet effectivement la commande delete.

Quand c'est le cas, c'est assez facile ... avant, tous les fichiers sont supprimés et THS rsync copie sur les fichiers. pendant que les moyens parcourent la liste des fichiers, ils les suppriment quand ils les reçoivent, et ensuite ils attendent que tous les fichiers soient transférés et ensuite suppriment le côté distant. Cela ne compte que lorsque le transfert est interrompu.


1
2018-06-25 12:57



Je suis presque sûr qu'aucune de ces options ne sont liées à la suppression de expéditeur côté. Tous (AFAIK) se rapportent à la suppression de choses de la les récepteurs côté. En outre, vous dites: "avant signifie que tous les fichiers sont supprimés et que THS rsync copie sur les fichiers" - est-ce exact? Je m'attendais à --delete-before supprimer uniquement les fichiers devant disparaître, pas tout les fichiers! Mais je suppose que c'est possible que rsync supprime tout et transfère ensuite sur les "nouvelles" données (éventuellement non modifiées) ... - Quuxplusone
Ah, "supprimer du côté de l'expéditeur" est supporté par rsync, mais le nom de cette option est --remove-source-files. - Quuxplusone


Un autre point qui mérite d'être mentionné est que si votre répertoire source se termine par /*, alors rsync ne considérera que ceux fichiers et non le répertoire lui-même (et donc l'absence de fichiers que vous souhaitez supprimer sur la destination).

Si vous spécifiez une option de suppression ci-dessus, mais que rsync a l'air de ne pas être supprimé, vérifiez que vous ne mettez pas accidentellement en évidence une liste de fichiers lorsque vous parlez du répertoire lui-même.


1
2018-01-17 18:50