7 votes

Rsync ne copie pas certains fichiers avec des attributs étendus

Je tente de rsynchroniser un volume monté sur le réseau vers mon ordinateur de bureau. Cependant, certains fichiers, mais pas tous, ne sont pas copiés en raison d'une erreur de 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 des attributs étendus se copient sans problème mais d'autres reçoivent l'erreur. Si je n'utilise pas l'option "X", rsync fonctionne mais les attributs étendus ne sont pas conservés.

0 votes

Qu'est-ce qui est différent sur ces fichiers ? juste le .jpg ou d'autres ?

2 votes

Deux suggestions. Tout d'abord, essayez de lire les attributs étendus avec une autre commande, juste pour vous assurer qu'ils fonctionnent bien à l'extérieur. rsync par exemple ls -al@ "/Volumes/Scotts Stuff/Backgrounds/chalkboard-black.jpg" devrait imprimer les noms et les valeurs des attributs pour ce fichier. Est-ce que le nom de l'attribut ou des attributs est correct ? Ensuite, vous pouvez exécuter rsync avec plusieurs paramètres "v" de type 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.

0 votes

J'ai essayé la commande ls -al@ qui affiche les noms et les tailles des attributs étendus. La plupart des attributs étendus font moins de 300 octets, sauf com.apple.ResourceFork qui fait plus de 87k. Les fichiers qui ont été copiés avec rsync ont aussi com.apple.ResourceFork mais ils ne font que 2 octets. Je ne sais pas si la taille de la fourchette de ressources fait partie du problème.

5voto

Rich Points 2429

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

Échec de rsync 2.6.9 standard 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••%

Réalisé rsync 3.1.2 avec 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 :

  • le site -E l'option a été modifiée en -AX (ACL et attributs étendus)
  • l'utilisation de --fake-super pour pouvoir copier le fichier en lecture seule lecture seule

Comment l'utiliser sur différents Macs

Si vous voulez faire un rsync sur un Mac distant, vous devrez appeler explicitement la fonction construite rsync sur le Mac distant avec le --rsync-command option :

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

0 votes

Cela échoue si vous essayez de l'utiliser pour copier une sauvegarde Time Machine, en raison de SIP. apple.stackexchange.com/questions/366577/

0 votes

@dan, tu ne manques pas -M--fake-super sur la dernière commande ? Les pages de manuel de rsync dit : "L'option --fake-super n'affecte que le côté où l'option est utilisée. Pour affecter le côté distant d'une connexion remote-shell, utilisez l'option --remote-option (-M) " - Je sais que la question concerne la lecture de l'attribut étendu mais n'est-il pas également nécessaire de l'écrire du côté distant ?

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X