remove um arquivo com nome corrompido

1

Então isso aconteceu:

$ ls
''$'20''abc2.16.5'
$ ls | od -c
0000000 342 200   a   b   c   2   .   1   6   .   5  \n
$ ls -il
76236897 -rw-rw-r-- 1 mob users 0 Aug 16 17:52 ''$'20''abc2.16.5'

Como eu excluo esse arquivo? Aqui estão algumas coisas que não funcionaram:

$ rm -i -- *
rm: remove regular file ''$'20''abc2.16.5'? y
rm: cannot remove ''$'20''abc2.16.5': No such file or directory

$ rm ./*
rm: cannot remove './'$'20''abc2.16.5': No such file or directory

$ rm ./<TAB>        # for file name completion
rm: cannot remove './'$'20''abc2.16.5': No such file or directory

$ find . -delete
find: cannot delete './20abc2.16.5': No such file or directory

$ perl -e 'unlink(glob("*")) or die $!'
$ perl -e 'unlink(glob("*2.16.5")) or die $!'
No such file or directory at -e line 1.

$ find . -inum 76236897 -delete
find: cannot delete './20abc2.16.5': No such file or directory

$ rename * xxx ; rm -v xxx
rm: cannot remove 'xxx': No such file or directory

Curiosamente, truncate * --size 0 funciona, cat * funciona, shred * funciona

O que devo tentar em seguida? Sistema é o Servidor Red Hat Enterprise Linux versão 6.8

    
por mob 16.08.2018 / 23:38

2 respostas

1

Como você diz que shred funciona, sugiro adicionar o argumento -u ao fragmento.

Da página do manual ( man shred ):

-u deallocate and remove file after overwriting

Então, eu tentaria shred -n 0 -u * no diretório que contém o arquivo.

    
por 16.08.2018 / 23:50
0

Isso aconteceu comigo muitas vezes ao longo dos anos. Para mim, isso normalmente ocorreu em uma partição do Windows NTFS; você está usando o RHEL, mas talvez o mesmo processo o ajude.

Eu nunca consegui excluir com êxito o arquivo corrompido ou o diretório pai.

Eu sempre tive que:

  • Backup de todos os arquivos (menos o diretório com o arquivo corrompido)
  • Formate a partição
  • Restaurar todos os arquivos

Caso a formatação da partição não seja viável e o arquivo corrompido não esteja causando nenhum problema real, você também pode tentar o seguinte:

  • Coloque o arquivo corrompido em seu próprio diretório
    • copie o arquivo corrompido para um novo diretório
    • copie todos os outros arquivos bons para um novo diretório
  • Mova o diretório com o arquivo corrompido para $TEMP ou em algum lugar em que possa ser ignorado com segurança
  • Coloque todos os outros arquivos bons de volta onde eles estavam
por 17.08.2018 / 16:25

Tags