Tamanho do arquivo com compactação zfs

9

Eu costumo estimar o tamanho de uma árvore de diretório inteira usando du -ks $DIRECTOY_TREE_ROOT , mas esse método não pode ser usado quando a compactação zfs está ativada.

O total exibido por ls -l é válido para um único diretório, mas qual é a maneira mais simples de obter o mesmo resultado para uma árvore de diretórios?

EDITAR:

O sistema operacional é o Solaris 10.

Estou procurando pelo tamanho real do arquivo, não pelo espaço usado no disco.

    
por marcoc 31.03.2011 / 09:46

6 respostas

5

Isso deve funcionar:

find . -type f -exec ls -l {} + | nawk '{s=s+$5}
END {print s}'
    
por 02.04.2011 / 12:07
12

Use apenas du -b exemplo:

# du -sh .
215G    .

# du -sbh .
344G    .
    
por 16.05.2011 / 23:03
3

É possível obter o tamanho do arquivo e o uso aproximado do disco diretamente do comando 'find' com o parâmetro '-ls'

 function lsdu() (
    export SEARCH_PATH=$*
    if [ ! -e "$SEARCH_PATH" ]; then
        echo "ERROR: Invalid file or directory ($SEARCH_PATH)"
        return 1
    fi
    find "$SEARCH_PATH" -ls | gawk --lint --posix '
        BEGIN {
            split("B KB MB GB TB PB",type)
            ls=hls=du=hdu=0;
            out_fmt="Path: %s \n  Total Size: %.2f %s \n  Disk Usage: %.2f %s \n  Compress Ratio: %.4f \n"
        }
        NF >= 7 {
            ls += $7
            du += $2
        }
        END {
            du *= 1024
            for(i=5; hls<1; i--) hls = ls / (2^(10*i))
            for(j=5; hdu<1; j--) hdu = du / (2^(10*j))
            printf out_fmt, ENVIRON["SEARCH_PATH"], hls, type[i+2], hdu, type[j+2], ls/du
        }
    '
)

Alguns exemplos de comando e saída:

-bash-3.00# lsdu test_sloccount/
Path: test_sloccount/ 
  Total Size: 30.90 MB 
  Disk Usage: 1.43 MB 
  Compress Ratio: 21.6250 
    
por 30.12.2011 / 12:47
2

Este oneliner deve produzir o resultado desejado:

find $DIRECTOY_TREE_ROOT -type d -exec ls -l '{}' \; | awk '/^total\ .[0-9]+$/ { sum+=$(NF) }END{ print sum }'

Eu não tenho uma partição ZFS para testá-la, mas na minha partição ext4 ela produz o mesmo resultado que du -ks .

    
por 31.03.2011 / 10:13
2

cara du provavelmente ajudaria aqui:

 --apparent-size
      print apparent sizes, rather than disk usage;  although
      the  apparent size is usually smaller, it may be larger
      due to holes in ('sparse') files,  internal  fragmenta-
      tion, indirect blocks, and the like
    
por 31.03.2011 / 11:20
2

Vou incluir a resposta a esta pergunta para o FreeBSD por completo. De acordo com man du :

 -A      Display the apparent size instead of the disk usage.  This can be
         helpful when operating on compressed volumes or sparse files.
    
por 06.02.2016 / 20:55