Eu tenho uma máquina rodando Debian Squeeze com apache, mysql, php ... Em um dos diretórios existem outros diretórios e arquivos demais com mais de 500k, tentei excluir via WinSCP, mas ele trava. Mesmo depois de mais de 24 horas, o WinSCP ainda não responde. No momento, estou tentando excluir este diretório com o Putty (rm -rf dirname), mas, assim como o WinSCP, ele não respondeu. Alguma sugestão? Obrigado!
Eu tenho acesso root à máquina.
Respostas:
A exclusão do diretório deve funcionar. Você pode ter problemas se estiver tentando excluir arquivos individuais, porque existem muitos. Você não
rm -rf dirname/*
está correndo, está?Meu palpite é que você está perdendo a conexão ssh devido à inatividade. Tem certeza de que o comando não foi executado corretamente no servidor?
Em qualquer caso, uma possível solução alternativa seria usar nohup :
Você pode iniciar o comando e efetuar logoff, ele continuará em segundo plano.
ATUALIZAR:
Eu encontrei essa pergunta na U & L.SE, recomendo que você dê uma olhada nela. Infelizmente, não consigo recriar seu problema. Criei um diretório com arquivos 2516007 e sempre poderia excluí-lo usando
rm -rf
:Então, levou 20 minutos para excluir ~ 2 milhões de arquivos vazios. Parece razoável que possa levar horas para excluir uma enorme quantidade de arquivos não vazios.
De qualquer forma, algumas das sugestões da pergunta de U&L devem ajudar. Especificamente este:
ou este (ligeiramente modificado do original)
Finalmente, um truque que você pode fazer é excluir alguns arquivos de cada vez. Se você souber que alguns nomes de arquivos começam com a string "foo", outros "bar" etc, faça o seguinte:
e assim por diante. Você também pode tentar algo como isto:
Este último comando excluirá seqüencialmente cada nome de arquivo que começa com cada letra do alfabeto e, em seguida, qualquer nome de arquivo que comece com números.
fonte
screen
mas a tela nem sempre é incluída por padrão.rm -rf dirname/*
, tentarei:nohup rm -rf dirname
mas como esse é um servidor de produção, ele prejudicará seu desempenho durante a execução e como posso interrompê-lo se falhar?killall rm
oukill $PID
onde$PID
está o ID do processo.nohup rm -rf dirname
ontem (~ 18 horas atrás) e efetuei logoff, agora a pasta ainda existe.Como um lado não para a resposta já postada. Da minha experiência em lidar com o sistema de arquivos que ficou sem inodes. Com mais de bilhões de arquivos no sistema de arquivos.
A maneira mais rápida de excluir / listar arquivos é usando o find, especialmente se você tiver milhares de arquivos / diretórios. A localização começa a funcionar imediatamente, desde que não haja expansão a ser feita.
Não use
*
ou qualquer outro tipo de expansão de linha de comando como parte do seu comando.*
é executado no terminal antes de ser passado para o comando rm / ls etc. Portanto, seu terminal fica lá tentando listar todos os cem mil arquivos antes de passá-los para o comando real que fará o trabalho. Isso é muito lento.fonte