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 :
nohup rm -rf dirname
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
:
$ mkdir ha
$ for X in $(seq 1 10000);do touch {1..10000}_$X; done
$ ls -f ha | wc -l
2516007 <= I stopped before the for loop finished, but this should be enough
$ time rm -rf ha/
real 23m11.695s
user 0m3.540s
sys 0m42.891s
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:
find /delb -type f --delete
ou este (ligeiramente modificado do original)
find /delb -type f -print0 | xargs -0r rm -f
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:
rm -rf /delb/foo*
rm -rf /delb/bar*
e assim por diante. Você também pode tentar algo como isto:
for n in {a..z}; do rm -rf /delb/$n*; done
for n in {A..Z}; do rm -rf /delb/$n*; done
for n in {0..9}; do rm -rf /delb/$n*; done
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.