Eu descompactei um arquivo tar corrompido e consegui terminar com algum diretório
que eu não consigo apagar,
Se eu tentar excluí-lo, parece que não pode ser encontrado, mas ls mostra que está presente, tanto com o bash quanto com o python Eu tenho um comportamento semelhante, exceto logo depois de tentar excluí-lo com rm -rf , ls reclama que não consegue encontrá-lo, então ele o lista (veja abaixo após rm -rf ). O comando find mostra que o arquivo está presente
mas ainda não consigo pensar em uma maneira de excluí-lo.
Aqui estão minhas tentativas:
Aqui você vê os dois ls e find concordam que temos um diretório,
rl]$ ls
mikeaâ??cnt
rl]$ find -maxdepth 1 -type d -empty -print0
./mikeaâcnt
Mas não consigo excluir:
rl]$ find -maxdepth 1 -type d -empty -print0 | xargs -0 rm -f -v
rm: cannot remove './mikeaâ2124cnt': Is a directory
rl]$ ls
mikeaâ??cnt
Eu posso cd e está vazio:
rl]$ cd mikeaâ^Á^Äcnt/
mikeaâ^Á^Äcnt]$ ls
mikeaâ^Á^Äcnt]$ pwd
.../rl/mikeaâcnt
mikeaâ^Á^Äcnt]$ cd ../
rl]$ ls
mikeaâ??cnt
veja abaixo que não é um arquivo simples, mas um diretório, mais ls se comporta engraçado depois que rm -rf diz que não pode encontrar o arquivo, em seguida, o relaciona logo em seguida:
rl]$ rm mikeaâ^Á^Äcnt/
rm: cannot remove 'mikeaâ2124cnt/': Is a directory
rl]$ rm -rf mikeaâ^Á^Äcnt/
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
rl]$
Portanto, esta é a tentativa com python, o arquivo é encontrado, mas o nome não é
utilizável como um nome que pode ser excluído:
rl]$ python
Python 2.6.6 (r266:84292, Jul 10 2013, 22:48:45)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> import shutil
>>> os.listdir('.')
['mikea\xc3\xa2\xc2\x81\xc2\x84cnt']
>>> shutil.rmtree(os.listdir('.')[0] )
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.6/shutil.py", line 204, in rmtree
onerror(os.listdir, path, sys.exc_info())
File "/usr/lib64/python2.6/shutil.py", line 202, in rmtree
names = os.listdir(path)
OSError: [Errno 2] No such file or directory: 'mikea\xc3\xa2\xc2\x81\xc2\x84cnt'
mesmo quando eu uso o término da tabulação, o nome que ele pega não é utilizável:
rl]$ rm -rf mikeaâ^Á^Äcnt
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
usando o nome que python mostra com bash eu recebo isso:
rl]$ rm -rf "mikea\xc3\xa2\xc2\x81\xc2\x84cnt"
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
Existe algo que eu possa fazer para me livrar desse diretório corrupto?
O sistema de arquivos subjacente (NFS) parece funcional e nenhum outro problema é relatado, e eu não tive tais problemas até o arquivo tar corrompido.
EDITAR:
Aqui está usando a própria opção find do -exec para chamar rm
rl]$ find -maxdepth 1 -type d -empty -exec rm -f {} \;
find: './mikeaâ2124cnt': No such file or directory
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
rl]$
mas o arquivo ainda está lá, ( ls reclama que não pode encontrá-lo, mas mostra de qualquer maneira)
2º EDIT:
rl]$ find -maxdepth 1 -type d -empty -exec rm -rf {} \;
find: './mikeaâ2124cnt': No such file or directory
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
O comportamento ainda é inalterado, o arquivo ainda está presente
EDIT:
rl]$ ls
mikeaâ??cnt
rl]$ find -maxdepth 1 -type d -empty -exec rm -rf {} +
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
Parece haver mais no nome que mikeaâcnt de ver a saída da tentativa de python mikea\xc3\xa2\xc2\x81\xc2\x84cnt e esta captura de tela:

