Taille de fichier avec compression zfs


9

du -ks $DIRECTOY_TREE_ROOTJ'évalue généralement la taille d'une arborescence de répertoires complète à l'aide , mais cette méthode ne peut pas être utilisée lorsque la compression zfs est activée.

L' totalaffichage par ls -lest correct pour un seul répertoire, mais quelle est la manière la plus simple d'obtenir le même résultat pour une arborescence de répertoires?

ÉDITER:

Le système d'exploitation est Solaris 10.

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


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

Réponses:


5

Cela devrait simplement fonctionner:

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


3

Il est possible d'obtenir à la fois 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 

2

Cette doublure 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 la tester, mais sur ma partition ext4, elle produit le même résultat que du -ks.


La question a été modifiée pour demander la taille réelle des fichiers, pas celle utilisée sur le disque que le total du et ls signalent.
jlliagre

2

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

Ce n'est pas une telle option sur Solaris 10 du. Il s'agit d'une extension Gnu non standard.
jlliagre

Pourrait être. Solaris Express 11 l'a cependant.
le-wabbit le

4
Solaris 10 ne regroupe pas Gnu du. Solaris 11 Express possède à la fois / usr / bin / du qui ne prend pas en charge l'option --apparent-size et / usr / gnu / bin / du qui la prend en charge.
jlliagre

2

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.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.