วิเคราะห์การใช้งานดิสก์โดยไม่สนใจการเมานต์


67

อูบุนตูบ่นว่าระบบไฟล์รูทของฉันเกือบเต็มแล้ว แต่เมื่อฉันใช้baobab(หรือที่รู้จักว่า "Disk Usage Analyzer") หรือdu -hจะสรุปการใช้งานของระบบไฟล์ที่เมาท์อื่น ๆ ทั้งหมดได้เช่นกัน

ฉันจะแยกระบบไฟล์อื่นที่ติดตั้งในไดเรกทอรีย่อยที่หลากหลายได้อย่างไร

คำตอบ:


72

baobab: หากคุณต้องการใช้ baobab สิ่งนี้สามารถทำได้โดยการติดตั้งระบบไฟล์รูทในที่อื่นและวิเคราะห์ ด้วยวิธีนี้ระบบไฟล์อื่น ๆ จะไม่ถูกเมาท์ในรูทเมาท์ใหม่และไฟล์ใด ๆ ที่ซ่อนโดยเมาท์ภายใต้/จะถูกเปิดเผยและนับในการวิเคราะห์ของคุณ

สมมติว่าระบบไฟล์รูทของคุณเปิดอยู่sda1( dfจะแจ้งให้ทราบว่าเป็นอุปกรณ์ใด):

mkdir root-rebound
sudo mount /dev/sda1 root-rebound
baobab root-rebound

และทำให้เป็นระเบียบเมื่อคุณทำเสร็จ:

sudo umount root-rebound
rmdir root-rebound

หรือคุณสามารถเลิกเมานท์ระบบไฟล์ด้วยตนเองได้ คุณสามารถสแกนเฉพาะโฟลเดอร์ภายในบ้านของคุณได้เนื่องจากส่วนใหญ่จะมีแหล่งที่มาของการใช้พื้นที่ดิสก์มากเกินไป

duมีสองตัวเลือกที่สามารถป้องกันการนับระบบไฟล์อื่น ๆ :

 -x, --one-file-system
         skip directories on different file systems
     --exclude=PATTERN
         exclude files that match PATTERN

ดังนั้น,

du -hx

จะเพิกเฉยต่อระบบไฟล์ที่เมาท์อื่น ๆ หรือ

du -h --exclude /media

จะไม่สนใจไฟล์ทั้งหมด/mediaที่มีการติดตั้งระบบไฟล์ส่วนใหญ่

หากคุณใช้duการเรียงลำดับเพื่อให้สิ่งที่ยิ่งใหญ่ที่สุดปรากฏที่ด้านล่างของรายการสามารถช่วยถอดรหัสเอาต์พุตได้ เช่น:

du -hx | sort -h

2
เยี่ยมมากฉันไม่เห็นตัวเลือก -x ฉันพบวิธีอื่นเช่นกัน: คุณสามารถเมานต์ระบบไฟล์อีกครั้งจากนั้นใช้ du หรือ baobab เพื่อวิเคราะห์มัน นอกจากนี้ฉันคิดว่ามันมีประโยชน์ที่จะทำdu -hx | sort -hแม้ว่า baobab จะตีความได้ง่ายกว่า
drevicko

@ Cumulos007 - ถ้ามันยอดเยี่ยมกับคุณฉันจะเพิ่มโซลูชันและข้อเสนอแนะให้กับคำตอบของคุณและยอมรับ
drevicko

ไม่เป็นไรสำหรับฉัน!
Cumulus007

