7 votos

Rsync no copia algunos archivos con atributos extendidos

Estoy intentando rsync desde un volumen montado en red a mi escritorio. Sin embargo, algunos pero no todos los archivos no se copian debido a un error de rsync. Estoy usando rsync 3.1.1 de Brew. Estoy usando este comando:

rsync -aXv  /Volumes/Scotts\ Stuff/Backgrounds ~/Desktop/Temp

Sin embargo, recibo este error para algunos de los archivos:

get_xattr_data: lgetxattr(""/Volumes/Scotts Stuff/Backgrounds/chalkboard-black.jpg"","com.apple.ResourceFork",88644) returned 65536

¿Alguna idea? Algunos archivos con atributos extendidos se copian sin problemas, pero otros reciben el error. Si dejo de lado la opción "X", rsync funciona, pero por supuesto los atributos extendidos no se conservan.

0 votos

¿Qué más hay de diferente en esos archivos? ¿Sólo el .jpg o los otros?

2 votos

Dos sugerencias. En primer lugar, intente leer los atributos extendidos con otro comando sólo para asegurarse de que funcionan bien fuera rsync por ejemplo ls -al@ "/Volumes/Scotts Stuff/Backgrounds/chalkboard-black.jpg" debería imprimir los nombres y valores de los atributos de ese archivo. ¿Devuelve el nombre del atributo(s) bien? En segundo lugar, puedes ejecutar rsync con múltiples parámetros verbose "v" para que te dé más detalles sobre el error, así rsync -aXvvv /Volumes/Scotts\ Stuff/Backgrounds ~/Desktop/Temp . Eso podría ayudarte a identificar el origen del problema.

0 votos

He probado el comando ls -al@ que imprime los nombres y tamaños de los atributos extendidos. La mayoría de los atributos extendidos tienen menos de 300 bytes de longitud, excepto com.apple.ResourceFork que tiene más de 87k. Los archivos que se copiaron con rsync también tienen com.apple.ResourceFork pero son como sólo 2 bytes. No sé si el tamaño del fork de recursos es parte del problema.

5voto

Rich Puntos 2429

El problema lo he reproducido en muchas versiones de MacOS X (Mountain Lion, Mavericks, Yosemite, El Capitan) que utilizan una versión demasiado antigua de rsync (2.6.9) y con versiones más recientes construidas con Macports (3.x) se soluciona con la versión 3.1.2.

Fallo estándar de rsync 2.6.9 de MacOS X

••On_my_Mac••% /usr/bin/rsync -avE example example2
building file list ... done
._example
example/color-profile-1
example/._color-profile-1
example/index.xml.gz
example/Contents/
rsync: recv_generator: mkdir "/Users/Shared/tmp/example2/example/Contents" failed: Permission denied (13)
*** Skipping everything below this failed directory ***
example/QuickLook/
rsync: recv_generator: mkdir "/Users/Shared/tmp/example2/example/QuickLook" failed: Permission denied (13)
*** Skipping everything below this failed directory ***
rsync: mkstemp "/Users/Shared/tmp/example2/example/.color-profile-1.zFdjjF" failed: Permission denied (13)
rsync: mkstemp "/Users/Shared/tmp/example2/example/.._color-profile-1.ySmazZ" failed: Permission denied (13)
rsync: mkstemp "/Users/Shared/tmp/example2/example/.index.xml.gz.zB0WUl" failed: Permission denied (13)
copyfile(/dev/null, example/Contents, COPYFILE_METADATA) failed:2
copyfile(/dev/null, example/QuickLook, COPYFILE_METADATA) failed:13

sent 157793 bytes  received 120 bytes  315826.00 bytes/sec
total size is 461293  speedup is 2.92
rsync error: some files could not be transferred (code 23) at /SourceCache/rsync/rsync-45/rsync/main.c(992) [sender=2.6.9]
••On_my_Mac••%

Construido rsync 3.1.2 éxito

••On_my_Mac••% type rsync
rsync is /opt/local/bin/rsync
••On_my_Mac••% rsync --version
rsync  version 3.1.2  protocol version 31
Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, xattrs, iconv, symtimes, no prealloc, file-flags,
    HFS-compression

rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU
General Public Licence for details.
••On_my_Mac••%

••On_my_Mac••% /usr/bin/sudo rm -rf example2
••On_my_Mac••% /opt/local/bin/rsync -avAX --fake-super example example2
sending incremental file list
created directory example2
example/
example/color-profile-1
example/index.xml.gz
example/Contents/
example/Contents/PkgInfo
example/QuickLook/
example/QuickLook/Preview.pdf
example/QuickLook/Thumbnail.jpg

sent 462,152 bytes  received 167 bytes  924,638.00 bytes/sec
total size is 461,293  speedup is 1.00
••On_my_Mac••%

2 detalles clave a tener en cuenta:

  • el -E opción cambiada a -AX (ACL y atributos ampliados)
  • el uso de --fake-super para poder copiar archivos dentro de directorios de sólo lectura directorios

Cómo utilizarlo en diferentes Macs

Si quieres hacer un rsync en un Mac remoto, tendrás que llamar explícitamente al programa rsync en el Mac remoto con el --rsync-command opción:

/opt/local/bin/rsync -avAX --fake-super --rsync-command=/opt/local/bin/rsync example remote_MAC:/tmp/example2

0 votos

Esto falla si intentas usarlo para copiar una copia de seguridad de Time Machine, debido al SIP. apple.stackexchange.com/questions/366577/

0 votos

@dan no te falta -M--fake-super ¿en el último comando? Las páginas man de rsync dice: "La opción --fake-super sólo afecta al lado donde se utiliza la opción. Para afectar al lado remoto de una conexión de shell remoto, utilice la opción --remote-option (-M) " - Sé que la pregunta es sobre la lectura del atributo extendido, pero ¿no es necesario también escribirlo en el extremo remoto?

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X