web-dev-qa-db-fra.com

rsync: échec de la définition de l'heure sur "<chemin du répertoire>"

J'essaye de rsyncier des fichiers d'un serveur à un autre mais j'obtiens cette erreur

rsync: échec de la définition des heures dans "/ dept/intranet/dept/atest /.": opération non autorisée (1)

Quelqu'un peut m'aider pourquoi alors?

Je suppose que c'est un problème d'autorisations.

Ceci est ma commande:

RSYNC=/usr/bin/rsync
SSH=/usr/bin/ssh
REMOTE_Host=test.desktop

${RSYNC} -crlt -e ${SSH} ${LOCAL_DIR} ${REMOTE_Host}:${REMOTE_DIR}

LOCAL_DIR = workplace1/f1/
permissions drwxr-xr-x   11 root     root         4096 Mar 19  2009 f1

REMOTE_DIR=/dept/intranet/dept/atest/f1/
permissions :drwxr-xr-x 14 dbld   a1     4096 Mar 19  2009 f1     
19
TopCoder

Juste pour que nous soyons sur la même page:

-r recursive
-l preserve links
-c sync based on file checksum
-t preserve modification times

Puis deux choses:

C'est juste un truc de système de fichiers

Si le dossier de destination est un montage NFS, ou un système de fichiers qui ne gère pas bien les temps de modification, il se rompt.

Essayez d’ajouter le paramètre -O (pour --omit-dir-times) à votre commande.

Les temps de modification seront conservés, mais omis pour les répertoires:

${RSYNC} -crlOt -e ${SSH} ${LOCAL_DIR} ${REMOTE_Host}:${REMOTE_DIR}

C’est ma meilleure hypothèse, car la synchronisation de fichiers semble fonctionner et que votre erreur se produit lors de la synchronisation du temps de modification. Quoi qu'il en soit, avez-vous vraiment besoin de préserver les temps de modification? L'option -c ignore les fichiers en fonction de la somme de contrôle (les temps de modification importent donc peu).

Ou c'est, en fait, un problème de permission

  • l'utilisateur qui exécute le script dispose-t-il d'assez de privilèges pour modifier/écrire le dossier de destination? (essayez ssh -vv test.desktop "touch /dept/intranet/dept/atest/f1/test")
  • est-ce que l'utilisateur qui exécute le script est "le Right One ™" (essayez ssh -vv [email protected] "touch /dept/intranet/dept/atest/f1/test")

Aucune de ces réponses

Exécutez votre commande avec l'option -v, pour verbose.

24
Brian Clozel

Ajoutez - O ( - omit-dir-times ) à votre ligne de commande pour l’éviter de tenter de définir des temps de modification sur les répertoires.

Lisez également ceci: https://stackoverflow.com/questions/667992/rsync-error-failed-to-set-times-on-foo-txt-operation-not-permitted

5
gavenkoa

Dans mon cas, j'ai résolu le problème en accordant des autorisations sur le répertoire parent où la synchronisation a eu lieu.

En réalité, le propriétaire du répertoire parent était autre que l'utilisateur effectuant la synchronisation.

1
Matías