229 votes

Erreur rsync : échec de la mise en place des temps sur "/foo/bar" : Opération non autorisée

Je reçois une erreur déroutante de rsync et les premières choses que je trouve en faisant des recherches sur le web (ainsi que tous les chmod'ing 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]

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

0 votes

Non, juste un répertoire normal pour autant que je puisse dire.

0 votes

Je viens de rencontrer un problème similaire, bien que mon code d'erreur soit 22 : rsync : failed to set times on ... Argument non valide (22). Après quelques vérifications, il s'avère que mes fichiers étaient datés comme ayant été modifiés pour la dernière fois en 1956 ! Solution : toucher tous les fichiers, problème résolu :) "find . -print0 | xargs -0 touch "

0 votes

Je trouve que si vous avez également mis en place une tâche cron vers la même destination, cette erreur apparaîtra. Changer l'heure de la tâche cron (crontab) peut aider à contourner ce problème. Dans mon cas, je n'obtiens cette erreur que si je fais un rysnc manuel si j'ai également mis en place une tâche cron.

1voto

David Wolever Points 34304

J'ai rencontré ce problème lorsque j'écris sur un système de fichiers qui ne gère pas (correctement) les temps - je pense aux partages SMB ou FAT ou autre.

Quel est votre système de fichiers cible ?

0 votes

Je suis sur un mac, en rsync'ing vers linux (une machine slicehost).

0 votes

Ah, étrange... Puisque tu utilises rsync sur le Mac, je dois te prévenir : il ne préserve pas correctement tous les attributs de fichiers OS X, donc de mauvaises choses peuvent arriver. Voir, par exemple : blog.plasticsfuture.org/2006/04/23/mac-backup-software-harmful

0 votes

Vous pouvez toutefois utiliser la version la plus récente de MacPorts ( sudo port install rsync ) et il se cassera moins. Pour le vérifier : rsync --version rsync version 3.0.5 protocole version 30 ... append, ACLs, xattrs, iconv, symtimes, file-flags ... (ACLs et xattrs sont les plus importants)

0voto

Sam Brightman Points 520

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

Je n'ai toujours aucune idée de la raison pour laquelle ça n'a pas fonctionné à l'origine, mais en prenant le contrôle avec sudo chown -R myuser.group directory C'est réparé. Peut-être lié à SELinux ?

0 votes

La page du manuel indique que l'UID de l'application doit correspondre à l'UID du fichier pour que l'application puisse être utilisée. utime() pour travailler. Vous pouvez aussi vous exécuter en tant que Root et le faire. Mais si l'UID du fichier est différent, ils ne vous laissent pas changer l'heure autrement que par "maintenant".

0 votes

Pouvez-vous établir un lien vers une telle page de manuel ? Aucune des miennes ne mentionne utime() .

1 votes

linux.die.net/man/2/utime Le paragraphe pertinent : "La modification des horodatages est autorisée lorsque : soit le processus dispose des privilèges appropriés, soit l'ID utilisateur effectif est égal à l'ID utilisateur du fichier, soit times est NULL et le processus dispose des droits d'écriture sur le fichier."

0voto

Gurdeep Singh Points 69

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

-1voto

captain Points 17

Il se peut que vous n'ayez pas les privilèges de certains fichiers. À partir d'un compte administrateur, essayez "sudo rsync -av". Sinon, activez le compte Root et connectez-vous en tant que Root. Cela devrait vous permettre de vider complètement votre système et de forcer votre rsync ;-) Je ne suis pas sûr que le --extended-attributes mentionné ci-dessus soit utile, mais je l'ai ajouté aussi, juste pour faire bonne mesure.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X