Existe uma maneira de obter rapidamente um tamanho preciso para um diretório (incluindo, recursivamente, todos os seus subdiretórios)? Não quero os tamanhos dos subdiretórios, apenas quero dizer que eles devem ser recursivamente incluídos no tamanho total relatado.
Na sua falta, uma maneira de obter um tamanho aproximado? Estou pensando que algo df
desse tipo produz uma resposta rápida para todo o sistema de arquivos, mas desta vez para um diretório específico (e seus subdiretórios).
As soluções que usam du
parecem levar anos quando um diretório contém milhares de subdiretórios.
du
é o único método que eu conheço. O problema é que os dados estão espalhados por toda a hierarquia e, portanto, precisam ser contabilizados por uma ferramenta para obter as contagens.Respostas:
Acho que isso é bastante útil.
ou para obter uma análise dos diretórios internos
e depois com um tipo, se tem muitos subdiretórios
O motivo pelo qual uso a opção -m é garantir que eu receba uma saída em megabytes. Acho que é mais fácil comparar visualmente (quando não estou obtendo uma mistura de unidades, por exemplo, comparar 999 KB e 1MB vs 999000MB e 1000000MB), o benefício adicional é que você pode passar a saída em ordem.
Coloque tudo isso em segundo plano e redirecione a saída, levará tempo, qualquer que seja o método usado, é um cruzamento de muitos arquivos que levarão tempo.
Observe a ordem inversa para que as grandes estejam no começo. Adicione isso à execução do cron a cada n minutos.
Então, com um alias ducache, você tem um uso de diretório bastante atualizado.
fonte
shopt -s dotglob
, caso contráriodu -sm Directory/*
, não contará arquivos / diretórios ocultos.fornecerá um resumo do tamanho total da saída formatada "humana".
Desde que você estava procurando uma alternativa
du
, tenteifind
, mas é exatamente o mesmo:fonte
du
leva muito tempo, pois produz um resultado preciso. Eu esperava uma ferramenta / comando que forneça uma resposta aproximada rápida e suja.df
mas isso funciona em todo o sistema de arquivos.Você pode não gostar da minha resposta, mas acho que a melhor maneira de fazer o que você quer é executar o "du -s" em segundo plano regularmente usando cron e armazenar o resultado em um arquivo. Então, quando você desejar um valor aproximado, use o valor do arquivo Você decide com que frequência executar o du. Não vejo uma maneira mais rápida de obter o valor. O comando du é eficiente para o que faz.
A única outra maneira de fazer isso muito rapidamente é criar um sistema de arquivos para o diretório, e o df obterá a resposta que você deseja muito rapidamente.
Se for mais rápido saber tudo no sistema de arquivos, exceto o seu diretório, você poderá executar o df para o sistema de arquivos, du para tudo que não seja o seu diretório e subtrair.
fonte
Não atende exatamente às suas necessidades (não é impressão em uma linha), mas é muito mais fácil do que outras soluções:
Este comando fornecerá o tamanho do diretório e subdiretório e o tamanho do arquivo ou subdiretório maior no diretório atual.
PS:
head -2
É o caso de um subdiretório ocupar todo o lugar do diretório atual e ser ouvido antes do atual.fonte