rsync --remove-source-files supprime les fichiers source un par un ou après la fin de rsync?

23

J'ai une commande rsync dans une application qui copie le contenu d'un dossier sur une autre machine. J'ai l'option --remove-source-filesparce que je ne souhaite avoir les fichiers sur la machine de destination qu'après la fin de rsync.

Cependant, je me demandais comment se comportait rsync s'il se bloque ou s'il est interrompu lors du transfert de fichiers?

Considérez que j'ai deux fichiers à synchroniser, aet b. Est-ce que rsync copiera a, puis le supprimera de la source et commencera la copie b, ou attendra-t-il les deux aet bsera copié sur la machine de destination avant de les supprimer tous les deux? J'ai vu que vous pouvez configurer ce comportement lors de la suppression de fichiers superflus avec certains indicateurs, mais je n'en ai trouvé aucun sur la suppression des fichiers source.

brafales
la source
similaire à stackoverflow.com/questions/7380234/… bien que je pense que Kyle peut avoir raison - parfois il semble que rsync attend que tous les fichiers soient terminés, mais parfois il supprime les fichiers avant la fin. Encore un peu confus cependant.
Chris2048

Réponses:

16

La vérification du code rsync révèle que les fichiers source sont supprimés lors de leur envoi, bien que cela ne puisse pas se produire immédiatement. rsync multiplexe ses opérations, de sorte que le message qu'un fichier a été reçu avec succès (et peut donc être supprimé) peut être mis en mémoire tampon derrière d'autres données.

Kyle Jones
la source
2
Selon ma réponse ci-dessous, je l'ai essayé avec quelques fichiers, et les fichiers n'ont été supprimés que si l'opération complète a réussi. Cela me fait penser que le signal "transfert OK" que vous avez trouvé n'est imprégné que lorsque l'opération complète est réussie.
Daniel Andersson
5
Si vous l'essayez avec plus de quelques fichiers, vous verrez des fichiers source disparaître avant que tout le transfert ne soit effectué.
Kyle Jones
il ressemble à cela lors de la spécification des répertoires et de l'option récursive, les fichiers dans un ne sont pas supprimés immédiatement
Andre Holzner
4

Je l'ai essayé (et vous pouvez facilement le faire aussi, bien sûr). Ils sont supprimés une fois tous les fichiers transférés avec succès. Si le transfert est interrompu ou qu'une autre erreur se produit, les fichiers source ne sont pas supprimés, même si certains d'entre eux ont été transférés OK.

EDIT: selon la réponse de Kyle Jones, le cas peut être différent lorsque de nombreux fichiers sont impliqués.

Daniel Andersson
la source