Como compactar um diretório

21

De vez em quando, algum aplicativo é executado solta e preenche um diretório com uma enorme quantidade de arquivos. Depois que corrigimos o erro e limpamos os arquivos, o diretório permanece grande (> 50 MB), embora haja apenas 20 a 30 arquivos nele.

Existe algum comando que compacta um diretório sem precisar recriá-lo?

Pontos de bônus: um diretório vazio enorme afeta o desempenho de acesso desse diretório? Suponho que sim, mas talvez não valha a pena incomodar. Parece mais lento lsem um diretório assim.

Mathieu Longtin
fonte
Eu não acho que exista isso (mas é claro que posso estar completamente errado). Talvez algumas ferramentas específicas do sistema de arquivos - que FS você está usando?
Mat
ext3, mas já vi esse problema na maioria dos sistemas de arquivos com os quais lidei no mundo unix. Também não acho que exista essa ferramenta, mas gostaria de provar que estou errado.
Mathieu Longtin
4
Eu marquei sua pergunta "ext3", uma vez que esta pergunta é muito específica ao sistema de arquivos. Não sei a resposta para ext3 (suspeito que você precise recriar o diretório para encolher), mas você tentou forçar um fsck? O ext3's fsckpossui um passe "Otimizando diretório". Não sei o que isso faz, mas talvez diminua diretórios grandes demais? De qualquer forma, como um ponto de dados FWIW, o xfs envia automaticamente diretórios que tiveram arquivos removidos deles.
Celada 14/05
Você, por acaso, excluiu arquivos abertos?
Karlson 14/05
1
Os UFs nos BSDs e Mac HFS também reduzem os diretórios em tempo real. Estou surpreso ao saber que ext3 não. O ext4 também não parece fazer isso.
Kyle Jones

Respostas:

10

Você executa e2fsck -Dno sistema de arquivos desmontado.

psusi
fonte
1
Eu esperava algo menos perturbador.
Mathieu Longtin
1
@MathieuLongtin, Você também pode mover tudo para um novo diretório, excluir o antigo e renomear o novo.
Psusi 15/05/12
Eu sabia sobre esse truque, mas ele pode atrapalhar os processos usando o diretório como um diretório de trabalho atual.
Mathieu Longtin