4ºEDIT:Estaéatentativacomumcuringa:
rl]$echo*mikeaâcntrl]$echomike*mikeaâcntrl]$rm-rfmike*rl]$lsls:cannotaccessmikeaâcnt:Nosuchfileordirectorymikeaâ??cnt
eminhalocalidade:
rl]$localeLANG=en_US.utf8LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=
5ª edição:
rl]$ ls -i
ls: cannot access mikeaâcnt: No such file or directory
? mikeaâ??cnt
mas também o comportamento mudou, agora ls e cd fazem isso:
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
rl]$ cd mikeaâ^Á^Äcnt
mikeaâcnt: No such file or directory.
Isso aconteceu depois das tentativas de exclusão, estou pensando que podem ser problemas de NFS, como sugerido em uma das respostas aqui por vinc17.
6º EDIT:
Esta é a saída de lsof e ls -a
rl] $ / usr / sbin / lsof mikeaâ ^ Äcnt
lsof: status error no mikeaâ \ xc2 \ x81 \ xc2 \ x84cnt: Nenhum arquivo ou diretório
acima está errado, aqui está a invocação correta de lsof : (rl é o diretório pai)
rl]$ /usr/sbin/lsof | grep mike | grep rl
tcsh 11926 mike cwd DIR 0,33 4096 19569249 /home/mike/mish/rl
lsof 14733 mike cwd DIR 0,33 4096 19569249 /home/mike/mish/rl
grep 14734 mike cwd DIR 0,33 4096 19569249 /home/mike/mish/rl
grep 14735 mike cwd DIR 0,33 4096 19569249 /home/mike/mish/rl
lsof 14736 mike cwd DIR 0,33 4096 19569249 /home/mike/mish/rl
rl]$
rl]$ ls -a
ls: cannot access mikeaâcnt: No such file or directory
. .. mikeaâ??cnt
7ª edição:
move não funciona, (tentei antes de tudo isso, mas não salvei a saída), mas tem o mesmo problema que ls e rm com o arquivo.
8ª EDIÇÃO:
isto está usando os caracteres hexadecimais como sugerido:
rl]$ ls --show-control-chars | xxd
0000000: 6d69 6b65 61c3 a2c2 81c2 8463 6e74 0a mikea......cnt.
rl]$ rmdir $'mikead69b65c3\a2c2c263e74 rl]$ stat mikeaâ^Á^Äcnt
stat: cannot stat 'mikeaâ2124cnt': No such file or directory
rl]$
acnt'
rmdir: failed to remove 'mikeastrace -xx rmdir ./* | grep -e '-1 E''
strace -xx -e trace=file ls -li'
6d69rl]$ ls
mikeaâ??cnt
rl]$ cd mikeaâ^Á^Äcnt/
mikeaâ^Á^Äcnt]$ ls
mikeaâ^Á^Äcnt]$ ls -a
. ..
mikeaâ^Á^Äcnt]$ cd ../
6b651c3\a2c2\81c2\8463rl]$ ls
mikeaâ??cnt
rl]$ find -maxdepth 1 -type d -empty -print0
./mikeaâcnt
6e74': No such file or directory
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
rl]$
9ª edição:
para o comando stat :
rl]$ find -maxdepth 1 -type d -empty -print0 | xargs -0 rm -f -v
rm: cannot remove './mikeaâ2124cnt': Is a directory
rl]$ ls
mikeaâ??cnt
Parece ainda mais provável de todos os resultados, há um bug ou outro mau comportamento do NFS como sugerido nos comentários.
Editar 10:
Esta é a saída strace em uma essência desde que é tão grande,
é a saída ou esses dois comandos:
rl]$ cd mikeaâ^Á^Äcnt/
mikeaâ^Á^Äcnt]$ ls
mikeaâ^Á^Äcnt]$ pwd
.../rl/mikeaâcnt
mikeaâ^Á^Äcnt]$ cd ../
rl]$ ls
mikeaâ??cnt
link
Editar 11:
Então, antes do rmdir acima, percebi que eu poderia cd no diretório,
mas depois do rmdir eu não consegui cd novamente, semelhante ao ontem. Os arquivos . e .. estavam presentes:
rl]$ rm mikeaâ^Á^Äcnt/
rm: cannot remove 'mikeaâ2124cnt/': Is a directory
rl]$ rm -rf mikeaâ^Á^Äcnt/
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
rl]$
Edição final:
Eu vi um administrador local sobre isso e foi tratado fazendo logon no próprio servidor e excluindo a partir daí. A explicação deles é que poderia ser um problema com conjuntos de caracteres no nome sendo inadequado.