J'ai détarré un fichier tar corrompu et j'ai réussi à me retrouver avec un répertoire
que je ne peux pas supprimer,
Si j'essaie de le supprimer, il semble qu'il ne puisse pas être trouvé, mais ls
montre qu'il est présent, à la fois avec bash et avec python, j'obtiens un comportement similaire, sauf juste après avoir essayé de le supprimer avec rm -rf
, ls
se plaint qu'il ne peut pas le trouver, puis il le liste (voir ci-dessous après rm -rf
). Le find
La commande indique que le fichier est présent,
mais je ne trouve toujours pas de moyen de le supprimer.
Voici mes tentatives :
Ici vous voyez les deux ls
et find
d'accord, nous avons un répertoire,
rl]$ ls
mikeaâ??cnt
rl]$ find -maxdepth 1 -type d -empty -print0
./mikeaâcnt
Mais je ne peux pas le supprimer :
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
je peux cd
mais il est vide :
rl]$ cd mikeaâ^Á^Äcnt/
mikeaâ^Á^Äcnt]$ ls
mikeaâ^Á^Äcnt]$ pwd
.../rl/mikeaâcnt
mikeaâ^Á^Äcnt]$ cd ../
rl]$ ls
mikeaâ??cnt
voir ci-dessous qui n'est pas un simple fichier mais un répertoire, plus ls
se comporte bizarrement après le rm -rf
il dit qu'il ne peut pas trouver le fichier puis le liste juste aprè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]$
C'est donc la tentative avec python, le fichier est trouvé, mais le nom n'est
pas utilisable comme nom pouvant être supprimé :
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'
même lorsque j'utilise la complétion par tabulation, le nom qu'il prend n'est pas utilisable :
rl]$ rm -rf mikeaâ^Á^Äcnt
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
en utilisant le nom que python montre avec bash, j'obtiens ceci :
rl]$ rm -rf "mikeaxc3xa2xc2x81xc2x84cnt"
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
Puis-je faire quelque chose pour me débarrasser de ce répertoire corrompu ?
Le système de fichiers sous-jacent (NFS) semble fonctionnel et aucun autre problème n'est signalé, et je n'ai eu aucun problème de ce type jusqu'au fichier tar corrompu.
EDIT :
Ici, on utilise find
son propre -exec
possibilité d'appeler 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]$
mais le fichier est toujours là, (ls
se plaint qu'il ne peut pas le trouver, mais le montre quand même)
2ème ÉDITION :
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
Le comportement est toujours inchangé, le fichier toujours présent
3ème ÉDITION :
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
Il semble y avoir plus dans le nom que mikeaâcnt
en regardant la sortie de la tentative python mikeaxc3xa2xc2x81xc2x84cnt
, et cette capture d'écran :
4ème EDIT :
Voici la tentative avec un joker :
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
et mes paramètres régionaux :
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=
5e édition :
rl]$ ls -i
ls: cannot access mikeaâcnt: No such file or directory
? mikeaâ??cnt
mais aussi le comportement a changé, maintenant ls
et cd
faites ceci :
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.
Cela s'est produit après les tentatives de suppression, je pense qu'il pourrait s'agir de problèmes NFS, comme suggéré dans l'une des réponses ici par vinc17.
En relation : $ PWD ? (vs répertoire de travail actuel) ?
6ème EDIT :
Ceci est la sortie de lsof
et ls -a
rl]$ /usr/sbin/lsof mikeaâ^Á^Äcnt
lsof :erreur d'état sur mikeaâxc2x81xc2x84cnt :aucun fichier ou répertoire de ce type
ci-dessus est faux, voici le bon lsof
invocation :(rl est le répertoire parent)
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
7e édition :
le déplacement ne fonctionnera pas (je l'ai essayé avant tout cela, mais je n'ai pas enregistré la sortie), mais il a le même problème que ls
et rm
avec le fichier.
8ème EDIT :
ceci utilise les caractères hexadécimaux comme suggéré :
rl]$ ls --show-control-chars | xxd0000000 :6d69 6b65 61c3 a2c2 81c2 8463 6e74 0a mikea......cnt.rl]$ rmdir $'mikea6d696b6561c3a2c281c284636e74