Recibo un error confuso de rsync y las cosas iniciales que encuentro de las búsquedas web (así como todos los cambios habituales) no lo resuelven:
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]
Parece estar funcionando a pesar de ese error, pero sería bueno deshacerse de eso.
rsync
file-transfer
dreeves
fuente
fuente
Respuestas:
Si
/foo/bar
está en NFS (o posiblemente en algún sistema de archivos FUSE), ese podría ser el problema.De cualquier manera, agregar
-O
/--omit-dir-times
a su línea de comando evitará que intente establecer tiempos de modificación en los directorios.fuente
-O
no ayuda, obviamente. Esto no solía ocurrir cuando mi partición de respaldo era ext3 en lugar de ext4.--no-t
para eliminar la opción implícita.El problema probablemente se deba a que / foo / bar no es propiedad del proceso de escritura en un sistema remoto darwin (OS X). Una solución al problema es establecer un propietario adecuado en el sitio remoto.
Como esta respuesta ha sido votada y, por lo tanto, ha sido útil para alguien, la extiendo para que quede más clara.
La razón por la que esto sucede es que rsync probablemente está tratando de establecer un tiempo de modificación arbitrario (mtime) al copiar archivos.
Para hacer esto, la
utime()
función del sistema de Darwin requiere que el uid efectivo del proceso de escritura sea el mismo que el uid del archivo o el del superusuario, consulte la página de opengroup utime . Verifique esta discusión en la lista de correo rsync como referencia.fuente
/remote/path/to/foo/bar
en el servidor remoto con este comando:rsync -avzP --exclude '.DS_Store' /local/path/to/foo/bar/ [email protected]:/remote/path/to/foo/bar
recibí los mismos mensajes de error que desaparecieron cuando hiceuser1
al propietario de/remoe/path/to/foo/bar
esta manera:$ chown -R user1 /remote/path/to/foo/bar
Como @ racl101 ha comentado una respuesta, este problema podría estar relacionado con el propietario de la carpeta . El comando rsync debe ser realizado por el mismo usuario que el del propietario de la carpeta. Si no es lo mismo, puede cambiarlo.
fuente
El problema en mi caso fue que el "punto de montaje del receptor" estaba montado incorrectamente. Estaba en modo de solo lectura (por alguna extraña razón). Parecía que rsync estaba copiando los archivos, pero no fue así. Revisé mi archivo fstab y cambié las opciones de montaje a las predeterminadas, volví a montar el sistema de archivos y ejecuté rsync nuevamente. Todo bien entonces.
fuente
Yo tuve el mismo problema. Para mí, la solución es eliminar el archivo remoto y dejar de
rsync
crear nuevamente.fuente
He visto ese problema cuando escribo en un sistema de archivos que no maneja (correctamente) los tiempos: creo que SMB comparte o FAT o algo así.
¿Cuál es su sistema de archivos de destino?
fuente
sudo port install rsync
) y se romperá menos. Para verificarlorsync --version
: rsync versión 3.0.5, protocolo versión 30 ... agregar, ACL, xattrs, iconv, symtimes, archivos-flags ... (ACL y xattrs son los más importantes)Puede ser que no tenga privilegios para algunos de los archivos. Desde una cuenta de administrador, intente "sudo rsync -av" Alternativamente, habilite la cuenta raíz e inicie sesión como root. ¡Eso debería permitirle controlar completamente su sistema y forzar su rsync por fuerza bruta! ;-) No estoy seguro de si los atributos --extendidos-mencionados anteriormente ayudarán, pero también lo incluí, solo por si acaso.
fuente
Esto me sucedió en una partición de tipo
xfs (rw,relatime,seclabel,attr2,inode64,noquota)
, donde los directorios pertenecían a otro usuario en un grupo del que ambos éramos miembros. La pertenencia al grupo ya se había establecido antes del inicio de sesión, y toda la estructura del directorio se podía escribir en grupo. Había corrido manualmentesudo chown -R otheruser.group directory
ysudo chmod -R g+rw directory
para confirmar esto.Todavía no tengo idea de por qué no funcionó originalmente, pero tomar posesión de
sudo chown -R myuser.group directory
solucionó. ¿Quizás relacionado con SELinux?fuente
utime()
que funcione. También puede ejecutar como root y hacerlo. Pero si el UID del archivo es diferente, no le permiten cambiar la hora a otra cosa que "ahora".utime()
.Este error también puede aparecer si ejecuta el proceso rsync para archivos que no se han modificado recientemente en el origen o el destino ... porque no puede establecer la hora de los archivos modificados recientemente.
fuente