Como remover um diretório vazio (sistema de arquivos btrfs)?

Como remover um diretório vazio (sistema de arquivos btrfs)?

Estou usando o btrfssistema de arquivos experimental.

Meu diretório está assim:

 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 ..

Tento removê-lo, rm -rf emptyfoldermas dá o erro rm: cannot remove directory: directory not empty?Como posso remover/excluir minha pasta vazia? Por que tenho 4 arquivos nesta pasta? Estou tentando excluí-lo como usuário root. Meu sistema de arquivos é btrfs.

stat emptyfolderme dá:

 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    : -

Tenho alguns problemas com o relógio do meu sistema. Às vezes está mostrando a hora errada.

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

O que é esse daemon gvfs-fuse? Como posso excluí-lo?

Eu tentei fuser -uv /dev/disk sem sucesso. Não há nenhum processo acessando a pasta. Mudei a pasta para tmp.

Responder1

Perguntas frequentes sobre Btrfs - Não consigo excluir um diretório vazio:

Primeiro caso, se você pegar:

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

então provavelmente é porque "emptydir" é na verdade um subvolume.

Você pode verificar se este é o caso com:

btrfs subvolume list -a /mountpoint

Para excluir o subvolume você terá que executar:

btrfs subvolume delete emptydir

Segundo caso, se você pegar:

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

então você pode ter um diretório vazio com um i_size diferente de zero.

Você pode verificar se este é o caso com:

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

A execução btrfs checknesse sistema de arquivos (desmontado) confirmará o problema e listará outros diretórios problemáticos (se houver).

Você obterá uma saída semelhante (trecho):

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

Esses erros devem ser corrigíveis, btrfs check --repairdesde que você execute uma versão recente o suficiente do btrfs-progs.

Observe que isso btrfs check --repairnão deve ser usado levianamente, pois em alguns casos pode piorar o problema em vez de consertar alguma coisa.

Responder2

Eu tive sintomas semelhantes com uma partição btrfs e

btrfs check --repair /dev/sdXY

resolveu o problema para mim. Os erros encontrados foram do tipo:

root X inode Y errors 200, dir isize wrong

e

root X inode Y errors 80, file extent overlap

O segundo tipo de erro permaneceu mesmo após o reparo, o que começou a me preocupar.

Responder3

Tive esse problema com um diretório órfão em uma caixa ReadyNAS. O compartilhamento não estava mais visível na GUI, mas o diretório abaixo de /data existia até agora. Então, eu queria remover esta pasta, mas o rmdir não funciona.

Eu apaguei instantâneo por instantâneo

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

Depois de excluir todos os instantâneos, consegui remover a própria "pasta"

btrfs subvolume delete ./VirtualBox1

Responder4

Tente cdsair do vazio e executá lsof +D /path/to/emptydir-lo para ver o que está aberto. Dependendo de qual é o diretório e como é usado, talvez algo esteja abrindo e fechando o diretório muito rápido e você simplesmente o detecta quando ele não contém nada ao executar ls, mas possui algo ao executar rm -fr emptydir. Não deve fazer nenhuma diferença neste caso, mas tente também executar o rmdir emptydir.

O número total no topo da sua lssaída (acho que insgesamt significa total?) Indica um diretório vazio.

Acho que conhecer o tipo de sistema de arquivos também pode ser útil. Você provavelmente também deseja executá fsck-lo e ver se isso ajuda.

informação relacionada