ฉันจะลดการใช้พื้นที่ดิสก์ได้อย่างไร


29

หนึ่งในเครื่องของฉันคือ2GB EeePC Surfซึ่งเป็นเน็ตบุ๊กที่มีทรัพยากร จำกัด มาก จำกัด ดังนั้นตอนนี้ฉันเหลือพื้นที่ว่าง22MB

ในนั้นฉันใช้Arch LinuxกับOpenbox DE และโฮสต์ของแอปพลิเคชันที่จำเป็นเพื่อให้สามารถใช้งานได้เป็นพีซีแบบเคลื่อนที่

มีวิธีการใดบ้างที่สามารถใช้พื้นที่ที่ไม่จำเป็นออกไปได้


@ สเตฟานมี RAM เท่าใด? (เพียงแค่สงสัยว่าเป็นไปได้หรือไม่ที่จะนำสิ่งของเช่น / tmp in ram)
xenoterracide

1
@ สเตฟานยัง ... ถ้าคุณยินดีที่จะไปเส้นทางการทดลอง ... btrfs สนับสนุนระบบไฟล์ที่บีบอัด (หรือกำลังจะไป?) อาจจะตรวจสอบว่าออก
xenoterracide

@stefan du -sh /เพื่อดูว่าพื้นที่ส่วนใหญ่ของคุณถูกใช้งานอยู่ที่ใด
xenoterracide

