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
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:
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).
ssh -vv test.desktop "touch /dept/intranet/dept/atest/f1/test"
)ssh -vv [email protected] "touch /dept/intranet/dept/atest/f1/test"
)Exécutez votre commande avec l'option -v
, pour verbose.
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
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.