บนระบบ Ubuntu ของฉันโดยใช้ ext4 du -b file
จะให้ขนาดเป็นไบต์ของไฟล์จริงและdu -b dir
ให้ขนาดเป็นไบต์ของไฟล์ + ไดเรกทอรีค่าใช้จ่ายไดเรกทอรีค่าใช้จ่ายคือในกรณีของฉันทวีคูณของ 4096 ไบต์ ..
โอเวอร์เฮดนี้เพิ่มขึ้นตามจำนวนไฟล์ที่เพิ่มขึ้น
หมายเหตุ: แม้ว่าไฟล์จะถูกลบ แต่โอเวอร์เฮดของไดเร็กทอรีจะยังคงอยู่ในระดับที่สูงกว่าเดิมก่อนที่ไฟล์จะถูกลบทิ้ง
ฉันไม่ได้ลองรีบูตเครื่องเพื่อดูว่ามันถูกเปลี่ยนกลับ แต่ในกรณีใดกรณีหนึ่งนั่นหมายความว่าขนาดไดเรกทอรีแตกต่างกันไปตามสถานการณ์ในอดีต
การรับทราบขนาดไฟล์แต่ละไฟล์อาจเป็นตัวเลือกที่ดีที่สุดสำหรับค่าที่ถูกต้องของขนาด ไฟล์ทั้งหมด
สคริปต์ต่อไปนี้รวมขนาดไฟล์ทั้งหมด (เป็นไบต์)
สำหรับ OS X หากคุณไม่มี-b
opton สำหรับ 'du' คุณสามารถใช้stat
แทน (ถ้าคุณมี:) ... บรรทัดความคิดเห็นแสดงstat
ทางเลือกอื่นของUbuntu du -b
;
unset total
while IFS= read -r -d $'\0' rf; do
# (( total += $(stat "$rf" | sed -nre 's/^ Size: ([0-9]+).*/\1/p') ))
(( total += $(du -b "$rf" | cut -f 1) ))
done < <(find . -type f -name '*' -print0)
echo $total