Zfs sıkıştırmalı dosya boyutu


9

Genellikle kullanarak tüm dizin ağacının boyutunu tahmin du -ks $DIRECTOY_TREE_ROOT, ancak zfs sıkıştırma açıkken bu yöntem kullanılamaz.

totalTarafından görüntülenen ls -ltek bir dizin için Tamam, ama bir dizin ağacı için aynı sonucu almak için en basit yolu hangisi?

DÜZENLE:

İşletim sistemi Solaris 10'dur.

Diskte kullanılan alanı değil, gerçek dosya boyutunu arıyorum.


Diskte kullanılan gerçek alanı mı yoksa gerçek dosya boyutunu mı arıyorsunuz?
justarobert

Yanıtlar:


5

Bu sadece işe yaramalıdır:

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

12

Sadece du -b örneği kullanın :

# du -sh .
215G    .

# du -sbh .
344G    .

Solaris 10 ile "-b" seçeneği bulunmamasına rağmen on iki oydu
15

Solaris 11'de çalışırgdu -bsh foldername
Kopyala Çalıştır Başlat

3

'-Ls' parametresi ile 'find' komutundan hem dosya boyutunu hem de yaklaşık disk kullanımını doğrudan almak mümkündür

 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
        }
    '
)

Bazı örnek komut ve çıktılar:

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

2

Bu oneliner istenen sonucu vermelidir:

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

Test etmek için bir ZFS bölümüm yok, ancak ext4 bölümümde olduğu gibi aynı sonucu veriyor du -ks.


Soru, hem du hem de ls'nin bildirdiği diskte değil gerçek dosya boyutunu sormak için düzenlenmiştir.
jlliagre

2

man du muhtemelen burada yardımcı olacaktır:

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

Bunlar Solaris 10 du için böyle bir seçenek değil. Standart olmayan bir Gnu uzantısıdır.
jlliagre

Olabilir. Solaris Express 11'de var.
the-wabbit

4
Solaris 10, Gnu du'yu paketlemiyor. Solaris 11 Express, --appar Size-size seçeneğini desteklemeyen hem / usr / bin / du'ya hem de onu destekleyen / usr / gnu / bin / du'ya sahiptir.
jlliagre

2

Bütünlük uğruna FreeBSD için bu sorunun cevabını ekleyeceğim. Göre man du:

 -A      Display the apparent size instead of the disk usage.  This can be
         helpful when operating on compressed volumes or sparse files.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.