Extrair arquivos com trema no arquivo 7zip criado no windows para o Linux

0

Eu quero extrair um grande backup do meu disco rígido comprimido com 7zip no Windows para a minha instalação Debian Wheezy. Eu estou usando a seguinte linha de comando:

7z x -pmypasswordhere file.7z

Se há agora um arquivo ou uma pasta chamada Äpfel (Alemão para maçãs) o resultado no disco rígido do Linux é ¤pfel .

Como posso resolver este problema? Eu tentei usar o seguinte, mas isso diz que a linha de comando é inválida:

7z x -scsWIN -pmypasswordhere file.7z

...onde o -scs switch é explicado como: "-scs {UTF-8 | WIN | DOS}: define o conjunto de caracteres para arquivos de lista".

Eu tenho comprimido o arquivo no Windows 8 em uma partição NTFS com 7z 9,30 64 bits. As opções foram a força de compressão é Ultra . Eu criptografei nomes de arquivos e seus conteúdos com o AES-265. Minha instalação Debian Wheezy é alemão, então echo $ LANG é "de_DE.UTF-8".

The Wavelength
fonte
2
Parece que há algo especial com sua configuração. Eu apenas tentei zipar um arquivo Äpfel.txt com corrente 7-zip (9,20) sob as janelas; obtê-lo de http://download.mpy.de/apples.7z. Eu não tenho nenhum problema com uma antiga versão linux do 7z (4.57, datada de 2007) nem com a versão 9.04 (do debian squeeze?). Em ambos os casos Äpfel.txt é extraído corretamente. A sequência de código do idioma ( locale=de_DE.UTF-8 ) dado por 7z quando iniciado sem argumentos está correto no seu caso? O que echo $LANG dizer?
mpy
Por favor, olhe a edição mais recente que fiz no post inicial. Quando estou usando o seu exemplo, recebo o mesmo resultado. Tem algo interessante: img.xn--mg-eka.de/fe997.png . No lado esquerdo é Putty, no lado direito é meu cliente de FTP. O primeiro "Äpfel.txt" no Putty é o arquivo do seu arquivo 7z. O "? Pfel.txt" é o arquivo criado com o cliente FTP. A história interessante: se eu fizer o mesmo em outro diretório, funciona como esperado ... Eu acho que é um problema mais geral que eu também tenho procurado, nada que esteja relacionado ao 7z. Obrigado de antemão!
The Wavelength
Eu verifiquei com criptografia AES-265, isso não quebra nada. (No entanto, esqueci de mencionar que só posso testar com o Win XP agora). Eu não consigo acompanhar sua história com FTP completamente, mas na minha experiência (gráfica) clientes FTP ou SSH são sempre uma dor no pescoço quando se trata de incomum personagens. Você pode usar scp em vez disso, ou montar um compartilhamento do Windows?
mpy
Eu tentei isso. Tudo o que parece bem no meu cliente FTP parece bem no WinSCP e vice-versa. Tudo o que parece bem no Putty parece errado no WinSCP e no meu cliente FTP.
The Wavelength
Tenho certeza que o cliente gráfico é o problema. Por exemplo. para WinSCP o FAQ ( winscp.net/eng/docs/ui_login_environment#utf ) afirma: ,, UTF-8 não é suportado com protocolo SCP. ''
mpy

Respostas:

3

Para que "äpfel" se torne "äpfel", seria necessário obter o äpfel {UTF-8} e convertê-lo usando ISO-8859-15 para UTF8. Então você obteria o ¤pfel {UTF-8}.

Então, como isso pode acontecer? (Parece não haver ISO-8859-1 [5] (Latin1) no seu fluxo de trabalho).

Eu acredito que eu poderia reproduzir isso em uma partição VFAT ou NTFS usando o mount iocharset=value opção. Se eu configurá-lo para ISO-8859-15 e tiver uma localidade de UTF-8, então talvez o sistema pode ser induzido a converter nomes de arquivos "na direção errada".

Mas aqui, a sua instalação Wheezy é mais provável ext3e não estou ciente de uma opção NLS para ext3.

Outra possibilidade é que os arquivos sejam realmente criado corretamente e você é apenas vendo eles estão errados:

  • Putty está definido para usar o UTF8?
  • seu servidor FTP (e cliente) está definido como UTF8?

Eu noto outra coisa estranha: seus dois arquivos de maçã, o de 16:10 e o de 16:34, parecem ser exibidos por ls usando dois formatos de data diferentes. Em um caso, o ano é especificado.

Pode ser que 7z esteja criando uma entrada inode ligeiramente incomum?

Contudo, Aqui é um truque usando convmv utilitário que pode ser de ajuda.

LSerni
fonte
Muito obrigado! Bem, a questão não é qual é a codificação preferida. Aquele exibido bem no putty ou aquele que é bem exibido no FTP e pode ser acessado através de um servidor web? Eu realmente não sei.
The Wavelength
Se você pode conferir a configuração dos vários "canais", você deve ser capaz de fazê-lo funcionar em toda parte . Quase parece haver um ISO-8859-1 escondido em algum lugar. Eu tentaria correr convmv em uma pequena amostra de arquivos.
LSerni
1

o -scs opção é apenas para @listfiles que parece ser um arquivo contendo uma lista de nomes de arquivos. Isso não afetará o conjunto de caracteres de seus nomes de arquivos.

Uma solução possível seria executar iconv com opções apropriadas contra todos os seus arquivos depois de você os extraiu.

scai
fonte
Quais seriam as opções apropriadas?
The Wavelength
A codificação do seu sistema de arquivos do Windows e a codificação do seu sistema de arquivos do Linux. O primeiro parece ser UTF-16 para NTFS e este último é provavelmente UTF-8 . Experimente no seu arquivo Äpfel.
scai
-1

Depois de extrair o arquivo, basta renomeá-lo via mv ou seu navegador de arquivos, não vai doer.

Para renomear arquivos em massa, se você for forçado a fazer isso, poderá usar find (com -exec) ou krename.

bayindirh
fonte
1
O backup é de mais de 100 GB e mais de 100.000 arquivos ...
The Wavelength