Desmarqué 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. comportamiento similar, excepto justo después de que trato de eliminarlo rm -rf
, se ls
queja de que no puede encontrarlo, luego lo enumera (ver más abajo después rm -rf
). El find
comando muestra que el archivo está presente, pero aún no se me ocurre una forma de eliminarlo.
Aquí están mis intentos:
Aquí ves ambos ls
y find
aceptas que tenemos un directorio,
rl]$ ls
mikeaâ??cnt
rl]$ find -maxdepth 1 -type d -empty -print0
./mikeaâcnt
Pero no puedo eliminarlo:
rl]$ find -maxdepth 1 -type d -empty -print0 | xargs -0 rm -f -v
rm: cannot remove `./mikeaâ\302\201\302\204cnt': Is a directory
rl]$ ls
mikeaâ??cnt
Sin cd
embargo, puedo hacerlo y 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, además se ls
comporta de manera divertida después de rm -rf
que dice que no puede encontrar el archivo y luego lo enumera inmediatamente después:
rl]$ rm mikeaâ^Á^Äcnt/
rm: cannot remove `mikeaâ\302\201\302\204cnt/': Is a directory
rl]$ rm -rf mikeaâ^Á^Äcnt/
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
rl]$
Entonces este es el intento con python, se encuentra el archivo, pero el nombre no se puede usar 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('.')
['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'
incluso cuando uso la finalización de pestañas, el nombre que recoge no se puede usar:
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 "mikea\xc3\xa2\xc2\x81\xc2\x84cnt"
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
la propia -exec
opción para llamarrm
rl]$ find -maxdepth 1 -type d -empty -exec rm -f {} \;
find: `./mikeaâ\302\201\302\204cnt': No such file or directory
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
rl]$
pero el archivo todavía está allí (se ls
queja de que no puede encontrarlo, pero luego lo muestra de todos modos)
2da EDICIÓN:
rl]$ find -maxdepth 1 -type d -empty -exec rm -rf {} \;
find: `./mikeaâ\302\201\302\204cnt': 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
3a 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
mirar la salida del intento de Python mikea\xc3\xa2\xc2\x81\xc2\x84cnt
, y esta captura de pantalla:
4th EDIT: 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 localidad:
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=
5ta 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 ha sucedido 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.
6ª EDICIÓN: Esta es la salida lsof
yls -a
rl] $ / usr / sbin / lsof mikeaâ ^ Á ^ Äcnt lsof: error de estado en mikeaâ \ xc2 \ x81 \ xc2 \ x84cnt: No existe tal archivo o directorio
arriba está mal, aquí está la lsof
invocación correcta : (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
7ª Edición: movimiento no va a funcionar, (I probado antes de todo esto, pero no lo hice guardar la salida), 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 | xxd
0000000: 6d69 6b65 61c3 a2c2 81c2 8463 6e74 0a mikea......cnt.
rl]$ rmdir $'mikea\6d69\6b65\61c3\a2c2\81c2\8463\6e74\0acnt'
rmdir: failed to remove `mikea\006d69\006b651c3\a2c2\\81c2\\8463\006e74': No such file or directory
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
rl]$
Novena edición: para el stat
comando:
rl]$ stat mikeaâ^Á^Äcnt
stat: cannot stat `mikeaâ\302\201\302\204cnt': No such file or directory
rl]$
Parece aún más probable de todos los resultados, hay un error u otro mal comportamiento de NFS como se sugiere en los comentarios.
Edición 10: Esta es una salida extraña en una esencia ya que es tan grande, es la salida o estos dos comandos:
strace -xx rmdir ./* | grep -e '-1 E'`
strace -xx -e trace=file ls -li`
https://gist.github.com/mikeatm/e07fa600747a4285e460
Edición 11: Entonces, antes de lo anterior rmdir
, noté que podía cd
ingresar al directorio, pero después de rmdir
eso no pude cd
nuevamente, similar a ayer. Los archivos .
y ..
estaban presentes:
rl]$ ls
mikeaâ??cnt
rl]$ cd mikeaâ^Á^Äcnt/
mikeaâ^Á^Äcnt]$ ls
mikeaâ^Á^Äcnt]$ ls -a
. ..
mikeaâ^Á^Äcnt]$ cd ../
Edición final: vi a un administrador local sobre esto y se solucionó iniciando sesión en el servidor y eliminando desde allí. La explicación de ellos es que podría ser un problema que los conjuntos de caracteres en el nombre sean inapropiados.
mv
. tal vez puedas borrarlo después de eso. Alternativamente, puede intentar mover el directorio a un nivel de carpeta más profundo (tal vez con un comodín) y luego eliminar la carpeta a la que lo ha movido.
find
la salida a un comando diferente en lugar de solo usar suexec
opción?