J'ai un dossier a/ et un dossier distant A/. Je lance maintenant quelque chose comme ceci sur un Makefile :
get-music:
rsync -avzru server:/media/10001/music/ /media/Incoming/music/
put-music:
rsync -avzru /media/Incoming/music/ server:/media/10001/music/
sync-music: get-music put-music
quand je fais sync-music, il récupère d'abord toutes les diffs du serveur vers le local et ensuite l'inverse, en envoyant toutes les diffs du local vers le serveur.
Cela ne fonctionne très bien que s'il n'y a que des mises à jour ou de nouveaux fichiers dans le futur. S'il y a des suppressions, cela ne fait rien.
Dans rsync, il existe des options --delete et --delete-after qui permettent d'accomplir ce que je veux, mais le problème est que cela ne fonctionne pas sur une synchronisation à deux voies.
Si je veux supprimer les fichiers du serveur sur un syn, lorsque les fichiers locaux ont été supprimés, cela fonctionne, mais si, pour une raison quelconque (expliquée après), j'ai des fichiers qui ne sont pas dans le serveur mais existent localement et qu'ils ont été supprimés, je veux que ce soit localement qui les supprime et non pas copiés sur le serveur (comme cela arrive).
Le problème est que j'ai 3 machines en contexte :
- bureau
- ordinateur portable
- serveur domestique
Ainsi, il arrive que le serveur contienne des fichiers qui ont été supprimés lors d'une synchronisation de l'ordinateur portable, par exemple, et lorsque je lance une synchronisation avec mon ordinateur de bureau (sur lequel les fichiers supprimés du serveur existent toujours), je veux que ces fichiers soient supprimés et ne soient pas recopiés sur le serveur.
Je suppose que cela n'est possible qu'avec une base de données et un suivi des opérations :P
Y a-t-il des solutions plus simples ? Merci.