A exclusão do diretório deve funcionar. Você pode se deparar com problemas se estiver tentando excluir arquivos individuais porque existem muitos. Você não está executando rm -rf dirname/*
você está?
Meu palpite é que você está perdendo a conexão ssh por causa da inatividade, tem certeza de que o comando não foi executado corretamente no servidor?
Em qualquer caso, uma solução possível seria usar nohup :
nohup rm -rf dirname
Você pode iniciar o comando e fazer logoff, ele continuará em segundo plano.
ATUALIZAÇÃO:
Eu encontrei esta pergunta em U & L.SE, eu recomendo que você dê uma olhada nisso. Infelizmente, não posso recriar o seu problema. Eu fiz um diretório com 2516007 arquivos e sempre poderia deletá-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 demorar horas para eliminar uma enorme quantidade de ficheiros não vazios.
De qualquer forma, algumas das sugestões da pergunta 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
Por fim, um truque que você pode fazer é excluir alguns arquivos de cada vez. Se você sabe que alguns nomes de arquivos começam com a string "foo", outros "bar" etc, faça isso:
rm -rf /delb/foo*
rm -rf /delb/bar*
e assim por diante. Você também pode tentar algo assim:
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 irá apagar sequencialmente cada nome de arquivo começando com cada letra do alfabeto, então qualquer nome de arquivo começando com números.