การส่งออกผิดพลาดของ du?


12

ฉันคิดว่าคำสั่ง du ของฉันสับสน

% du -shc DIR ...
...
6123941496      total

% du -shc DIR ...
...
6.1G    total

% du -sc --si DIR ...
...
6.6G    total

ฉันลองให้LANG=Cและตรวจสอบผลลัพธ์ซ้ำในสเปรดชีต ดูเหมือนว่า -h เอาต์พุตโดยใช้พลังของ 1,000 (--si) และ --si ให้คำตอบที่ผิด ฉันคิดว่าคำตอบที่ถูกต้องควรเป็น 5.7G สำหรับ -h และ 6.1G สำหรับ --si แล้วจะเกิดอะไรขึ้นที่นี่?

% du --version
du (GNU coreutils) 8.20
...

% uname -a
Linux XXX 3.9-1-amd64 #1 SMP Debian 3.9.8-1 x86_64 GNU/Linux

3
โปรดรวมคำสั่งจริง ...ตัวแทนทำอะไร คุณดูเหมือนจะใช้คำสั่งเดียวกันแน่นอนสองครั้งและได้รับผลลัพธ์ที่แตกต่างกันใช่มั้ย คุณอ่านคำอธิบายของตัวดัดแปลงขนาดแล้วman duหรือยัง
terdon

คำตอบ:


18

ทำแบบทดสอบซ้ำโดยใช้--apparent-sizeสวิตช์

$ du -shc --apparent-size DIR ...

ตัดตอนมาจากหน้าคนดู

--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 
       fragmentation, indirect blocks, and the like

1
อ๊ะเห็นได้ชัดว่า -b เทียบเท่ากับ '--apparent-size --block-size = 1' ฉันคิดถึงสิ่งนั้น การใช้ 'du -shc --apparent-size' ตอนนี้ให้ 5.7G อย่างถูกต้องในขณะนี้ ขอบคุณ!
Gerry Lufwansa

@GerryLufwansa - ใช่เมื่อคุณเริ่มผสมในระบบไฟล์ที่แตกต่างกันหรือติดตั้ง CIFS มันจะกลายเป็นที่เห็นได้ชัดเจนจริงๆ ฉันมักจะใช้อย่างใดอย่างหนึ่งหรือ-b --apparent-size
slm

... และความแตกต่างจะได้รับมากจริงๆกับระบบ HSM ที่ไฟล์อพยพรายงาน 0 (หรือสิ่งที่ต้องการไม่กี่กิโลไบต์) --apparent-sizeโดย
Ansgar Esztermann

มีวิธีแก้ปัญหาสำหรับduMac OS X หรือไม่?
Alec Jacobson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.