Je veux utiliser rsync pour sauvegarder mon serveur Ubuntu avec un disque résidant sur un Mac. Mais je ne le fais pas fonctionner correctement, car chaque fois que je réexécute l'opération rsync après l'heure initiale, les fichiers avec des caractères spéciaux sont d'abord supprimés puis resynchronisés. Il semble qu'il y ait un problème avec différents jeux de caractères.
La solution préférée semble être d'utiliser l' --iconv
option:
Vous pouvez utiliser l'option --iconv de rsync pour convertir entre UTF-8 NFC et NFD, au moins si vous êtes sur un Mac. Il existe un jeu de caractères spécial utf-8-mac qui signifie UTF-8 NFD. Donc, pour copier des fichiers de votre Mac vers votre NAS, vous devez exécuter quelque chose comme:
rsync -a --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/
Cela convertira tous les noms de fichiers locaux de UTF-8 NFD en UTF-8 NFC sur le serveur distant. Le contenu des fichiers ne sera pas affecté.
Grâce à @Jan, j'ai mis à jour ma version rsync sur mon mac à partir de 2.6.9. à 3.1.1. Pourtant, je ne suis toujours pas tout à fait là, car je reçois maintenant une autre erreur:
iconv_open("UTF-8", "utf-8-mac") failed
rsync error: requested action not supported (code 4) at rsync.c(118) [sender=3.0.9]
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.1]
Je ne comprends pas pourquoi "l'action demandée n'est pas prise en charge" car il semble que la version rsync sur mon Ubuntu (12.04) soit post 3.xx, et devrait donc prendre en charge l' --iconv
option.
EDIT: Permettez-moi d'ajouter que lorsque je (sur le Mac, nota bene) lance une rsync du Mac vers Linux, tout fonctionne à merveille:
rsync -av --delete --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/
Mais aller dans l'autre sens »à partir du mac ne fonctionne pas. Curieusement, les tests pour lancer la rsync à partir de la machine linux rendent ce message étrange:
rsync: on remote machine: --iconv=UTF-8-MAC: unknown option
rsync error: syntax or usage error (code 1) at /SourceCache/rsync/rsync-45/rsync/main.c(1333) [server=2.6.9]
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
y compris la déclaration très étrange [server=2.6.9]
, bien que j'ai mis à jour la 3.1.1 sur Mac. Pour certaines raisons, il semble que ma machine Linux ne «voit» que la version rsync d'origine sur le Mac.
Une suggestion sur la façon de résoudre ce problème?
Je peux confirmer que cela fonctionne, j'avais le même problème. Dans mon cas, tout fichier avec un caractère accentué était illisible sur la destination. Je ne l'ai repéré qu'en exécutant une comparaison de dossiers sur mon Mac en utilisant l'application Compare Folders: https://itunes.apple.com/gb/app/compare-folders/id816042486?mt=12
Ajout de --iconv = utf-8-mac, utf-8 et BOOM ci-dessus! rsync a remplacé chaque fichier accentué par un nouveau.
Pour ajouter des informations car il semble que les liens ci-dessus ne fonctionnent plus, pour mettre à niveau rsync vers 3.1.2, installez Macports et exécutez: sudo port install rsync
La raison pour laquelle vous voyiez le serveur distant renvoyer la version 2.6.9 est que l'ancienne version est toujours là et que le serveur distant voit celle-ci au lieu de la nouvelle.
La version 2.6.9 se trouve dans / usr / bin
la source