Uso total do disco para um usuário específico


11

Eu gostaria de ver o uso total do disco em um sistema de arquivos específico. Eu executei o comando

du -h ~my_user_name

No entanto, isso lista todos os diretórios pertencentes a my_user_name. Gostaria de obter a soma total de todas essas informações. Qual é a opção apropriada para aprovação? eu tentei

du -h -c ~my_user_name

mas isso não funcionou.

Respostas:



9

Du mostrará apenas os totais por pasta, não por usuário.

Isso pode funcionar se você desejar o tamanho total de, digamos, /home/example_user/e se apenas o exemplo_user tiver arquivos nessa pasta. Se outros usuários tiverem arquivos, isso não produzirá o tamanho de todos os arquivos pertencentes a você, mas o tamanho total de todos os arquivos nessa pasta.

Para obter as informações por usuário:

  1. Se você tiver uma cota ativada, use esses comandos.
  2. Use find para percorrer todos os diretórios nos quais você deseja contar seus arquivos. Use o uid para selecionar apenas seus arquivos e mantenha uma matriz associativa no awk para contar os totais.

find /path/to/search/ -user username_whos_files_to_count -type f -printf "%s\n" | awk '{t+=$1}END{print t}'

Observe que isso usa uma extensão específica de localização GNU.

  • O primeiro comando pesquisa todos os arquivos e diretórios em /path/to/search/.
  • -type fgarante que você selecione apenas os arquivos, caso contrário você também estará contando o tamanho dos diretórios. (Tente criar uma pasta vazia. Provavelmente usará espaço em disco 4k).
  • -user username_whos_files_to_count somente seleciona os resultados de um usuário
  • -printf "%s\n" imprimirá o tamanho.

Se você acabou de executar a primeira parte, receberá uma lista de números. Esses são os tamanhos de arquivo. (Todo o resto é retirado, apenas o tamanho é impresso, graças ao comando% s print.)

Podemos então adicionar todos esses números para obter um resumo. No exemplo, isso é feito com o awk.


+1 ponto bom, obrigado! a resposta abaixo na verdade era exatamente o que eu queria. a distinção de usuário / pasta não importa muito no meu caso
Alex

Agradável. du -sché um comando fácil frequentemente usado. Rastrear quem possuía o que quando as coisas eram misturadas é muito mais difícil, embora possa ser feito como uma única linha. Eu usei uma vez, mas tive problemas para reconstruí-lo hoje.
Hennes

Ajudou-me muito, Perfect Explicação
Babin Lonston

2

Para encontrar todo o uso por um usuário específico, um bom comando é:

find -user $USER -type f -exec du -chs {} +

Você pode modificar ainda mais, dependendo das necessidades específicas, por exemplo, muitas vezes quero resumir o uso por pasta, e o seguinte funciona bem:

find . -maxdepth 1 -user $USER -type d ! -path . -exec du -chs {} +

Ele localiza apenas diretórios em um nível, os limites por usuário, exclui o diretório pai e imprime cada diretório e um resumo no final.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.