¿Cómo eliminar un directorio vacío (sistema de archivos btrfs)?

¿Cómo eliminar un directorio vacío (sistema de archivos btrfs)?

Estoy usando el btrfssistema de archivos experimental.

Mi directorio se ve así:

 ls -la empytfolder
 total 4
 drwxr-xr-x 1 root root   0 19. Mär 14:00 .
 drwxr-xr-x 1 root root 298 19. Mär 13:59 ..

Intento eliminarlo rm -rf emptyfolderpero aparece el error rm: cannot remove directory: directory not empty?¿Cómo puedo eliminar/eliminar mi carpeta vacía? ¿Por qué tengo 4 archivos en esta carpeta? Estoy intentando eliminarlo como usuario root. Mi sistema de archivos es btrfs.

stat emptyfolderme da:

 Datei: „emptyfolder“
 Größe: 0           Blöcke: 0          EA Block: 4096   Verzeichnis
 Gerät: 21h/33d Inode: 256         Verknüpfungen: 1
 Zugriff: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
 Zugriff    : 2012-03-19 14:00:28.205205566 +0100
 Modifiziert: 2012-03-19 14:00:23.925025572 +0100
 Geändert   : 2012-03-19 14:00:23.925025572 +0100
 Geburt    : -

Tengo algunos problemas con el reloj de mi sistema. A veces muestra la hora equivocada.

$ lsof +D emptyfolder
lsof: WARNING: can't stat() fuse.gvfs-fuse-daemon file system /home/user
/.gvfs Output information may be incomplete.

¿Qué es este demonio gvfs-fuse? ¿Cómo puedo eliminarlo?

Probé fuser -uv /dev/disk sin éxito. No hay ningún proceso que acceda a la carpeta. Moví la carpeta a tmp.

Respuesta1

Preguntas frecuentes de Btrfs: no puedo eliminar un directorio vacío:

primer caso, Si lo consigues:

rmdir: failed to remove ‘emptydir’: Operation not permitted 

entonces esto probablemente se deba a que "emptydir" es en realidad un subvolumen.

Puedes comprobar si este es el caso con:

btrfs subvolume list -a /mountpoint

Para eliminar el subvolumen tendrás que ejecutar:

btrfs subvolume delete emptydir

Segundo caso, Si lo consigues:

rmdir: failed to remove ‘emptydir’: Directory not empty 

entonces es posible que tenga un directorio vacío con un i_size distinto de cero.

Puedes comprobar si este es el caso con:

stat -c %s emptydir
3196         <-- unexpected non-zero size

La ejecución btrfs checken ese sistema de archivos (desmontado) confirmará el problema y enumerará otros directorios problemáticos (si los hay).

Obtendrá un resultado similar (extracto):

checking fs roots
root 5 inode 557772 errors 200, dir isize wrong
root 266 inode 24021 errors 200, dir isize wrong ...

Estos errores deberían poder solucionarse btrfs check --repairsiempre que ejecute una versión suficientemente reciente de btrfs-progs.

Tenga en cuenta que btrfs check --repairno debe usarse a la ligera, ya que en algunos casos puede empeorar el problema en lugar de solucionarlo.

Respuesta2

He tenido síntomas similares con una partición btrfs y

btrfs check --repair /dev/sdXY

solucionó el problema para mí. Los errores encontrados fueron de la forma:

root X inode Y errors 200, dir isize wrong

y

root X inode Y errors 80, file extent overlap

Sin embargo, el segundo tipo de error persistió incluso después de la reparación, lo que empezó a preocuparme.

Respuesta3

Tuve este problema con un directorio huérfano en una caja ReadyNAS. El recurso compartido ya no estaba visible en la GUI, pero el directorio debajo de /data existía hasta ahora. Entonces quería eliminar esta carpeta pero rmdir no funciona.

Eliminé instantánea por instantánea

cd /data
btrfs subvolume delete ./VirtualBox1/.snapshots/309/snapshot
...
btrfs subvolume delete ./VirtualBox1/.snapshots/2/snapshot
btrfs subvolume delete ./VirtualBox1/.snapshots/1/snapshot
btrfs subvolume delete ./VirtualBox1/.snapshots

Después de eliminar todas las instantáneas, pude eliminar la "carpeta" misma.

btrfs subvolume delete ./VirtualBox1

Respuesta4

Intente cdsalir del directorio vacío y ejecutarlo lsof +D /path/to/emptydirpara ver qué lo tiene abierto. Dependiendo de cuál sea el directorio y cómo se usa, tal vez algo esté abriendo y cerrando el directorio muy rápido y simplemente lo detectas cuando no tiene nada cuando ejecuta ls pero sí tiene algo cuando ejecuta rm -fr emptydir. En este caso no debería haber ninguna diferencia, pero intenta ejecutar también rmdir emptydir.

El número total en la parte superior de su lssalida (supongo que insgesamt significa total?) indica un directorio vacío.

Creo que conocer el tipo de sistema de archivos también puede resultar útil. Probablemente también quieras ejecutarlo fscky ver si eso ayuda.

información relacionada