Por que não consigo excluir uma pasta?

13
Could not remove the folder [Folder name].

Show more details
 Error removing file: Directory not empty

Cancel-Skip All-Skip

Eu tentei excluir essas pastas do terminal com:

rm -r
    
por tepheno 15.03.2013 / 16:31

6 respostas

8

Você tentou sudo rm -r . Que tipo de arquivos existem? Você também pode excluir todos os arquivos primeiro e depois excluir a pasta. É um trabalho extra, mas às vezes vale a pena fazer o trabalho.

sudo é para ações de superusuário.

    
por wlraider70 15.03.2013 / 21:29
8

Eu tive esse problema com uma pasta em um sistema de arquivos btrfs. Verificar os pontos de montagem e lsof são as coisas normais para procurar. No meu caso, foi corrupção causada por um bug antigo, desde que corrigido:

As coisas normais para verificar:

  • lsof + D - Isso vai l s t all o caneta f iles. Você não pode excluir uma pasta que contenha arquivos abertos, embora isso normalmente também forneça um erro ligeiramente diferente: "Dispositivo ou recurso ocupado". Observe que, se você deixar de fora o "+ D < path >", o lsof mostrará uma listagem para todas as pastas em todos os sistemas de arquivos - o que desperdiçará tempo. ;)
  • mount : Isso mostrará os sistemas de arquivos atualmente montados. Você não pode excluir um ponto de montagem montado ativamente ou suas pastas pai.
  • sub-lista btrfs < path > : semelhante a um ponto de montagem, não é possível excluir um subvolume btrfs, exceto usando o comando btrfs-specific: subvolume btrfs delete < path > .

Solução alternativa de corrupção

No caso de corrupção em que não pode ser facilmente corrigido, a solução básica é fazer o backup, formatar o sistema de arquivos e restaurar (deixando de fora os dados incorretos). Dependendo da quantidade de dados que você tem no sistema de arquivos, isso pode ser uma tarefa difícil. : - /

No meu caso, a pasta problemática estava dentro de um subvolume, então eu consegui fazer o acima, mas excluindo apenas o subvolume ao invés do sistema de arquivos inteiro. Copiei meus dados e excluí o subvolume: btrfs sub del < subvolume-path > . Eu consegui então restaurar em um novo subvolume, deixando de fora a pasta do problema.

Corrupção de i_size

A causa no meu caso foi encontrada como corrupção de i_size , onde era diferente de zero. O Btrfs usa o i_size para dizer se a pasta está ou não vazia. Para verificar isso, execute:

stat -c %s <foldername>

O i_size de uma pasta vazia no btrfs deve ser zero. Em ext é tipicamente 4k.

Links relacionados:

link

    
por zaTricky 01.07.2014 / 08:35
4

Teste cd no diretório e remova todos os arquivos usando rm -rf * . Em seguida, tente sair do diretório e use rmdir para excluir o diretório.

    
por jkd 18.02.2015 / 06:02
0

Se você não tiver permissões de gravação definidas, não será possível remover o diretório.

No exemplo abaixo, mesmo sendo um proprietário do diretório, não consigo removê-lo. Depois de adicionar permissões de gravação com chmod - tudo é bem-sucedido.

DIR:/xieerqi
skolodya@ubuntu:$ ls -dl TESTDIR/                                              
dr-xr-xr-x 2 xieerqi xieerqi 4096 Jan 24 16:06 TESTDIR//

DIR:/xieerqi
skolodya@ubuntu:$ rm -rf TESTDIR/                                              
rm: cannot remove ‘TESTDIR/one & two’: Permission denied
rm: cannot remove ‘TESTDIR/tom&jerry’: Permission denied
rm: cannot remove ‘TESTDIR/jekyl&hide’: Permission denied
rm: cannot remove ‘TESTDIR/pdfReader.sh’: Permission denied

DIR:/xieerqi
skolodya@ubuntu:$ chmod +w TESTDIR/                                            

DIR:/xieerqi
skolodya@ubuntu:$ rm -rf TESTDIR/                                              

DIR:/xieerqi
skolodya@ubuntu:$ echo $?
0
    
por Sergiy Kolodyazhnyy 25.01.2016 / 10:15
0

Vá até a pasta que você deseja excluir e execute este comando alterando o nome da pasta pelo nome da sua pasta: rm -rf nome da pasta

R significa recursivo e f significa força.

    
por Ramon Suarez 15.03.2013 / 19:20
0

Experimente: rmdir --ignore-fail-on-non-empty *directory*

    
por Jamie 18.02.2015 / 05:46