Question Taille du fichier avec compression zfs


J’estime habituellement la taille de tout un répertoire en utilisant du -ks $DIRECTOY_TREE_ROOT, mais cette méthode ne peut pas être utilisée lorsque la compression zfs est activée.

le total affiché par ls -l est ok pour un seul répertoire, mais quel est le moyen le plus simple d’obtenir le même résultat pour une arborescence de répertoires?

MODIFIER:

Le système d'exploitation est Solaris 10.

Je recherche une taille de fichier réelle, pas l'espace utilisé sur le disque.


9
2018-03-31 07:46


origine


Recherchez-vous l'espace réel utilisé sur le disque ou la taille réelle du fichier? - justarobert


Réponses:


Cela devrait juste fonctionner:

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

5
2018-04-02 10:07





Juste utiliser du -b Exemple:

# du -sh .
215G    .

# du -sbh .
344G    .

12
2018-05-16 21:03





Il est possible d’obtenir la taille du fichier et l’utilisation approximative du disque directement à partir de la commande 'find' avec le paramètre '-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
        }
    '
)

Quelques exemples de commande et de sortie:

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

3
2017-12-30 11:47





Cet oneliner devrait produire le résultat souhaité:

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

Je n'ai pas de partition ZFS pour le tester, mais sur ma partition ext4, il génère le même résultat que du -ks.


2
2018-03-31 08:13



La question a été modifiée pour demander la taille réelle des fichiers, et non celle utilisée sur le disque dont le total et le total sont tous deux rapportés. - jlliagre


man du aiderait probablement ici:

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

2
2018-03-31 09:20



Cette option n’existe pas sous Solaris 10 du. C'est une extension non standard de Gnu. - jlliagre
Pourrait être. Solaris Express 11 l’a cependant. - the-wabbit
Solaris 10 ne contient pas Gnu du. Solaris 11 Express comporte à la fois / usr / bin / du qui ne prend pas en charge l’option --apparent-size et / usr / gnu / bin / du qui le prend en charge. - jlliagre
@ Jlliagre merci pour la perspicacité. - the-wabbit


Je vais inclure la réponse à cette question pour FreeBSD par souci d’exhaustivité. Selon man du:

 -A      Display the apparent size instead of the disk usage.  This can be
         helpful when operating on compressed volumes or sparse files.

2
2018-02-06 19:55