Unicode (non-ascii) interoperabilidade de nome de arquivo entre linux e windows

3

Eu tenho esse problema e não tenho certeza de onde o problema está no cliente, no servidor ou em ambos. Eu apreciarei qualquer ajuda para diagnosticar e resolver isso.

Eu tenho uma caixa Linux remota rodando o debian, que faço download de arquivos e pastas regularmente para uma caixa do Windows 8. Na maioria das vezes isso simplesmente funciona. Estou usando um gerenciador de downloads que permite o download multi-thread para acelerar o processo.

No entanto, em um pequeno número de casos, os nomes de arquivos no linux possuem caracteres não ascii. Meu gerenciador de downloads (GetRight, bastante antigo) faz o download deles mutilado. Eu estava pensando que é problema do GetRight desde, em putty quando eu ssh para o servidor e no WinSCP os nomes de arquivo parecem corretos e WinSCP baixá-los na perfeição (embora, infelizmente, não na maneira multi-thread).

Mas então eu tentei me conectar ao servidor com o ftp.exe no windows, e os nomes dos arquivos também ficaram confusos.

Agora eu decidi, que apenas ligo os arquivos no servidor e os baixo dessa maneira. Mas isso também não funcionou. Por exemplo, no linux eu tenho:

[jade ~/tmp] ls
тестовый
[jade ~/tmp] tar -czf ../data.tar.gz .
[jade ~/tmp]

Agora eu faço o download do data.tar.gz no Windows e tento descompactá-lo:

E:\!2>7z x data.tar.gz

7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18

Processing archive: data.tar.gz

Extracting  data.tar

Everything is Ok

Size:       10240
Compressed: 168

E:\!2>7z l data.tar

7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18

Listing archive: data.tar

--
Path = data.tar
Type = tar
Physical Size = 10240
Headers Size = 9728

   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
2013-01-21 17:00:10 D....            0            0  .
2013-01-21 17:00:10 .....            2          512  .\╤В╨╡╤Б╤В╨╛╨▓╤Л╨╣
------------------- ----- ------------ ------------  ------------------------
                                     2          512  1 files, 1 folders

Como você pode ver mesmo se excluir um agente de transferência (como ftp client / server) da equação, o problema ainda persistirá.

Eu gostaria de me concentrar no último cenário com compactação de tarefas no servidor e descompactar o cliente e fazê-lo funcionar.

Alguém pode me explicar por que estou vendo o que estou vendo? É o servidor ou o cliente para culpar ou ambos? Como resolver?

Gostaria de mencionar que na janela eu posso ter um arquivo com exatamente o nome de arquivo necessário se eu mesmo criar:

E:\!2>echo a > тестовый


E:\!2>dir т*
 Volume in drive E is Storage
 Volume Serial Number is F41B-FF77

 Directory of E:\!2

21-Jan-13  17:20                 4 тестовый
               1 File(s)              4 bytes
               0 Dir(s)  63,511,015,424 bytes free

E:\!2>
    
por Andrew Savinykh 21.01.2013 / 05:26

1 resposta

2

Veja esta resposta para uma explicação do que está acontecendo.

Eu sugiro que você use 7zip ao invés de tar, já que 7zip parece "lembrar" qual codificação foi usada para os nomes dos arquivos e descompactá-los bem. Eu testei isso em caracteres não-ASCII suecos, e espero que funcione para você também.

    
por 07.05.2013 / 14:07