Quero usar o rsync para fazer backup do meu servidor Ubuntu com um disco localizado em um Mac. Mas não consigo que funcione corretamente, pois toda vez que executo novamente a operação rsync após a hora inicial, os arquivos com caracteres especiais são primeiro excluídos e depois sincronizados novamente. Parece que há um problema com diferentes conjuntos de caracteres.
A solução preferida parece ser usar a --iconv
opção:
Você pode usar a opção --iconv do rsync para converter entre UTF-8 NFC e NFD, pelo menos se estiver em um Mac. Há um conjunto de caracteres utf-8-mac especial que significa UTF-8 NFD. Portanto, para copiar arquivos do seu Mac para o NAS, você precisa executar algo como:
rsync -a --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/
Isso converterá todos os nomes de arquivos locais de UTF-8 NFD para UTF-8 NFC no servidor remoto. O conteúdo dos arquivos não será afetado.
Graças a @Jan, atualizei minha versão rsync no meu mac a partir da 2.6.9. a 3.1.1. Ainda assim, ainda não estou lá, pois agora recebo mais um erro:
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]
Estou sem entender por que "a ação solicitada não é suportada", pois parece que a versão rsync no meu Ubuntu (12.04) está na versão 3.xx e, portanto, deve suportar a --iconv
opção.
EDIT: Permitam-me acrescentar que quando eu (no Mac, nota bene) inicio um rsync DO Mac para o Linux, tudo funciona esplendidamente:
rsync -av --delete --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/
Mas ir para o outro lado 'do mac não funciona. Estranhamente, testar para iniciar o rsync a partir da máquina linux gera essa mensagem estranha:
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]
incluindo a afirmação muito estranha [server=2.6.9]
, embora eu tenha atualizado para 3.1.1 no Mac. Por algumas razões, parece que minha máquina linux 'vê' apenas a versão rsync original no Mac.
Alguma sugestão sobre como resolver isso?