Supprimez les files sur la destination qui se trouvent dans la source en utilisant rsync

Je me demandais s'il y avait un moyen de supprimer tous les files dans la destination en utilisant rsync qui se trouvent dans la source. J'ai 30+ dir dans la source et plus de 100 files sur la destination

Je veux seulement les 30+ dans la destination à supprimer récursivement se requestr si rsync ou tout autre m'aiderait à faire cela …

La source

 a/ b/ c/ 

destination

 a/ abc/ xyz/ b/ c/ ... 

Je ne pense pas que rsync peut le faire, mais vous pouvez faire une list de files, modifier cette list et la copyr en tant que script vers la destination.

En supposant que vos noms de files ne contiennent pas de nouvelles lignes ou de guillemets simples ( ' ), exécutez ceci sur la machine source:

 cd basedir find . -type f | sed 's/^/rm -f '\''/' | sed 's/$/'\''/' > /var/tmp/to_remove 

puis copyz le file to_remove sur la machine de destination, cd dans le directory de base, puis searchz-le. Tous les files qui n'existent pas, mais qui sont dans la list, n'auront aucun effet, et les autres uniquement disponibles dans la destination ne seront pas touchés.

Si vous voulez également supprimer des directorys, vous pouvez utiliser un autre, mais cela supprime les directorys existants dans la source et sont vides dans la destination, qu'il y ait ou non des files supprimés du directory.

 find . -depth -type d | sed 's/^/rmdir -f '\''/' | sed 's/$/'\''/' > /var/tmp/to_remove 
 cd a find . -type f -print0 | ssh ${server_name} "cd $path_to_b;cat | xargs -0 rm" ssh ${server_name} "find ${path_to_b} -empty -type d -delete" 

Vous obtiendrez des messages d'erreur pour les files dans un qui n'existe pas sur b. La deuxième command supprime les dossiers vides sur la destination.