35 votos

Extraño caso de archivo realmente invisible (?) y directorio indeleble en MacOS

Tengo problemas para eliminar un directorio en mi sistema MacOS Mojave 10.14.3.

El sistema de archivos es APFS y estos son los síntomas:

$ 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/

Observe que el número de enlaces del directorio es 3. Un directorio vacío recién creado tiene un número de enlaces de 2.

Ningún otro archivo o directorio del sistema tiene el mismo número de inodo (esto se comprobó utilizando sudo find / -inum 786499 ), y creo que los directorios en los sistemas de archivos APFS no pueden tener enlaces duros adicionales de todos modos (como pueden con HFS+).

Al poner el directorio en la papelera y vaciarlo se obtiene un diálogo con el texto

La operación no puede completarse porque el elemento "extraño" está en uso.

Sin embargo, la ejecución de sudo lsof "$HOME/strange" (después de devolver el directorio a mi directorio principal) no devuelve nada, y reiniciar la máquina no cambia nada. Usando sudo lsof +L1 (que enumera los archivos abiertos con un recuento de enlaces de cero, es decir, los archivos eliminados que se mantienen abiertos por alguna aplicación) tampoco revela ninguna ruta bajo el strange directorio.

El directorio no tiene ACLs ni atributos extendidos:

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

Al hacer una copia del directorio con el Finder se crea strange copy . Este directorio de copias tiene un número de enlaces de 2 y puede se borrará. Sin embargo, curiosamente, el cuadro de diálogo "Obtener información" en Finder dice que cada directorio (original y copia) contiene un elemento (normalmente informa de cero elementos para los directorios vacíos recién creados).

$ 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

La ejecución de "Primeros auxilios" mediante la "Utilidad de discos" de MacOS no cambia nada (devuelve "Exitoso" al final). Esto independientemente de si se hace en el sistema vivo o en el modo de rescate.

Corriendo fsck_apfs -y en el disco en modo de rescate hace producir una serie de advertencias en una de las instantáneas del sistema de archivos del siguiente tipo:

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

Esto no parece ser reparado por fsck_apfs sin embargo.

¿Alguna pista sobre cómo borrar este directorio?


Para los que se preguntan, el directorio se encontró inicialmente como un subdirectorio de un juego de Steam (Factorio, versión 0.17.0). La ruta original del directorio era ~/Library/Application Support/Steam/steamapps/common/Factorio/factorio.app/Contents/data/base/campaigns/demo/locale/ru . La parte de demo hacia abajo hacía que el juego no se iniciara correctamente (estaba, aparte de los directorios, vacío, pero el juego intentaba recoger algún archivo inexistente del demo directorio y se estrelló). Al apartar el directorio, el juego era jugable, pero más tarde descubrí que el directorio inferior ru no se ha podido eliminar el directorio. Este es el directorio que he renombrado strange y al que me refiero a lo largo de esta pregunta.

He enviado comentarios a Apple sobre esto, pero no soy un desarrollador de Apple, así que no puedo enviar un informe de error formal.

21voto

Mant101 Puntos 1404

Presenté un informe de errores a Apple y esto parece estar finalmente solucionado ahora en Mojave 10.14.4 (18E226).

Para solucionarlo, actualice su sistema operativo a la última versión. A continuación, reinicie en la recuperación (CMD-R) y ejecute disk first aid.

Debe mostrar uno o más error: directory valence check: directory (oid 0x123456): nchildren (1) does not match drec count (0) y / o error: nchildren of inode object (id 12345678) does not match expected value y repararlos.

Una vez hecho esto, reinicie en OS X y finalmente debería poder eliminar la carpeta normalmente.

0voto

Old Pro Puntos 2851

Adán responder es correcto y mi respuesta anterior en sí no es tan útil, pero incluyo esto de la sección de comentarios como otra cosa para probar:

Prueba a borrar tus instantáneas APFS:

  • tmutil listlocalsnapshots
  • sudo tmutil deletelocalsnapshots SNAPSHOT_DATE

0voto

Memmo Puntos 99

En pocas palabras:
1) actualizar OSX a la última versión
2) iniciar en modo de recuperación
3) iniciar los primeros auxilios del disco (que debería arreglar las cosas)
4) reinicio

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X