35 votes

Cas étrange d'un fichier vraiment invisible ( ?) et d'un répertoire non supprimable sur MacOS

J'ai des problèmes pour supprimer un répertoire sur mon système MacOS Mojave 10.14.3.

Le système de fichiers est APFS et voici les symptômes :

$ rm -rf strange/
rm: strange/: Directory not empty

$ sudo rm -rf strange/
Password:
rm: strange/: Directory not empty

$ ls -lia strange/
total 0
786499 drwxr-xr-x   3 kk  staff    96 Feb 26 18:56 .
430961 drwxr-xr-x+ 49 kk  staff  1568 Feb 26 21:50 ..

$ ls -lid strange/
786499 drwxr-xr-x  3 kk  staff  96 Feb 26 18:56 strange/

Remarquez que le nombre de liens pour le répertoire est de 3. Un répertoire vide fraîchement créé a un nombre de liens de 2.

Aucun autre fichier ou répertoire sur le système n'a le même numéro d'inode (ceci a été vérifié en utilisant sudo find / -inum 786499 ), et je crois que les répertoires sur les systèmes de fichiers APFS ne peuvent pas avoir de liens en dur supplémentaires de toute façon (comme ils peuvent le faire avec HFS+).

Le fait de placer le répertoire dans la corbeille et de le vider renvoie une boîte de dialogue contenant le texte suivant

L'opération ne peut être achevée car l'élément "étrange" est en cours d'utilisation.

Cependant, le fonctionnement sudo lsof "$HOME/strange" (après avoir ramené le répertoire dans mon répertoire personnel) ne donne rien, et le redémarrage de la machine ne change rien. L'utilisation de sudo lsof +L1 (listant les fichiers ouverts dont le nombre de liens est égal à zéro, c'est-à-dire les fichiers supprimés maintenus ouverts par une application) ne révèle pas non plus de chemins sous la rubrique strange répertoire.

Le répertoire n'a pas d'ACL ni d'attributs étendus :

$ ls -lde@ strange/
drwxr-xr-x  3 kk  staff  96 Feb 26 18:56 strange/

Faire une copie du répertoire à l'aide du Finder crée strange copy . Ce répertoire de copies a un nombre de liens de 2 et peut être supprimée. Curieusement, la boîte de dialogue "Get Info" du Finder indique que chaque répertoire (original et copie) contient un élément (elle indique généralement zéro élément pour les répertoires vides nouvellement créés).

$ ls -la strange*
strange:
total 0
drwxr-xr-x   3 kk  staff    96 Feb 26 23:57 .
drwxr-xr-x+ 49 kk  staff  1568 Feb 27 10:36 ..

strange copy:
total 0
drwxr-xr-x   2 kk  staff    64 Feb 26 23:57 .
drwxr-xr-x+ 49 kk  staff  1568 Feb 27 10:36 ..

enter image description here

L'exécution de "First Aid" à l'aide de l'"Utilitaire de disque" de MacOS ne change rien (elle renvoie "Successful" à la fin). Et ce, que l'opération soit effectuée sur le système réel ou en mode sauvetage.

La course à pied fsck_apfs -y sur le disque en mode Rescue fait produit un certain nombre d'avertissements sur l'un des instantanés du système de fichiers du type suivant :

warning: Cross Check : Mismatch between extentref entry reference count (1) and calculated fsroot entry reference count (0) for extent (0x236654a + 4)

Cela ne semble pas être réparé par fsck_apfs mais

Des indices sur la manière de supprimer ce répertoire ?


Pour ceux qui se posent la question, le répertoire a été initialement trouvé comme un sous-répertoire d'un jeu Steam (Factorio, version 0.17.0). Le chemin original du répertoire était ~/Library/Application Support/Steam/steamapps/common/Factorio/factorio.app/Contents/data/base/campaigns/demo/locale/ru . La partie de demo vers le bas, le jeu ne démarrait pas correctement (il était vide, à part les répertoires, mais le jeu essayait de récupérer un fichier inexistant dans le répertoire demo et s'est écrasé). En déplaçant le répertoire, le jeu est devenu jouable, mais j'ai découvert par la suite que le répertoire le plus en bas de l'écran, le ru n'a pas pu être supprimé. Voici le répertoire que j'ai ensuite renommé strange et à laquelle je me réfère tout au long de cette question.

J'ai fait part de mes observations à Apple à ce sujet, mais je ne suis pas un développeur Apple et je ne peux donc pas soumettre de rapport de bogue officiel.

21voto

Mant101 Points 1404

J'ai déposé un rapport de bogue auprès d'Apple et il semble que ce problème soit enfin résolu dans Mojave 10.14.4 (18E226).

Pour résoudre ce problème, mettez à jour votre système d'exploitation avec la dernière version. Redémarrez ensuite en mode de récupération (CMD-R) et exécutez le programme disk first aid.

Il doit indiquer un ou plusieurs error: directory valence check: directory (oid 0x123456): nchildren (1) does not match drec count (0) et / ou error: nchildren of inode object (id 12345678) does not match expected value et les réparer.

Une fois que c'est fait, redémarrez OS X et vous devriez enfin pouvoir supprimer le dossier normalement !

1voto

Memmo Points 109

En bref :
1) mettre à jour OSX vers la dernière version
2) démarrer en mode de récupération
3) démarrer le disque de premiers secours (qui devrait réparer des choses)
4) redémarrer

0voto

Old Pro Points 5634

Adam's répondre est correcte et ma réponse précédente n'est pas très utile, mais j'inclus ceci dans la section des commentaires comme une autre chose à essayer :

Essayez de supprimer vos instantanés APFS :

  • tmutil listlocalsnapshots
  • sudo tmutil deletelocalsnapshots SNAPSHOT_DATE

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X