Rsync ne copie pas certains fichiers avec des attributs étendus

4

J'essaie de rynchroniser un volume monté sur le réseau sur mon bureau. Cependant, certains fichiers, mais pas tous, ne sont pas copiés à cause d'une erreur rsync. J'utilise rsync 3.1.1 de Brew. J'utilise cette commande:

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

Cependant, je reçois cette erreur pour certains des fichiers:

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

Des idées? Certains fichiers avec attributs étendus copient très bien, mais certains reçoivent l’erreur. Si je laisse l'option "X" alors rsync fonctionne mais bien sûr les attributs étendus ne sont pas conservés.

Scott Walter
la source
quoi d'autre est différent sur ces fichiers? juste le .jpg ou les autres?
Ruskes
2
Deux suggestions Commencez par lire les attributs étendus avec une autre commande pour vous assurer qu'ils fonctionnent bien en dehors, rsyncpar exemple, ls -al@ "/Volumes/Scotts Stuff/Backgrounds/chalkboard-black.jpg"si vous souhaitez afficher les noms et les valeurs des attributs pour ce fichier. Cela renvoie-t-il le nom du ou des attributs? Deuxièmement, vous pouvez exécuter rsync avec plusieurs paramètres "v" verbeux pour obtenir plus de détails sur l'erreur rsync -aXvvv /Volumes/Scotts\ Stuff/Backgrounds ~/Desktop/Temp. Cela pourrait vous aider à identifier la source du problème.
Alistair McMillan,
J'ai essayé la commande ls -al @ pour imprimer les noms et les tailles des attributs étendus. La plupart des attributs étendus ont une longueur inférieure à 300 octets, à l'exception de com.apple.ResourceFork qui dépasse 87k. Les fichiers copiés avec rsync ont aussi com.apple.ResourceFork mais ils ne ressemblent qu’à 2 octets. Je ne sais pas si la taille de la fourchette de ressources fait partie du problème.
Scott Walter
Un point que je n'avais pas mentionné à l'origine est que le volume de réseau en question est un volume de Synology NAS. Je ne sais pas si le fait d'être un mont SMB a quelque chose à voir avec cela.
Scott Walter

Réponses:

3

Le problème que j'ai reproduit sur de nombreuses versions de MacOS X (Mountain Lion, Mavericks, Yosemite, El Capitan) qui utilisent une version trop ancienne de rsync(2.6.9) et des versions plus récentes construites avec Macports (3.x) est résolu avec la version 3.1.2.

Rsync 2.6.9 standard MacOS X → échec

••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••%

Construit rsync 3.1.2 → succès

••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 détails clés à noter:

  • l' -Eoption changée en -AX(ACL et attributs étendus)
  • l'utilisation de --fake-superpour pouvoir copier un fichier dans des répertoires en lecture seule

Comment l'utiliser sur différents Mac

Si vous voulez créer un rsync sur un Mac distant, vous devrez appeler explicitement le construit rsyncsur le Mac distant avec l' --rsync-commandoption:

/opt/local/bin/rsync -avAX --fake-super --rsync-command=/opt/local/bin/rsync example remote_MAC:/tmp/example2 
dan
la source
Cela échoue si vous essayez de l'utiliser pour copier une sauvegarde Time Machine, en raison de SIP. apple.stackexchange.com/questions/366577/…
WGroleau