Donc, j'ai un problème apparemment simple, mais jusqu'à présent, je n'ai pas trouvé de solution: je veux exclure le répertoire le plus haut d'un rsync, tout en synchronisant tous ses enfants. Le problème particulier est que je n'ai pas la permission de modifier les heures du répertoire le plus haut, mais je veux que tous les enfants aient des heures correctement synchronisées.
La commande rsync que j'utilise est la suivante:
rsync --exclude ./ -rlptDu ./ server.example.com:/usr/local/directory/
et server.example.com:/usr/local/directory/
ressemble à ceci:
drwxrws--- 5 root staff 24576 Jul 9 15:00 .
(mon utilisateur local est membre de staff
)
Lorsque j'exécute rsync, j'obtiens l'erreur suivante:
rsync: failed to set times on "/usr/local/directory/.": Operation not permitted (1)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1070) [sender=3.0.9]
make: *** [pub_to_mel_internal] Error 23
Il s'agit de la version 3.0.9 sur la machine locale et 3.0.7 sur la machine distante, les deux machines exécutant Debian.
Réponses:
Je pense que les règles de filtrage de rsync ne peuvent pas correspondre au répertoire de haut niveau, il est donc toujours synchronisé. Une solution de contournement consiste à synchroniser tous les fichiers à l'intérieur de ce répertoire au lieu du répertoire lui-même.
Ajoutez
.[!.]*
après*
si vous avez des fichiers de points dans le répertoire le plus haut et..?*
si vous avez des noms de fichiers commençant par deux points.la source
*
était que--delete
n'a pas supprimé les fichiers, car ils ne faisaient pas partie de la recherche.