AIX 6.1 copiando arquivos com caracteres não padrão nos nomes de arquivos [closed]

2

Eu tenho um grande problema com alguns caracteres não-padrão ao tentar copiar (por causa do backup) alguns arquivos no AIX 6.1. O que eu preciso fazer é ter o arquivo de backup com exatamente os mesmos nomes de arquivos para poder restaurar os arquivos e fazer tudo funcionar novamente.

Eu tento criar o script ksh, que levaria o nome pelo nome (linha por linha) do arquivo csv e copiá-los usando o cp para o destino de backup. Depois de executar o script, percebi que tenho alguns arquivos ausentes no novo local. Depois de algumas investigações, vi que os arquivos ausentes tinham alguns caracteres não padronizados em seus nomes no diretório original (como long -, letras com acentos, etc.).

  1. Eu tenho o arquivo csv com a lista de arquivos a serem copiados, aqui exemplo com "-" longo:
    cat file_list.csv | grep pattern /path/to/file/some–file_with_pattern

  2. quando tento copiar este arquivo específico com cp (tanto por script ou executando manualmente cp):
    cp /path/to/file/some–file_with_pattern /new/backup/path cp: /path/to/file/some–file_with_pattern: No such file or directory

  3. quando exibo o arquivo com ls:
    ls /path/to/file | grep pattern some?file_with_pattern

O AIX vê o arquivo com "?" em vez de "-", portanto, o cp lança um erro. Quando eu uso o curinga (* ou?) Para copiar o arquivo, ele é copiado, mas tem "?" em vez de "-" no diretório de destino. Quando eu coloco o nome do arquivo em "" ou "" é o mesmo, "?" em vez de "-" no diretório de destino. Isso não satisfaz minha necessidade, como quando eu restauro um arquivo com nome diferente ("?" Ao invés de "-"), o aplicativo que o usa não poderá se referir a ele.

Eu tentei o ksh e o sh (o bash não está disponível no servidor). Eu tentei jogar com local (forçando UTF8 definindo LC_ALL="en_US.UTF-8"). Eu tentei jogar com as configurações de codificação Putty. Ainda não consigo me referir aos arquivos pelos nomes originais, portanto não posso copiá-los mantendo o nome original. Alguém tem alguma idéia de como copiar esses arquivos usando comandos shell?

    
por Luke 04.07.2018 / 15:09

1 resposta

1

Existem três questões distintas para abordar aqui:

A ? em ls

Não é verdade que ls mostrará os caracteres reais em um nome de arquivo.

Por exemplo, os seguintes nomes de arquivos contêm caracteres que ls pode substituir (nem sempre) por ? :

$ eval "$(printf "a='\n' b=2 c=–")"
$ touch test{"$a","$b","$c"}file
$ ls --quoting-style=literal test*
test?file  test?file  test–file

Mas isso não usará ? (é o shell listando os arquivos):

$ echo test*
test
file testfile test–file

Claro, para mostrar os caracteres (codificados):

$ echo test* | od -An -tc
   t   e   s   t  \n   f   i   l   e       t   e   s   t 032   f   i   l   e
   t   e   s   t 342 200 223   f   i   l   e  \n

Então, você precisa usar algo como od para ver realmente os caracteres usados no arquivo.

$ touch 'some–file_with_pattern'
$ echo *pattern* | od -An -tc
   s   o   m   e 342 200 223   f   i   l   e   _   w   i   t   h   _   p   a   t   t   e   r   n  \n

codificação

Observe que acima do longo traço é sempre mostrado corretamente como o caractere visível: (em oposição ao ? em seus exemplos) porque a codificação está definida corretamente para utf-8.

Portanto, verifique suas configurações do PuTTY em Translation e certifique-se de ter o UTF-8 definido como o conjunto de caracteres.

E, em seguida, tente esta linha, deve imprimir os mesmos caracteres que você vê nesta página da web.

$ echo 'áé€íìïîößđ₣λŕžç×  Москва  Ελληνικά'
áé€íìïîößđ₣λŕžç×  Москва  Ελληνικά

codificação do sistema de arquivos

Os dois problemas acima devem resolver o problema em 99% dos casos, exceto naqueles em que a codificação do sistema de arquivos não corresponde à codificação de localidade ou é diferente entre os dois sistemas de arquivos envolvidos.

Certifique-se de que não há nenhum problema com os dois problemas acima antes mesmo de analisar esse problema. Leia O mesmo arquivo, nome diferente do arquivo devido ao problema de codificação?

    
por 06.07.2018 / 21:11

Tags