du --exclui diretórios - isso é possível?

3

Como calcular o uso de disco de uma árvore de arquivos, mas excluindo diretórios.

Eu gostaria de ter algo como:

du --exclude type d

Eu uso o rsync para espelhar / fazer backup de parte do diretório home e quero verificar o tamanho total após o backup, mas por algum motivo um diretório tem tamanhos diferentes na origem e no destino, a saber: 12288 B e 16384 B. diretórios tem 4096 B.

Tanto a origem quanto o destino são ext4.

    
por sZpak 03.05.2016 / 16:01

4 respostas

3

Basta fornecer uma lista de tudo que você deseja contar usando --files0-from

 find -type f -print0 | du --files0-from=-
    
por 03.05.2016 / 20:11
1

Se você tiver o GNU find, poderá imprimir os tamanhos dos arquivos.

find /source ! -type d -printf '%P %s\n'

Classifique a saída para obter uma saída determinística. Se os nomes dos arquivos contiverem novas linhas, é possível obter a mesma saída classificada para diferentes arranjos, mas isso não acontecerá a menos que seja deliberadamente projetado.

comm -3 <(find /source ! -type d -printf '%P %s\n') <(find /destination ! -type d -printf '%P %s\n')
    
por 04.05.2016 / 02:21
0

Duas respostas sugeridas são específicas para o Linux. Aqui está uma sugestão, aderindo ao POSIX:

#!/bin/sh
find "$@" -type f |\
xargs du -s |\
awk 'BEGIN {total = 0;} { total += $1; } END { print total; }'

Alternativamente, você poderia tentar contornar espaços em nomes de caminho (ainda POSIX):

#!/bin/sh
find "$@" -type f -exec du -s {} + |\
awk 'BEGIN {total = 0;} { total += $1; } END { print total; }'

A propósito, o OP pediu tamanho total ; Por alguma razão, outras respostas tentam fornecer um detalhamento de tamanhos por arquivo.

Leitura adicional:

por 04.05.2016 / 02:31
-1

Acredito que o que você está procurando é --max-depth .

Então, por exemplo. Se você quisesse calcular o uso do disco de um diretório sem todos os seus subdiretórios, é assim que seria feito.

du [directory name] --max-depth=1

Se você quiser encontrar o tamanho de seus subdiretórios, basta aumentar a profundidade.

Eu encontrei um link que dá muita informação sobre como usar du se isso não ajudar você pode conferir este site sobre du . Que fornece uma boa quantidade de informações sobre du .

    
por 03.05.2016 / 16:18