1
@ ไม่เช่นนั้นเวอร์ชัน GUI ดูเหมือนจะไม่สามารถใช้ตัวเลือก -x ของ du การติดตั้งระบบไฟล์รูททำงานที่อื่น - นั่นคือสิ่งที่ฉันทำวันนี้ (:
drevicko

1
du -kx | sort -nเป็นวิธีของฉัน
Alejandro Teixeira Muñoz

6

ขึ้นอยู่กับประเภทของระบบไฟล์ที่คุณอาจไม่ได้รับอนุญาตให้เมานต์ระบบไฟล์รูทบนจุดเมาน/ต์ด้านล่าง คุณจะได้อะไรทำนองนี้:

mount: /dev/sda1 already mounted or /mnt busy
mount: according to mtab, /dev/sda1 is mounted on /

การติดตั้งแบบอ่านอย่างเดียว ( -o ro) อาจช่วยได้ หากสิ่งนั้นล้มเหลวให้ใช้การเชื่อมติด:

mount --bind / /mnt

เมื่อติดตั้งแล้วให้ใช้เครื่องมืออะไรก็ได้ในการวิเคราะห์การใช้ดิสก์เช่น du -sh * | sort -h


3

รายงานข้อผิดพลาดนี้อธิบายถึงความเป็นไปได้ในการกำหนดค่า baobab เพื่อละเว้นไดเรกทอรี แต่น่าเสียดายที่คุณไม่สามารถทำมันได้ภายใน app ตัวเอง แต่คุณต้องใช้และเปิดdconf-editor org.gnome.baobab.preferencesที่นี่คุณจะได้พบกับรายการexcluded-uris; เปลี่ยนเป็น['file:///path/to/ignore'](ทำงานกับอัญประกาศเดียวสำหรับฉัน)


นี่ไม่ได้ตอบคำถามจริงๆ แต่เป็นข้อมูลที่มีประโยชน์และใครบางคนที่ค้นหาข้อมูลดังกล่าวอาจจบลงที่นี่ดังนั้นฉัน upvoting (:
drevicko

มันตอบคำถามเกี่ยวกับวิธีการละเว้นการเมาต์ใน baobab (โดยไม่รวมจุดเมานท์) โดยไม่ต้องติดตั้งพาร์ติชันรูทใหม่ อีกครึ่งหนึ่งของคำถาม (du) ได้รับการตอบแล้วในโพสต์ที่ยอมรับแล้ว
geira

2

Baobabพยายามที่จะให้คุณควบคุมของอุปกรณ์ / พาร์ทิชันที่คุณสแกน - Edit->Preferencesไปที่ โดยทั่วไปคุณต้องการสแกนอุปกรณ์ที่ Mount Point /เท่านั้น สิ่งนี้ไม่รู้จักลิงก์ / mounts / bindings ทุกประเภทดังนั้นท้ายที่สุด Baobab อาจยังให้ผลลัพธ์ที่สับสนหากคุณมีการกำหนดค่าที่ไม่สำคัญ


สำหรับduฟังก์ชันเชลล์ต่อไปนี้ที่เรียกว่าdutopจะแสดงระดับบนสุดของโฟลเดอร์ที่ระบุ (หรือโฟลเดอร์ปัจจุบัน) ด้วยวิธีนี้คุณสามารถตรวจสอบโฟลเดอร์ย่อยทีละรายการ

function dutop() { du --max-depth=1 --one-file-system -h $@ |sort -h; }

สิ่งนี้น่าจะรายงานข้อผิดพลาด "การอนุญาตที่ถูกปฏิเสธ" ที่ไม่สำคัญหากคุณนำไปใช้/แต่คุณสามารถแก้ไขข้อผิดพลาดบางอย่างเช่นต่อไปนี้ซึ่งจะขอรหัสผ่านของคุณ

function sudutop() { sudo du --max-depth=1 --one-file-system -h $@ |sort -h; }

สำหรับโฟลเดอร์ขนาดใหญ่อาจใช้เวลาสักครู่ พวกเขาจะไม่รายงานสถานะที่เพิ่มขึ้นใด ๆ เนื่องจากการดำเนินการเรียงลำดับกำลังบัฟเฟอร์ผลลัพธ์ระดับกลางทั้งหมด การยกเลิกด้วย Ctrl-C นั้นเป็นเรื่องปกติถ้าคุณเหนื่อยกับการรอ

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