rsync: échec de la définition des heures sur «<chemin d'accès dir>»

20

J'essaie de rsync les fichiers d'un serveur à un autre mais j'obtiens cette erreur

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

Quelqu'un peut-il m'aider pourquoi?

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

Voici 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     
TheVillageIdiot
la source
pourriez-vous nous donner plus d'informations? * votre commande rsync * utilisateur local + distant * autorisations de fichier
Brian Clozel
édité la question.

Réponses:

26

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

Ensuite 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 heures de modification, il se casse.

Essayez d'ajouter le paramètre -O(for --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 estimation, car la synchronisation des fichiers semble fonctionner et votre erreur se produit lors de la synchronisation de l'heure du mod. Quoi qu'il en soit, avez-vous vraiment besoin de conserver les temps de modification ? L' -coption ignore les fichiers en fonction de la somme de contrôle (donc les heures de modification n'ont pas d'importance).

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

  • L'utilisateur exécutant le script dispose-t-il de privilèges suffisants pour modifier / écrire le dossier de destination? (essayez ssh -vv test.desktop "touch /dept/intranet/dept/atest/f1/test")
  • est-ce que l'utilisateur exécutant le script est "the 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' -voption, pour verbose.

Brian Clozel
la source
1
Merci pour l' --omit-dir-timesastuce. Aide vraiment.
JakeGould
1

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 fait, le propriétaire du répertoire parent était autre que l'utilisateur effectuant la synchronisation.

Matías
la source