rsync: comment exclure le répertoire le plus haut


14

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.


Connaissez-vous la syntaxe de cet exemple: cablespeed.xs4all.nl/mediawiki/index.php/… Il vous permet d'inclure des fichiers / répertoires spécifiques à partir d'un répertoire autrement exclu. Vous devrez peut-être utiliser un fichier d'exclusion cependant.
jippie

Ouais. Le problème est que je n'arrive pas à le convaincre d'exclure le répertoire de haut niveau (en particulier). Je n'ai pas eu de problèmes avec le mixage inclus / exclus dans le passé, il semble que le niveau supérieur soit un cas spécial.
Steve Pomeroy

Réponses:


8

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.

rsync -rlptDu -- * server.example.com:/usr/local/directory/

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.


2
Génial merci! Ça marche. Le seul inconvénient de cette technique est qu'elle nécessite que le shell sélectionne tous les fichiers. Si vous avez des tonnes de fichiers dans le répertoire (ce que je n'ai pas dans mon cas), cela peut s'étouffer. Cela pourrait probablement être corrigé en utilisant xargs (mais pas avec les options --delete).
Steve Pomeroy

Un problème que je suis arrivé avec l' aide *était que --deleten'a pas supprimé les fichiers, car ils ne faisaient pas partie de la recherche.
thomasa88

@ thomasa88 Veuillez voir cette réponse .
Kamil Maciorowski
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.