ขนาดไฟล์ที่มีการบีบอัด zfs


9

ฉันมักจะประมาณขนาดของทรีไดเรกทอรีทั้งหมดที่ใช้du -ks $DIRECTOY_TREE_ROOTแต่วิธีนี้ไม่สามารถใช้ได้เมื่อมีการเปิดใช้การบีบอัด zfs

totalแสดงโดยls -lเป็น ok สำหรับไดเรกทอรีเดียว แต่ซึ่งเป็นวิธีที่ง่ายที่สุดที่จะได้รับผลเช่นเดียวกันสำหรับต้นไม้ไดเรกทอรีหรือไม่?

แก้ไข:

ระบบปฏิบัติการคือ Solaris 10

ฉันกำลังมองหาขนาดไฟล์จริงไม่ใช่พื้นที่ที่ใช้บนดิสก์


คุณกำลังมองหาพื้นที่จริงที่ใช้กับดิสก์หรือขนาดไฟล์จริงหรือไม่?
justarobert

คำตอบ:



12

เพียงใช้du -b ตัวอย่าง:

# du -sh .
215G    .

# du -sbh .
344G    .

สิบสองคะแนนขึ้นไปแม้จะมีความจริงไม่มีตัวเลือก "-b" กับ Solaris 10 du...
กรกฎาคม

บน Solaris 11 สามารถใช้งานได้gdu -bsh foldername
Copy Run เริ่ม

3

เป็นไปได้ที่จะได้รับทั้งขนาดไฟล์และการใช้งานดิสก์โดยประมาณอย่างยิ่งจากคำสั่ง 'ค้นหา' พร้อมกับพารามิเตอร์ '-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
        }
    '
)

ตัวอย่างคำสั่งและเอาต์พุต:

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

2

ผู้เผยแพร่รายนี้ควรให้ผลลัพธ์ที่ต้องการ:

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

ฉันไม่ได้มีพาร์ทิชัน ZFS เพื่อทดสอบ แต่ในพาร์ทิชัน ext4 du -ksของฉันมันจะออกผลลัพธ์ผลเช่นเดียวกับ


มีการแก้ไขคำถามเพื่อขอขนาดจริงของไฟล์ไม่ใช่ขนาดที่ใช้กับดิสก์ซึ่งมีทั้งรายงานทั้งหมดและดูทั้งหมด
jlliagre

2

ผู้ชาย du อาจจะช่วยที่นี่:

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

สิ่งเหล่านี้ไม่มีตัวเลือกเช่น OS Solaris 10 du มันเป็นนามสกุล Gnu ที่ไม่ได้มาตรฐาน
jlliagre

อาจจะ. Solaris Express 11 มีอยู่แล้ว
the-wabbit

4
Solaris 10 ไม่ได้รวม Gnu du Solaris 11 Express มีทั้ง / usr / bin / du ที่ไม่รองรับตัวเลือก --apparent-size และ / usr / gnu / bin / du ที่รองรับ
jlliagre

2

ฉันจะรวมคำตอบสำหรับคำถามนี้เพื่อ FreeBSD เพื่อความสมบูรณ์ ตามman du:

 -A      Display the apparent size instead of the disk usage.  This can be
         helpful when operating on compressed volumes or sparse files.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.