Descomprimí un archivo tar corrupto y logré terminar con un directorio
que no puedo eliminar,
Si trato de eliminarlo, parece que no se puede encontrar, pero ls
muestra que está presente, tanto con bash como con python obtengo un comportamiento similar, excepto justo después de intentar eliminarlo con rm -rf
, ls
se queja de que no puede encontrarlo, luego lo enumera (ver más abajo después de rm -rf
). El find
El comando muestra que el archivo está presente,
pero aún no puedo pensar en una forma de eliminarlo.
Estos son mis intentos:
Aquí ves ambos ls
y find
aceptamos que tenemos un directorio,
rl]$ ls
mikeaâ??cnt
rl]$ find -maxdepth 1 -type d -empty -print0
./mikeaâcnt
Pero no puedo borrarlo:
rl]$ find -maxdepth 1 -type d -empty -print0 | xargs -0 rm -f -v
rm: cannot remove `./mikeaâ302201302204cnt': Is a directory
rl]$ ls
mikeaâ??cnt
Puedo cd
sin embargo, está vacío:
rl]$ cd mikeaâ^Á^Äcnt/
mikeaâ^Á^Äcnt]$ ls
mikeaâ^Á^Äcnt]$ pwd
.../rl/mikeaâcnt
mikeaâ^Á^Äcnt]$ cd ../
rl]$ ls
mikeaâ??cnt
vea a continuación que no es un archivo simple sino un directorio, más ls
se comporta raro después de rm -rf
dice que no puede encontrar el archivo y lo enumera inmediatamente después:
rl]$ rm mikeaâ^Á^Äcnt/
rm: cannot remove `mikeaâ302201302204cnt/': Is a directory
rl]$ rm -rf mikeaâ^Á^Äcnt/
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
rl]$
Así que este es el intento con python, se encuentra el archivo, pero el nombre no es
usable como un nombre que se puede eliminar:
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('.')
['mikeaxc3xa2xc2x81xc2x84cnt']
>>> 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: 'mikeaxc3xa2xc2x81xc2x84cnt'
incluso cuando uso la función de completar con tabulación, el nombre que recoge no se puede utilizar:
rl]$ rm -rf mikeaâ^Á^Äcnt
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
usando el nombre que Python muestra con bash obtengo esto:
rl]$ rm -rf "mikeaxc3xa2xc2x81xc2x84cnt"
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
¿Hay algo que pueda hacer para deshacerme de este directorio corrupto?
El sistema de archivos subyacente (NFS) parece funcional y no se informan otros problemas, y no he tenido tales problemas hasta el archivo tar corrupto.
EDITAR:
Aquí está usando find
propio -exec
opción para llamar a rm
rl]$ find -maxdepth 1 -type d -empty -exec rm -f {} ;
find: `./mikeaâ302201302204cnt': No such file or directory
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
rl]$
pero el archivo sigue ahí, (ls
se queja de que no puede encontrarlo, pero luego lo muestra de todos modos)
2.ª EDICIÓN:
rl]$ find -maxdepth 1 -type d -empty -exec rm -rf {} ;
find: `./mikeaâ302201302204cnt': No such file or directory
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
El comportamiento sigue sin cambios, el archivo sigue presente
3.ª EDICIÓN:
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 que hay más en el nombre que mikeaâcnt
al mirar la salida del intento de python mikeaxc3xa2xc2x81xc2x84cnt
, y esta captura de pantalla:
4ª EDICIÓN:
Este es el intento con un comodín:
rl]$ echo *
mikeaâcnt
rl]$ echo mike*
mikeaâcnt
rl]$ rm -rf mike*
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
y mi configuración regional:
rl]$ locale
LANG=en_US.utf8
LC_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.ª edición:
rl]$ ls -i
ls: cannot access mikeaâcnt: No such file or directory
? mikeaâ??cnt
pero también el comportamiento ha cambiado, ahora ls
y cd
haz esto:
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.
Esto sucedió después de los intentos de eliminación, estoy pensando que podrían ser problemas de NFS como se sugiere en una de las respuestas aquí por vinc17.
Relacionado:$PWD? (frente al directorio de trabajo actual)?
6ª EDICIÓN:
Esta es la salida de lsof
y ls -a
rl]$ /usr/sbin/lsof mikeaâ^Á^Äcnt
lsof:error de estado en mikeaâxc2x81xc2x84cnt:No existe tal archivo o directorio
arriba está mal, aquí está el lsof
correcto invocación:(rl es el directorio padre)
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
7ma edición:
move no funcionará (lo probé antes de todo esto, pero no guardé el resultado), pero tiene el mismo problema que ls
y rm
con el archivo.
8ª EDICIÓN:
esto está usando los caracteres hexadecimales como se sugiere:
rl]$ ls --show-control-chars | xxd0000000:6d69 6b65 61c3 a2c2 81c2 8463 6e74 0a mikea......cnt.rl]$ rmdir $'mikea6d696b6561c3a2c281c284636e74