web-dev-qa-db-fra.com

Comment supprimer des fichiers .Fuse_hidden *?

J'ai un petit serveur Linux (Debian Squeeze) qui exécute un serveur Samba qui est configuré pour partager certains dossiers avec certaines machines Windows. En essayant de supprimer l'un des répertoires de Windows, j'ai reçu l'erreur "Impossible de supprimer le dossier".

J'ai essayé de supprimer le répertoire de la console Linux, j'ai eu une erreur similaire:

# rm dir-name -rf
rm: cannot remove `dir-name': Directory not empty

J'ai répertorié le contenu du répertoire et trouvé un fichier nommé .Fuse_hidden suivi d'un numéro hexadécimal (000bd8c100000185).

# ls -la dir-name
-rwxrwxrwx 1 root root 5120 Feb 13 11:46 .Fuse_hidden000bd8c100000185

J'ai essayé de supprimer le fichier .Fuse_hidden, mais un nouveau fichier a été créé instantanément (notez le changement de numéro hexadécimal).

# rm dir-name/.Fuse_hidden000bd8c100000185
# ls -la dir-name
-rwxrwxrwx 1 root root 5120 Feb 13 11:46 .Fuse_hidden000bd8c100000186

J'ai également essayé d'utiliser Midnight Commander pour supprimer le fichier sans succès.

Les autres solutions que j'ai trouvées jusqu'à présent concernent l'interface graphique et je n'ai que la console.

Toutes les suggestions sont appréciées.

35
Lando

Ceci est similaire à ce qui se produit lorsque vous supprimez un fichier qu'un autre système a ouvert sur un montage NFS. Le problème est que le fichier a été supprimé du système de fichiers alors que son "nombre de liens" était> 1, ce qui signifie que d'autres processus le maintiennent toujours ouvert.

  • Connectez-vous au système sur lequel réside physiquement le fichier. (pas de montage réseau)
  • Exécutez lsof dir-name/.Fuse_hidden000bd8c100000185 pour savoir quels processus maintiennent le descripteur de fichier ouvert.
  • Arrêtez ces processus si cela est logique ou déterminez les étapes que vous pouvez effectuer pour libérer "gracieusement" le descripteur de fichier ouvert sans terminer le processus.

Normalement, lorsque vous supprimez un fichier de votre système de fichiers local qu'un autre processus a ouvert, le système d'exploitation se conforme à votre demande et le supprime de l'arborescence de répertoires, mais l'inode sur lequel pointe l'arborescence est toujours considéré comme utilisé par le système d'exploitation. Chaque fois qu'un fichier est ouvert, son "nombre de liens" augmente d'une unité et l'espace n'est réellement libéré que lorsque le nombre de liens atteint zéro.

Lorsque vous rencontrez un problème de cette nature, cela signifie que le système d'exploitation a, pour une raison quelconque, décidé de pas supprimer ce fichier de l'arborescence des répertoires: généralement parce qu'il a des raisons de croire qu'il doit encore être accessible par des choses qui ne peuvent pas utiliser le numéro d'inode direct. Il peut initialement sembler conforme, mais en coulisses, le système d'exploitation le renomme pour avoir un préfixe de point caché de sorte qu'il est toujours accessible avec une certaine forme d'adressage de chemin de système de fichiers. L'espace sera toujours libéré lorsque le nombre de liens atteindra zéro, mais cet objet restera dans le répertoire jusqu'à ce que les liens disparaissent.

55
Andrew B

Merci pour les suggestions, mais rien n'a fonctionné pour moi. Mais j'ai trouvé une solution: j'ai déplacé le SSD externe vers un PC exécutant Windows. En utilisant l'explorateur de fichiers (avec "Éléments cachés" cochés), j'ai navigué vers le répertoire .Trashes. J'ai pu supprimer le fichier .fuser_hidden.

J'espère que cela t'aides!

0
RobertC