ฉันมีไฟล์หลายชุด ไฟล์แต่ละไฟล์ใช้เวลา 2390170KiB ls -lk
และ du --apparent-size -k
.
ปัญหาคือว่า du -k
รายงานขนาดแตกต่างกันสำหรับแต่ละสำเนา: 2389824, 2392512, 2392512 และ 2390336
ฉันคาดว่าการใช้งานดิสก์ควรเป็น 2390172KiB (ขนาดของจำนวนบล็อกขั้นต่ำ (597543) ที่ไฟล์พอดี
เหตุใดแต่ละไฟล์จึงมีการใช้ดิสก์ที่แตกต่างกัน
ฉันยังได้เห็นว่าหนึ่งในสำเนาใช้ 2389824KiB แต่ขนาดไฟล์ใหญ่กว่า 346KiB: 2390170 สิ่งนี้มีความหมายได้อย่างไร
PD: ไฟล์ทั้งหมดอยู่ในระบบไฟล์ ext3 เดียวกัน ขนาดบล็อกระบบไฟล์คือ 4096 ไฟล์ทั้งหมดมีแฮชเดียวกัน
ปรับปรุง: จากความคิดเห็นที่:
although the apparent size is usually smaller, it may be larger due to holes in ('sparse') files, internal fragmentation, indirect blocks, and the like
ไฟล์ที่กระจัดกระจายอาจเป็นสาเหตุเนื่องจากการใช้งานดิสก์ต่ำ แต่ฉันไม่ได้เห็นว่าการกระจายตัวของภายในหรือบล็อกทางอ้อมอาจลดการใช้ดิสก์ในส่วนที่เกี่ยวกับไฟล์ต้นฉบับได้อย่างไร เนื่องจากไฟล์เหมือนกันการใช้งานดิสก์จากการแตกแฟรกเมนต์ภายในและบล็อกทางอ้อมควรคงที่
ฉันได้สังเกตเห็นว่า cp --sparse=always
สามารถสร้างไฟล์แบบกระจายได้จากไฟล์แบบไม่กระจาย cp --sparse=always
ผลลัพธ์ในไฟล์ที่ใช้ 2390336KiB cp --sparse=never
ผลลัพธ์ในไฟล์ที่ใช้ 2392512KiB
ดังนั้นฉันจะเดาว่าการใช้ 2389824KiB จากหนึ่งในสำเนาเกิดจากการใช้อัลกอริทึมกระจัดกระจาย ...
ไฟล์ต้นฉบับถูกคัดลอกจากเครื่อง windows ผ่าน sftp หรือ samba และฉันคิดว่าไฟล์ 2389824KiB เป็นสำเนาของมัน แต่ฉันจำไม่ได้ว่าฉันทำมันไปได้อย่างไร (ฉันเดาด้วย cp แต่ฉันไม่ แน่นอน)