Dimensione del file con compressione zfs


9

Di solito stimo la dimensione di un intero albero di directory usando du -ks $DIRECTOY_TREE_ROOT, ma questo metodo non può essere usato quando la compressione zfs è attiva.

Il totalvisualizzato da ls -lva bene per una singola directory, ma qual è il modo più semplice per ottenere lo stesso risultato per un albero di directory?

MODIFICARE:

Il sistema operativo è Solaris 10.

Sto cercando la dimensione del file reale, non lo spazio utilizzato sul disco.


Stai cercando lo spazio effettivo utilizzato sul disco o la dimensione del file reale?
justarobert,

Risposte:


5

Questo dovrebbe funzionare solo:

find . -type f -exec ls -l {} + | nawk '{s=s+$5}
END {print s}'


3

È possibile ottenere sia la dimensione del file sia l'utilizzo approssimativo del disco direttamente dal comando 'trova' con il parametro '-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
        }
    '
)

Alcuni comandi e output di esempio:

-bash-3.00# lsdu test_sloccount/
Path: test_sloccount/ 
  Total Size: 30.90 MB 
  Disk Usage: 1.43 MB 
  Compress Ratio: 21.6250 

2

Questo oneliner dovrebbe produrre il risultato desiderato:

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

Non ho una partizione ZFS su cui provarla, ma sulla mia partizione ext4 produce lo stesso risultato du -ks.


La domanda è stata modificata per chiedere la dimensione effettiva dei file, non quella utilizzata sul disco che riportano sia du che ls total.
jlliagre,

2

man du probabilmente aiuterebbe qui:

 --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

Queste non sono tali opzioni per Solaris 10 du. È un'estensione Gnu non standard.
jlliagre,

Potrebbe essere. Solaris Express 11 ce l'ha però.
the-wabbit

4
Solaris 10 non raggruppa Gnu du. Solaris 11 Express ha entrambi / usr / bin / du che non supporta l'opzione --apparent-size e / usr / gnu / bin / du che la supporta.
jlliagre,

2

Includerò la risposta a questa domanda per FreeBSD per completezza. Secondo man du:

 -A      Display the apparent size instead of the disk usage.  This can be
         helpful when operating on compressed volumes or sparse files.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.