sudo rm -rf retorna “não é possível remover o diretório” no diretório vazio de propriedade do root

8

Eu tenho um diretório no meu sistema Debian. O diretório é:

root@debian:/3/20150626# stat 00
File: '00'
Size: 6             Blocks: 0          IO Block: 4096   directory
Device: fe00h/65024d    Inode: 4392587948  Links: 3
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2015-06-25 20:00:00.086150791 -0400
Modify: 2015-07-07 12:39:04.174903234 -0400
Change: 2015-07-07 12:39:04.174903234 -0400
Birth: -

O diretório está vazio:

root@debian:/3/20150626# ls -al 00
total 0
drwxr-xr-x 3 root root  6 Jul  7 12:39 .
drwxr-xr-x 3 root root 23 Jul  7 12:56 ..

Mas meu sistema não pensa assim:

root@debian:/3/20150626# rm -rf 00
rm: cannot remove '00': Directory not empty

Não sei por que isso aconteceria nem consigo encontrar uma maneira de seguir em frente. Alguém pode fornecer assistência?

Nenhuma das questões anteriores que consegui localizar resolveu este problema específico. Mas, para resolver algumas das perguntas que eu tenho visto em posts semelhantes:

a.) A pasta foi criada por um processo em execução, que criou muitas pastas antes e essas pastas foram removidas muitas vezes antes. Este específico está preso no limbo.

b.) Não deve haver nada escrito neste diretório agora. Eu verifiquei muitas vezes e a saída ls -al sempre não retorna nada.

c.) Eu verifiquei o lsof e não há nada aberto para este diretório:

root@debian:/3/20150626# lsof 00
root@debian:/3/20150626# 

d.) rm não é aliado a qualquer outra coisa. É muito parecido com o estoque Debian ... nada de especial feito com qualquer um dos principais programas Bash como rm , etc.

e.) A renomeação é permitida, mas ainda não é possível excluir:

root@debian:/3/20150626# mv 00 delete_me
root@debian:/3/20150626# ls -al
total 0
drwxr-xr-x 3 root root  30 Jul  7 13:45 .
drwxr-xr-x 7 root root 105 Jul  7 12:57 ..
drwxr-xr-x 3 root root   6 Jul  7 12:39 delete_me
root@debian:/3/20150626# rm -rf delete_me
rm: cannot remove 'delete_me': Directory not empty
root@debian:/3/20150626# ls -al delete_me/
total 0
drwxr-xr-x 3 root root  6 Jul  7 12:39 .
drwxr-xr-x 3 root root 30 Jul  7 13:45 ..

** Note, daqui em diante, referindo-se a "delete_me" desde que eu o renomei e vou seguir com o fluxo.

f.) Este é o único diretório que é retornado quando eu executo find nele.

root@debian:/3/20150626# find / -type d -name delete_me
/3/20150626/delete_me
root@debian:/3/20150626# find delete_me
delete_me

g.) lsattr não mostra nada:

root@debian:/3/20150626# lsattr
---------------- ./delete_me
    
por harperville 07.07.2015 / 19:25

2 respostas

1

Encontrei a resposta. Algo estava errado com a ligação, como sugeriu @JeffSchaller. A solução é rodar xfs_check para ver que os links estavam incorretos, e então xfs_repair para consertá-los.

  1. execute mount para visualizar o nome do dispositivo. O meu é /dev/mapper/vg3-lv3
  2. umount /3
  3. xfs_check /dev/mapper/vg3-lv3 que retornou o seguinte:

    link count mismatch for inode 4392587948 (name ?), nlink 3, counted 2

    link count mismatch for inode 12983188890 (name ?), nlink 1, counted 2

  4. xfs_repair /dev/mapper/vg3-lv3 que indicou que os links foram corrigidos:

    resetting inode 4392587948 nlinks from 3 to 2

    resetting inode 12983188890 nlinks from 1 to 2

Acontece que eu tive outro inode que foi vinculado incorretamente.

Obrigado por toda a ajuda, mas usando a magia negra de xfs_repair, meu problema está resolvido.

    
por 07.07.2015 / 23:06
-1

Você tentou verificar se os atributos da pasta / diretório têm o atributo " i " - imutable está ativo! Verifique com o comando lsattr para verificar se a pasta / diretório tem o atributo " i " ativado se você desativá-lo com "*

chattr -i 'folder'

* "Com isso, você pode executar a tarefa desejada.

    
por 07.07.2015 / 20:24