46 votes

Comment supprimer les fichiers .fuse_hidden*?

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

En essayant de supprimer le répertoire depuis la console Linux, j'ai obtenu une erreur similaire :

# rm nom-du-dossier -rf
rm: impossible de supprimer `nom-du-dossier': Répertoire non vide

J'ai listé le contenu du répertoire et trouvé un fichier nommé .fuse_hidden suivi d'un nombre hexadécimal (000bd8c100000185).

# ls -la nom-du-dossier
-rwxrwxrwx 1 root root 5120 13 fév 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 nom-du-dossier/.fuse_hidden000bd8c100000185
# ls -la nom-du-dossier
-rwxrwxrwx 1 root root 5120 13 fév 11:46 .fuse_hidden000bd8c100000186

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

D'autres solutions que j'ai trouvées jusqu'à présent impliquent une interface graphique et je n'ai que la console à disposition.

Toute suggestion est appréciée.

71voto

Cela est similaire à ce qui se passe lorsque vous supprimez un fichier qu'un autre système a ouvert sur un point de 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 tiennent toujours ouvert.

  • Connectez-vous au système où le fichier réside physiquement. (pas de montage réseau)
  • Exécutez lsof nom-du-dossier/.fuse_hidden000bd8c100000185 pour identifier quels processus tiennent le handle du fichier ouvert.
  • Terminez ces processus si cela a du sens, ou découvrez quelles étapes vous pouvez effectuer pour libérer "gracieusement" le handle du fichier ouvert sans terminer le processus.

Généralement, lorsque vous supprimez un fichier sur votre système de fichiers local qu'un autre processus a ouvert, le système d'exploitation obéit à votre demande et le supprime de l'arborescence des dossiers, mais l'inode pointé par cette arborescence est toujours considéré comme en cours d'utilisation par le système d'exploitation. À chaque fois qu'un fichier est ouvert, son "nombre de liens" augmente de un, et l'espace n'est réellement libéré que lorsque ce nombre de liens atteint zéro.

Lorsque vous rencontrez un problème de cette nature, cela signifie que pour une raison quelconque, le système d'exploitation a décidé de ne pas supprimer ce fichier de l'arborescence des dossiers : généralement parce qu'il estime qu'il doit encore être accessible par des éléments qui ne peuvent pas utiliser le numéro d'inode directement. Il semble d'abord se conformer, mais en réalité, le système d'exploitation le renomme en ajoutant un préfixe de point caché pour qu'il soit toujours accessible avec une forme quelconque d'adresse de chemin du système de fichiers. L'espace sera toujours libéré lorsque le nombre de liens atteindra zéro, mais cet objet restera dans le dossier jusqu'à ce que les liens disparaissent.

0voto

Ajs Points 21

Merci pour les suggestions, mais rien n'a fonctionné pour moi. J'ai trouvé une solution : j'ai déplacé le SSD externe vers un PC sous Windows. En utilisant l'Explorateur de fichiers (avec "Eléments masqués" coché), j'ai navigué jusqu'au répertoire .Trashes et j'ai pu supprimer le fichier .fuser_hidden.

J'espère que cela aide !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X