rsync: no se pudo establecer la hora en "<dir ruta>"

20

Estoy tratando de sincronizar archivos de un servidor a otro pero obtengo este error

rsync: error al establecer tiempos en "/ dept / intranet / dept / atest /.": Operación no permitida (1)

¿Alguien puede ayudarme por qué?

Supongo que es un problema de permisos.

Este es mi comando:

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
fuente
¿podría darnos más información? * su comando rsync * usuario local + remoto * permisos de archivo
Brian Clozel
editado la pregunta.

Respuestas:

26

Solo para que estemos en la misma página:

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

Entonces dos cosas:

Es solo una cosa del sistema de archivos

Si la carpeta de destino es un montaje NFS, o algún sistema de archivos que no maneja bien los tiempos de modificación, entonces se rompe.

Intente agregar el parámetro -O(for --omit-dir-times) a su comando.

Los tiempos de modificación se conservarán, pero se omitirán para los directorios:

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

Esta es mi mejor suposición, ya que la sincronización de archivos parece funcionar, y su error ocurre en la sincronización de mod time. De todos modos, ¿realmente necesita preservar los tiempos de modificación ? La -copción omitir archivos en función de la suma de comprobación (por lo que los tiempos de modificación no importan).

O es, en realidad, un problema de permiso

  • ¿El usuario que ejecuta el script tiene suficientes privilegios para editar / escribir la carpeta de destino? (prueba ssh -vv test.desktop "touch /dept/intranet/dept/atest/f1/test")
  • hace el usuario que ejecuta la secuencia de comandos es "el más adecuado ™" (TRY ssh -vv [email protected] "touch /dept/intranet/dept/atest/f1/test")

Ninguna de las anteriores

Ejecute su comando con la -vopción, para verbose.

Brian Clozel
fuente
1
Gracias por el --omit-dir-timesconsejo. Realmente ayuda.
JakeGould
1

En mi caso, he resuelto el problema otorgando permisos en el directorio principal donde se realizó la sincronización.

En realidad, el propietario del directorio principal no era el usuario que hacía la sincronización.

Matías
fuente