Erreur rsync: impossible de régler les temps sur “/ foo / bar”: opération non autorisée

Je reçois une erreur déroutante de la part de rsync et les premières choses que je trouve à partir des recherches sur le Web (ainsi que les chmodings habituels) ne le résolvent pas:

rsync: failed to set times on "/foo/bar": Operation not permitted (1) rsync error: some files could not be transferred (code 23) at /SourceCache/rsync/rsync-35.2/rsync/main.c(992) [sender=2.6.9] 

Cela semble fonctionner malgré cette erreur, mais ce serait bien de s’en débarrasser.

    Si /foo/bar est sur NFS (ou éventuellement un système de fichiers FUSE), cela pourrait être le problème.

    Dans tous les cas, l’ajout de -O / --omit-dir-times à votre ligne de commande évitera de tenter de définir des temps de modification sur les répertoires.

    Le problème est probablement dû au fait que / foo / bar n’est pas la propriété du processus d’écriture sur un système darwin (OS X) distant. Une solution au problème consiste à définir le propriétaire adéquat sur le site distant.

    Comme cette réponse a été votée et a donc été utile à quelqu’un, je la prolonge pour la rendre plus claire.

    La raison en est que rsync tente probablement de définir une heure de modification arbitraire (mtime) lors de la copie de fichiers.

    Pour faire fonctionner la fonction system utime () de darwin, le processus d’écriture effectif uid doit être identique à celui du fichier uid ou superutilisateur, voir la page de opengroup utime . Consultez cette discussion sur la liste de diffusion rsync comme référence.

    Le problème dans mon cas était que le “sharepoint assembly du récepteur” était mal monté. Il était en lecture seule (pour des raisons d’extrange). Il semblait que rsync copiait les fichiers, mais ce n’était pas le cas. J’ai vérifié mon fichier fstab et modifié les options de assembly par défaut, remonté le système de fichiers et exécuté à nouveau rsync. Tout va bien alors.

    J’ai vu ce problème quand j’écris sur un système de fichiers qui ne gère pas (correctement) les temps – je pense aux partages SMB ou FAT ou quelque chose.

    Quel est votre système de fichiers cible?

    Il se peut que vous n’ayez pas de privilèges sur certains fichiers. Depuis un compte administrateur, essayez “sudo rsync -av” Sinon, activez le compte root et connectez-vous en tant que root. Cela devrait vous permettre de tendre complètement votre système et de forcer brutalement votre rsync! 😉 Je ne suis pas sûr que les –extended-atsortingbutes mentionnés ci-dessus aideront, mais je l’ai jeté aussi, juste pour faire bonne mesure.

    Cela m’est arrivé sur une partition de type xfs (rw,relatime,seclabel,attr2,inode64,noquota) , où les répertoires appartenaient à un autre utilisateur du groupe dont nous étions tous les deux membres. L’appartenance au groupe était déjà établie avant la connexion, et toute la structure du répertoire était accessible en écriture par groupe. J’avais manuellement lancé le sudo chown -R otheruser.group directory et le sudo chown -R otheruser.group directory sudo chmod -R g+rw directory pour le confirmer.

    Je n’ai toujours aucune idée de la raison pour laquelle cela n’a pas fonctionné à l’origine, mais en prenant possession avec sudo chown -R myuser.group directory corrigé. Peut-être lié à SELinux?

    Cette erreur peut également apparaître si vous exécutez le processus rsync pour les fichiers qui n’ont pas été modifiés récemment dans la source ou la destination … car il ne peut pas définir l’heure pour les fichiers récemment modifiés.