Rsync autorise-t-il la synchronisation des fichiers dans les deux sens?

25

J'ai sauvegardé un serveur Web Linux en utilisant rsync avec cygwin. J'ai maintenant une copie parfaite du serveur sur mon ordinateur portable Windows. Si je supprime ou modifie un fichier sur mon ordinateur portable et réexécute rsync avec cygwin, supprimera-t-il / mettra-t-il à jour le même fichier sur le serveur? Im sous l'impression que si je supprime / modifie sur le serveur et exécute rsync sur mon ordinateur portable, il supprimera / modifiera le fichier local sur mon ordinateur portable mais cela fonctionne-t-il en sens inverse?

Dan Hastings
la source
12
Ce n'est pas une réponse à votre question, mais vous devriez y jeter un œil unison. Il s'agit d'un outil de synchronisation qui enregistre l'état des fichiers sur les deux copies et permet ainsi une synchronisation bidirectionnelle. Il existe également un package cygwin.
Dubu

Réponses:

29

Rsync effectue une synchronisation unidirectionnelle, mais c'est à vous de décider dans quelle direction la synchronisation se déroule.

La syntaxe de la commande Rsync est la suivante:

rsync [OPTION...] SRC... [DEST]

Notez que vous spécifiez la synchronisation de la source à la destination. La source et la destination peuvent être n'importe quel chemin local ou distant.

Par exemple, si vous souhaitez copier des fichiers de votre serveur vers votre ordinateur portable, vous devez:

rsync [OPTION...] <server-path> <laptop-path>

Pour synchroniser dans la direction opposée, vous effectuez:

rsync [OPTION...] <laptop-path> <server-path>

Donc, pour répondre à votre question: cela dépend de la façon dont vous exécutez rsync.

Si vous souhaitez que les fichiers soient supprimés sur la destination, vous devez utiliser l' --deleteoption. Mais soyez prudent, car si vous faites une erreur en spécifiant votre source, vous finirez par tout supprimer sur votre destination. Il est plus sûr de tester votre synchronisation sans --deleteoption en premier et une fois que vous êtes satisfait de son fonctionnement, vous pouvez ajouter une --deleteoption.

Comme suggéré par masegaloeh dans les commentaires ci-dessous, -nou l' --dry-runoption peut également être utilisée pour tester rsyncle comportement des commandes.

grekasius
la source
9
Remarque supplémentaire: Pour tester le comportement de rsync, vous pouvez utiliser le paramètre -nou --dry-run, afin que vous sachiez quel fichier sera supprimé et modifié
masegaloeh
1

Un outil wrapper écrit en python3 appelé bsyncwraps findet rsynccommande simplifie la tâche. Repo Github: https://github.com/dooblem/bsync

N'ayez pas peur quand il est sur github (c'est-à-dire d'une manière que vous pensez que vous devez être un programmeur pour utiliser l'outil).

biocyberman
la source
-1

pensez à utiliser --delete-after et non --delete, cela garantira que votre destinataire recevra les fichiers supprimés après le transfert, pas avant.

Moti
la source
Je suppose que les votes négatifs sont dus au fait que l'OP n'essaie pas de rsyncsupprimer quoi que ce soit. Il supprime des choses par lui-même. Cela dit, un conseil utile pour la synchronisation en général. Merci.
harperville