Eu tenho um servidor de arquivos doméstico executando o FreeNAS 8. Alguns dias atrás, usei o rsync para carregar toda a minha biblioteca do iTunes do Mac, para que eu pudesse carregar minha biblioteca pela rede em vez de uma unidade USB lenta. Isso funcionou principalmente, e o iTunes funciona muito melhor agora, mas estou tendo problemas para acessar todas as músicas que possuem caracteres não-ascii (notei o problema ao carregar faixas do Queensrÿche). Os arquivos apareceriam no Finder, mas qualquer tentativa de acessá-los os fazia desaparecer até eu me reconectar ao servidor.
Após algumas pesquisas, descobri que isso ocorre porque o OSX usa uma ordem de caracteres UTF diferente do Linux. Os sistemas de arquivos OSX usam o Unicode Normalization Form D (NFD), onde o linux usa o Form C (NFC). O Rsync não converte esses formulários quando executa a cópia do meu mac para o servidor. Agora, quando o iTunes tenta acessar um arquivo com um caractere especial pela rede, os arquivos no servidor têm a codificação incorreta e os relatórios AFPD que não possuem. não existe.
Qual é a melhor maneira de resolver esse problema? É possível fazer com que o rsync execute a conversão unicode enquanto carrega a biblioteca base no servidor? Posso configurar o afpd para transmitir / receber nomes de arquivos no formato NFD? Existe uma solução fácil para alterar os nomes de arquivos no servidor? Encontrei algumas coisas sobre um programa chamado convmv, mas não sei se posso executá-lo no FreeNAS.
Respostas:
Algo que deve funcionar é o sincronismo entre o diretório de origem e o sistema de arquivos remoto montado (SMB, NFS, AFP), que o rsync tratará apenas como sistema de arquivos local.
No entanto, eu não sei o quão bem isso funciona na prática, e você precisa solucionar problemas diferentes, por exemplo, o algoritmo delta-transfer não será usado por padrão (já que a origem e o destino são "locais") (talvez - nenhum arquivo inteiro funcionará?), você deve verificar, por exemplo, se o SMB preserva efetivamente os tempos de modificação, etc.
fonte
Você pode usar a
--iconv
opção do rsync para converter entre UTF-8 NFC e NFD, pelo menos se estiver em um Mac. Há umutf-8-mac
conjunto de caracteres especiais que significa UTF-8 NFD. Portanto, para copiar arquivos do seu Mac para o NAS, você precisa executar algo como: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.
fonte
UTF8-MAC
significa NFD; quando usadoiconv
sozinho, isso fornece um mecanismo genérico para a conversão entre NFC e NFD.brew tap homebrew/dupes && brew install homebrew/dupes/rsync && rehash
rsync: --iconv: unknown option
Atualmente estou usando
rsync --iconv
assim:Copiando arquivos do servidor Linux para a máquina OS X
Você deve executar este comando na máquina OS X :
Copiando arquivos da máquina OS X para o servidor Linux
Você deve executar este comando na máquina OS X :
fonte
Não use o rsync para copiar os arquivos para o seu NAS. Quando você usa o rsync para copiar os arquivos, os nomes dos arquivos serão armazenados no seu NAS no formato UTF NFD (ou seja, o formato OSX), mas o servidor Samba em execução no seu NAS entende apenas os nomes de arquivos no formato UTF NFC. Use a interface CIFS / SMB (Samba) para copiar os arquivos e tudo ficará bem.
fonte
Da minha experiência, eu recomendo usar SMB em vez de ssh. Iconv resolve problemas com a codificação, mas ainda há problemas com caracteres permitidos em sistemas diferentes:
Nome do arquivo original no Mac:
Após copiar por rsync sobre SMB:
Após copiar por rsync sobre ssh (com ant sem flag iconv):
fonte