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-files
parce 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, a
et b
. Est-ce que rsync copiera a
, puis le supprimera de la source et commencera la copie b
, ou attendra-t-il les deux a
et b
sera 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.
la source
Réponses:
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.
la source
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.
la source