@xeno, 490MB RAM และมันคือdu -sh /*อะไร?
Stefan

@ สเตฟานดังนั้นมันคือ ... อุ๊ปส์ ... คุณสามารถcd /เรียกใช้du -sh *และเจาะลึก ... (คุณมี ram ไม่เพียงพอที่จะจัดเก็บข้อมูลในนั้น)
xenoterracide

คำตอบ:


19

นี่คือบางจุดที่คุณสามารถเริ่มต้นด้วย:

  • ดูแพ็คเกจที่ติดตั้งในระบบของคุณด้วยpacman -Qและลบแพ็คเกจที่คุณไม่ต้องการ การเริ่มต้นที่ดีอาจเป็นการต่อท้าย-t สวิตช์:

    จำกัด หรือกรองผลลัพธ์ไปยังแพ็คเกจที่ไม่ต้องการโดยแพ็คเกจที่ติดตั้งอยู่ในปัจจุบัน

  • ทำความสะอาดแพ็กเกจแคชของ pacman ด้วย pacman -Sc

  • ใช้pacman -Rsเพื่อลบการอ้างอิงแพ็คเกจที่ไม่ได้ใช้เสมอ

  • เพื่อหา "ไฟล์ขนาดใหญ่" และโฟลเดอร์ที่ใช้ส่วนใหญ่ของดิสก์ยังดีที่มีdu xdiskusageเครื่องมือขนาดเล็กนี้ช่วยให้คุณเรียกดูระบบไฟล์ของคุณอย่างรวดเร็วและดูการแสดงภาพกราฟิกของการใช้งานดิสก์ของโฟลเดอร์


pacman -ccเพื่อล้างแคชทั้งหมดรวมถึงแพ็คเกจที่ฉันติดตั้ง ไม่แนะนำตามปกติเนื่องจากคุณอาจต้องการสำรองข้อมูลในภายหลัง
xenoterracide

@xeno ฉันได้ติดตั้งไดเร็คทอรี่ไว้บนเดสก์ท็อป--cachedirแล้วดังนั้นฉันไม่จำเป็นต้องเก็บไฟล์ pkg ไว้เลย
สเตฟาน

3
สำหรับการล้างพื้นที่/ฉันพบว่าpacgraphมีประโยชน์จริงๆ สามารถเรียงลำดับแพ็กเกจที่ติดตั้งตามขนาดดังนั้นคุณสามารถจัดลำดับความสำคัญได้ดีกว่าที่จะลบ (มันยังสามารถวาดกราฟ SVG พึ่งพา แต่จะเป็นประโยชน์จากบรรทัดคำสั่ง.)
Anko

4
ncduเป็นทางเลือกบรรทัดคำสั่งเด็ดxdiskusageBaobabเป็นแอพกราฟฟิกที่ดีที่สุดสำหรับจุดประสงค์นี้
Zaz

10

คำเตือน: แนวคิดเหล่านี้มีไว้สำหรับผู้ใช้ที่มีความรอบรู้ใน Linux ทั้งระบบและ Arch Linux เท่านั้น

หากคุณเต็มใจที่จะเหยียบลงในดินแดนที่อันตรายคุณสามารถติดตั้ง Arch แบบบางลงจนถึงการติดตั้งที่น้อยกว่า 500MB สิ่งนี้ต้องทำสิ่งที่อันตรายมาก:

  1. ลบสถานที่ที่ไม่จำเป็นทั้งหมด (ครอบคลุมแล้ว)
  2. ลบไฟล์เฟิร์มแวร์ใด ๆ ที่ไม่จำเป็นในการเรียกใช้ระบบของคุณ (จาก/usr/lib/firmware)
  3. ลบโมดูลเคอร์เนลใด ๆ ที่ไม่จำเป็นในการเรียกใช้ระบบของคุณ (จาก/usr/lib/modules/...)
  4. ลบ.aไฟล์ใด ๆใน/usr/lib(เฉพาะเมื่อคุณไม่เคยใช้ระบบในการรวบรวมซอฟต์แวร์หมายเหตุ: รวมถึงการใช้makepkg)
  5. ลบทุกอย่างใน/usr/include(เฉพาะเมื่อคุณไม่เคยใช้ระบบรวบรวมซอฟต์แวร์)
  6. การลบเอกสารที่ไม่จำเป็นออกจาก/usr/share/docและ/usr/share/info
  7. (ความหมายที่เลวร้ายมากเว้นแต่อาจจะเป็นเซิร์ฟเวอร์) ลบหน้าคนจาก /usr/share/man
  8. (เป็นความคิดที่ไม่ดีเช่นกัน) การลบเทอร์มินัล descriptor ที่/usr/share/terminfoไม่จำเป็นออกและไฟล์เขตเวลาที่ไม่จำเป็นออกจาก/usr/share/zoneinfo
  9. (DANGEROUS) ทำงานstrip *บนโฟลเดอร์ทั้งหมดที่มีไบนารีที่ปฏิบัติการได้ ( /usr/binและ/usr/sbin)
  10. (ในสถานการณ์ที่รุนแรง) โดยใช้เครื่องมือเช่นupxการบีบอัดไบนารีที่มีขนาดใหญ่ขึ้น (ไบนารี Samba ยืมตัวเองไปเช่นนี้เพราะพวกเขามักจะค่อนข้างใหญ่เนื่องจากพวกเขามักจะรวบรวมแบบคงที่) นอกจากนี้โปรดทราบว่าการใช้upxหมายถึงไบนารีที่ไม่มีการบีบอัดทั้งหมด RAM ในระหว่างการดำเนินการดังนั้นจะเบื่อหน่ายกับระบบที่มี RAM ต่ำ

ก่อนที่คุณจะทำสิ่งใดก็ตามให้ทำการสำรองข้อมูลทั้งหมดของระบบของคุณ Linux โชคดีที่ทำให้สิ่งนี้เป็นเรื่องง่าย - ถ้าคุณสามารถแนบและเมานต์ไดรฟ์ภายนอก (เช่นไดรฟ์ USB) คุณสามารถทำสิ่งต่าง ๆ เช่นcd / && tar -cf /mnt/usb/mySystem.tar /การสำรองข้อมูลทั้งระบบ

อีกครั้งหนึ่งที่ทราบว่าผมไม่แนะนำให้ทำจริงข้างต้น (โดยเฉพาะอย่างยิ่งที่ 7 ถึง 9) เว้นแต่คุณจะมีความรู้ในเชิงลึกที่มีประสบการณ์และความเข้าใจของ internals ลินุกซ์และประตูชัยลินุกซ์ การเล่นกับไฟล์ใด ๆ ที่ฉันมีในรายการสามารถสร้างความเสียหายให้กับระบบในรูปแบบที่น่ากลัวดังนั้นคุณจึงได้รับคำเตือน หากคุณไม่ทราบว่าระบบของคุณต้องการไฟล์เฟิร์มแวร์โมดูลหรืออื่น ๆ จากนั้นทำวิจัยของคุณก่อนที่คุณจะยุ่งกับมัน (ถูกเตือนว่าการลบโมดูลเคอร์เนลที่ระบบของคุณต้องการอาจส่งผลให้ระบบไม่สามารถบูตได้หรือระบบที่ไม่มีคีย์บอร์ด / การ์ดเครือข่าย / เสียง / แสดง / ฯลฯ สนับสนุนหรือพฤติกรรมอื่น ๆ ที่ไม่สามารถอธิบายได้ทุกประเภท)

นอกจากนี้โปรดทราบว่าการอัปเกรดแพ็คเกจสามารถและจะกู้คืนไฟล์จำนวนมากที่คุณลบด้านบน หากคุณตัดสินใจที่จะใช้เส้นทางนี้คุณอาจต้องการสคริปต์ในการลบไฟล์ที่ไม่จำเป็นออกและรันสคริปต์ของคุณหลังจากการอัปเกรดแพ็คเกจที่สำคัญทุกครั้ง (ตัวอย่าง: การอัพเกรดเคอร์เนลจะนำโมดูลเคอร์เนลกลับมาทั้งหมดรวมทั้งอัปเกรดผ่านการพึ่งพาแพคเกจ linux-firmware ที่จะนำเฟิร์มแวร์กลับมาทั้งหมด/usr/lib/firmware)

สุดท้ายให้จับตาดู/var/logไฟล์เจอร์นัลที่จะเติบโตตามกาลเวลา คุณสามารถลบวารสารที่ผ่านมา แต่เก็บวารสารปัจจุบันได้ด้วยการทำบางอย่างrm *\@*.journalในโฟลเดอร์เจอร์นัลของคุณ

ฉันประสบความสำเร็จในการใช้งานเซิร์ฟเวอร์ NAS จากอุปกรณ์ Disk-on-Module 512MB เป็นเวลาหลายเดือนโดยใช้เทคนิคเหล่านี้ แต่พวกเขาก็ยังไม่ได้ใจอ่อน (ฉันยังใช้ LinuxFromScratch เพื่อสร้างโครงการที่คล้ายกันในพื้นที่จัดเก็บเพียง 128MB แต่นั่นเป็นอีกเรื่องหนึ่ง ... )


แก้ไข / เพิ่ม:

นี่เป็นวิธีการอีกสองสามวิธีที่คุณสามารถใช้เพื่อพยายามหาพื้นที่เพิ่มเติม:

  • libgoการกำจัด libgoห้องสมุดมาพร้อมกับgcc-libsและ AFAIK ใช้โดยโปรแกรมที่เขียนในภาษาไปเท่านั้น ฉันไม่สามารถนึกถึงแอปพลิเคชันที่ฉันใช้ซึ่งจำเป็นต้องใช้ไลบรารีนั้น ในระบบของฉันมีขนาด 40MB เมื่อคุณพยายามที่จะลดขนาดลงนั่นคือพื้นที่จำนวนมาก ฉันลบมันออกจากการติดตั้ง "มินิ" ของฉันโดยไม่มีผลกระทบใด ๆ กับสิ่งที่ฉันทำ (แต่อีกครั้งนั่นคือฉัน YMMV!)

  • libicudata.soการหดตัว มันเป็น 27MB ในระบบของฉัน โดยทั่วไปแล้วข้อมูลยูนิโคด / โลแคลจำนวนมากที่ถูกบีบอัดลงในวัตถุไลบรารี มีเครื่องมือออนไลน์ที่สามารถสร้างไฟล์ขนาดเล็กกว่านี้ได้ แต่มันไม่ได้รับการอัพเดตสำหรับเวอร์ชั่นปัจจุบัน (และคุณไม่สามารถใช้ไฟล์ที่เก่ากว่าในรีลีสที่ใหม่กว่าได้) ฉันยังไม่ได้ลองทำด้วยมือเลย หากคุณสามารถหาวิธีคุณสามารถโกนไฟล์นี้ได้ประมาณ 20-22MB

  • ถ้าคุณใช้งูหลามคุณสามารถบันทึก 37MB หรือดังนั้นโดยการลบtestห้องสมุดจาก python2: rm -r /usr/lib/python2.7/testประมาณ 66MB โดยการเอามันสำหรับ rm -r /usr/lib/python3.6/testpython3:

  • อีกครั้งสำหรับ Python คุณสามารถกำจัด.pyoไฟล์และ.pyไฟล์ต่างๆได้ .pyoไฟล์ "ที่ดีที่สุด" ไฟล์ แต่งูใหญ่ไม่เคยใช้พวกเขา .pyไฟล์เป็นรหัสที่มาดิบสำหรับห้องสมุดมาตรฐาน ไฟล์เดียวที่ Python อ่านตามปกติเมื่อใช้งานรหัส Python คือไฟล์.pyc(python compiled) cd /usr/lib/python2.7 && find . -name "*.pyo" -exec rm -v {} \;และcd /usr/lib/python3.6 && find . -name "*.pyo" -exec rm -v {} \;

  • การลบข้อมูลสถานที่ที่ไม่จำเป็น มีแพ็คเกจ AUR localepurgeซึ่งจะเรียกสิ่งนี้โดยอัตโนมัติ /usr/share/localeมิฉะนั้นคุณจะต้องเล่นรอบใน locale.aliasคุณจะต้องให้สถานที่ของคุณเองและ สำหรับผมที่นี่ในสหรัฐอเมริกาการรักษาen_USและlocale.aliasและลบทุกอย่างอื่นโกนประมาณ 80MB

ตอนนี้สิ่งที่ฉันต้องการเห็นคือเครื่องมือที่วิเคราะห์ระบบของคุณและกำหนดโมดูลเคอร์เนลที่คุณต้องการและไฟล์เฟิร์มแวร์ที่คุณต้องการ นั่นจะเป็นวิธีที่ดีในการ "ปลอดภัย" ล้างโฟลเดอร์เหล่านั้น ...

หรืออาจจะมีคนควรใส่กัน Arch "distro" ที่ใช้uClibcหรือdiet-libcหรือสิ่งที่คล้ายกัน นั่นอาจเป็นโครงการฤดูร้อนที่สนุกสนาน :-)


2
ฉันสนใจที่จะทำสิ่งนี้เช่นกัน .. เฟิร์มแวร์ดูเหมือนว่าจะได้รับประโยชน์มากที่สุดสำหรับฉันฉันกำลังพยายามทำกล่องคนจรจัดเล็ก ๆ ดังนั้นจึงต้องใช้เฟิร์มแวร์เพื่อเรียกใช้ arch บน virtualbox เท่านั้น ... มีวิธีง่ายๆในการค้นหา ต้องใช้เฟิร์มแวร์อะไรบ้าง?
Tom B

คำเตือน: พยายามupxแล้วมันเล่นได้ไม่ดีกับ exectuables ทุกประเภท ex: มันออกจาก mysqld & mongodb segfaulting
Ayush

3
เรื่องการอัพเกรดแพคเกจสามารถและจะเรียกคืนหลายไฟล์ที่คุณลบ โดยการขยาย /etc/pacman.conf ด้วยNoExtractคำจำกัดความ (สามารถกำหนดได้หลายครั้ง) คุณสามารถแก้ไขปัญหานั้นได้อย่างถาวร ตัวอย่างหนึ่งสำหรับการอัพเดทอัปเดตไดรเวอร์ Realtek nic เท่านั้น:NoExtract = usr/lib/firmware/* !usr/lib/firmware/rtl_nic/*
Backup Pro

find /usr/lib/firmware -atime +30จะหาไฟล์เฟิร์มแวร์ที่ไม่สามารถเข้าถึงได้ใน 30 วัน ควรลบไฟล์เหล่านั้นอย่างปลอดภัย
user202729

5

TLDR

journalctl --vacuum-size=100M #remove all logs, only retain 100mb
pacman -Scc #remove all package installation files (obsolete and current)
pacman -S bleachbit
bleachbit -c system.*

ครั้งแรกสิ่งที่ใหญ่ในระบบ

du -d1 -h / 2>/dev/null | sort -h

นี่แสดงรายการที่เรียงลำดับของ dirs ที่ใหญ่ที่สุดใน/ คุณสามารถลงสองระดับ:

du -d2 -h / 2>/dev/null | sort -h

ผลลัพธ์ของฉันคือ:

0       /proc
0       /sys
0       /tmp
12K     /dev
12K     /srv
16K     /lost+found
632K    /run
4.3M    /boot
13M     /opt
15M     /etc
75M     /root
93M     /home
2.4G    /var
3.2G    /usr
221G    /mnt
227G    /

ฉันไม่สนใจ/mnt(เพราะนั่นคือไดรฟ์ภายนอก) สอง dirs ยืนใจและvar usrมาดูกันว่ามีอะไรอยู่ข้างใน:

du -d1 -h /var /usr 2>/dev/null | sort -h

จากนั้นลึกขึ้นเล็กน้อย:

du -d1 -h /var/log /usr/share /usr/lib /var/cache 2>/dev/null | sort -h

เริ่มจากบันทึกก่อนกัน

ฉันมี 717mb /var/logค่ะ

ฉันไม่ได้เป็นแฟนของการลบไดเรกทอรีแบบสุ่มดังนั้นให้ทำวิธีที่สะอาด:

$ journalctl --disk-usage
Archived and active journals take up 728.7M on disk.

มาฝากเพียง 100mb ของบันทึก:

journalctl --vacuum-size=100M
...
Deleted archived journal /var/log/journal/ba5391...b.journal (8.0M).
...
Vacuuming done, freed 616.6M of archived journals on disk.

ข้อมูลเพิ่มเติมที่นี่เกี่ยวกับวิธีการกำหนดค่า journalctl ที่นี่

แพคเกจ

660M /var/cache/pacmanฉันมี มันเป็น 1.8gb แต่ฉันวิ่งpacman -Scไปลบแพ็คเกจที่ไม่ได้ใช้ ลองลบส่วนที่เหลือ:

pacman -Scc

/ usr / share / สถานที่เกิดเหตุ

ผู้ใช้จำนวนมากทำการลบออกหรืออย่างน้อยก็ทำความสะอาด แต่ผมอาจจะมีปัญหา แต่เช็คเอาต์ bleachbit (ย่อหน้าถัดไป)

BleachBit

ทำความสะอาดอัตโนมัติ จะลบสิ่งต่าง ๆ มากมาย แต่ส่วนใหญ่จะเป็นตำแหน่งที่ตั้ง

$ pacman -S bleachbit
$ bleachbit -p system.*
Disk space to be recovered: 488.8MB
$ bleachbit -c system.*

คุณสามารถค้นหาสิ่งเพิ่มเติมเพื่อลบ:

bleachbit --list
bleachbit -p thunderbird.*

ในการติดตั้ง Arch Linux 64 บิตที่ค่อนข้างน้อยขนาดที่ติดตั้งทั้งหมดของแพ็คเกจ bleachbit คือ 209.70 MiB:Total Installed Size: 209.70 MiB
Backup Pro

1
คำแนะนำ: ถ้าคุณทำdu -xkd1ใน/ไดเรกทอรีมันจะไม่ลงไปสู่จุดเมานท์อื่น ๆ
fdmillion

3

บนดิสก์ 4GB ใน Eeepc ของฉันกับ Ubuntu มันช่วยลบไฟล์ locale (จาก / usr / share / locale) และไฟล์ช่วยเหลือ Gnome (จาก / usr / share / gnome / help /) ทั้งสองถูกติดตั้งสำหรับภาษาที่ฉันไม่ได้ใช้ ไม่แน่ใจว่า Arch Linux จะติดตั้งไฟล์เหล่านั้นทั้งหมดหรือไม่


ใช่ ... du -hs /usr/share/localeประมาณ 300MB ... ฉันขอrm -rfไฟล์ที่ไม่จำเป็นได้มั้ย
สเตฟาน

2
@ Stefan wiki.archlinux.org/index.php/Localeหากคุณแก้ไข/etc/locale.genและอีกครั้งวิ่งlocale-genคุณควรจะมีสถานที่ก่อนรวบรวมน้อยลง หากคุณต้องการเพิ่มพื้นที่ว่างด้วยวิธีอัตโนมัติคุณอาจลองaur.archlinux.org/packages.php?ID=11975ด้วย ( แต่ก็ไม่สนับสนุนและถ้าแบ่งระบบของคุณคุณจะได้รับเพื่อให้ชิ้น.)
ephemient

1
localepurgeเป็นสคริปต์ที่จะลบพื้นที่ว่างในดิสก์สำหรับการแปลที่ไม่จำเป็น แก้ไข/etc/locale.nopurgeก่อน :) มันทำความสะอาดขึ้น ~ 300 MB ครั้งแรกที่ฉันเรียกใช้มันและอีกหลายสิบ MB ต่อเดือน มีให้ใน AUR
tuk0z

0

ฉันขอแนะนำให้อัตโนมัติดูไฟล์เก่าของคุณเองและดูว่ามีความจำเป็นและลบออก สิ่งนี้สามารถทำได้สองสิ่ง หนึ่งเขียนfindคำสั่งเพื่อค้นหาไฟล์เก่ามาก และใช้ผลลัพธ์นี้ (บางทีไปป์) เพื่อlograteเขียนสคริปต์เพื่อเก็บไฟล์ที่เก่ากว่า 3 เดือนและลบไฟล์ที่เก่ากว่า 3 เดือนในการเก็บถาวรและส่งอีเมลไปที่ 1 วันก่อนที่จะลบมัน เพื่อให้คุณมั่นใจได้ว่าคุณจะไม่สูญเสียไฟล์สำคัญใด ๆ ดังนั้นในที่สุดคุณจะต้องใช้คำสั่งต่อไปนี้เพื่อให้บรรลุตามข้างต้น:

find , | , logrotate , mail, crontab

ฉันจะไม่ป้อนอาหารให้คุณ ฉันได้ทำสิ่งนี้มาก่อนค่อนข้างประสบความสำเร็จกับเรื่องนี้และถูกทิ้งในภายหลังเพราะเราตัดสินใจที่จะไปnagiosตรวจสอบเนื่องจากมีการปรับให้ทำสิ่งนั้นในเซิร์ฟเวอร์คอร์ปมากกว่า ฉันคิดว่าหากmailคำสั่งไม่ได้กำหนดค่าไว้สำหรับคุณคุณอาจพบว่าที่พักที่ยากที่สุดควรตรงไปข้างหน้า ทั้งหมดนี้ต้องดำเนินการผ่านสคริปต์ทุบตีและวางในงาน cron และทำงานทุก ๆ วัน เรียนรู้การทุบตีสคริปต์มันจะมีประโยชน์มากไม่เพียงแค่นี้ แต่เพื่อให้ชีวิตของคุณง่ายขึ้นด้วย * ระวัง ดังนั้นใช้เครื่องมือค้นหาอินเทอร์เน็ตที่คุณชื่นชอบและอ่านเกี่ยวกับคำสั่งข้างต้นและสคริปต์ทุบตี และมัดพวกเขาเข้าด้วยกันและทดสอบ เมื่อพอใจนำไปใช้งานปกติ ฉันรับรองว่ามันจะสนุกกับการทำสิ่งนี้ คุณจะได้เรียนรู้มากมายถ้าคุณไม่เคยทำแบบนี้มาก่อน

  • หวังว่าจะช่วย

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