Làm cách nào để giảm thiểu việc sử dụng dung lượng ổ đĩa


29

Một trong những máy của tôi là EeePC Surf 2GB , một chiếc netbook gọn gàng với nguồn lực rất hạn chế. Vì vậy, giới hạn ngay bây giờ, tôi còn 22 MB dung lượng trống.

Trên đó, tôi đang chạy Arch Linux với Openbox DE và một loạt các ứng dụng cần thiết để nó hoạt động như một PC di động.

Những phương pháp có sẵn để dập tắt một số không gian sử dụng không cần thiết?


@Stefan nó có bao nhiêu RAM? (chỉ tự hỏi liệu có khả thi để đưa những thứ như / tmp vào ram không)
xenoterracide

1
@Stefan cũng ... nếu bạn sẵn sàng đi theo con đường thử nghiệm ... btrfs được cho là hỗ trợ hệ thống tệp nén (hoặc sẽ đến?) Có thể kiểm tra xem
xenoterracide

@stefan cũng du -sh /để xem phần lớn không gian của bạn đang được sử dụng.
xenoterracide

@xeno, RAM 450 MB, còn nó du -sh /*?
Stefan

@Stefan vì vậy nó là ... rất tiếc ... bạn có thể cd /chạy du -sh *và đi sâu vào ... (bạn không thực sự có đủ ram để lưu trữ đồ trong đó)
xenoterracide

Câu trả lời:


19

Dưới đây là một số điểm bạn có thể bắt đầu với:

  • Hãy xem các gói được cài đặt trên hệ thống của bạn pacman -Qvà loại bỏ các gói bạn không cần. Một khởi đầu tốt có thể là nối thêm công -t tắc:

    Hạn chế hoặc lọc đầu ra cho các gói không được yêu cầu bởi bất kỳ gói hiện đang cài đặt.

  • Làm sạch bộ đệm của gói pacman với pacman -Sc

  • Luôn luôn sử dụng pacman -Rsđể loại bỏ các phụ thuộc gói không sử dụng.

  • Để tìm "tập tin lớn" và các thư mục sử dụng các phần lớn của đĩa, một bổ sung thú vị duxdiskusage. Công cụ nhỏ này cho phép bạn nhanh chóng duyệt hệ thống tập tin của bạn và xem biểu diễn đồ họa về việc sử dụng đĩa của các thư mục.


pacman -ccTôi nghĩ rằng để làm sạch toàn bộ bộ nhớ cache bao gồm các gói đã cài đặt. Không thường được đề xuất vì bạn có thể muốn những bản sao lưu sau này.
xenoterracide

@xeno, tôi đã cài đặt một diretory trên máy tính để bàn của mình --cachedir, vì vậy tôi không cần phải giữ bất kỳ tệp pkg nào.
Stefan

3
Để xóa không gian trên /, tôi thấy pacgraphthực sự hữu ích. Nó có thể sắp xếp các gói đã cài đặt của bạn theo kích thước, vì vậy bạn có thể ưu tiên tốt hơn những gì hợp lý để loại bỏ. (Nó thậm chí có thể vẽ biểu đồ phụ thuộc SVG, nhưng chỉ hữu ích từ dòng lệnh.)
Anko

4
ncdulà một thay thế dòng lệnh mát mẻ để xdiskusage. Baobab cho đến nay là ứng dụng đồ họa tốt nhất cho mục đích này.
Zaz

10

CẢNH BÁO: Những ý tưởng này chỉ dành cho người dùng thành thạo cả Linux và Arch Linux.

Nếu bạn sẵn sàng bước vào lãnh thổ nguy hiểm, bạn có thể giảm cài đặt Arch cơ bản xuống dưới 500MB. Điều này đòi hỏi phải làm một số điều rất nguy hiểm:

  1. xóa tất cả các địa phương không cần thiết (đã được bảo hiểm)
  2. xóa mọi tập tin phần sụn không cần thiết để chạy hệ thống của bạn (từ /usr/lib/firmware)
  3. loại bỏ bất kỳ mô-đun hạt nhân nào không cần thiết để chạy hệ thống của bạn (từ /usr/lib/modules/...)
  4. xóa mọi .atệp trong /usr/lib(chỉ khi bạn không bao giờ sử dụng hệ thống để biên dịch phần mềm. Lưu ý: điều này bao gồm sử dụng makepkg)
  5. xóa mọi thứ trong /usr/include(chỉ khi bạn không bao giờ sử dụng hệ thống để biên dịch phần mềm)
  6. xóa tài liệu không cần thiết khỏi /usr/share/doc/usr/share/info
  7. (RẤT BAD IDEA trừ khi có thể cho một máy chủ) xóa các trang man khỏi /usr/share/man
  8. (cũng là một ý tưởng tồi) loại bỏ các mô tả thiết bị đầu cuối không cần thiết khỏi /usr/share/terminfovà các tệp múi giờ không cần thiết khỏi/usr/share/zoneinfo
  9. (NGUY HIỂM) chạy strip *trên tất cả các thư mục chứa nhị phân thực thi ( /usr/bin/usr/sbin)
  10. (trong các tình huống cực đoan) sử dụng một công cụ như upxđể nén các nhị phân lớn hơn (các nhị phân Samba cho vay chính nó vì chúng có xu hướng khá lớn do chúng thường được biên dịch tĩnh.) Cũng lưu ý rằng sử dụng upxcó nghĩa là toàn bộ nhị phân không nén phải phù hợp RAM trong khi thực hiện, do đó, mệt mỏi trên các hệ thống có RAM thấp.

Trước khi bạn làm BẤT K of việc này, HÃY KIẾM MỘT BACKUP đầy đủ của hệ thống của bạn. Linux rất may làm điều này tương đối dễ dàng - nếu bạn có thể gắn và gắn một ổ đĩa ngoài (ví dụ: ổ USB), bạn có thể làm gì đó cd / && tar -cf /mnt/usb/mySystem.tar /để sao lưu toàn bộ hệ thống.

Một lần nữa, lưu ý rằng tôi thực sự không khuyên bạn nên làm như trên (đặc biệt là 7 đến 9) trừ khi bạn có kiến thức chuyên sâu, kinh nghiệm và hiểu biết về các phần bên trong Linux và Arch Linux . Chơi với bất kỳ tệp nào tôi liệt kê có thể làm hỏng hệ thống theo những cách khủng khiếp, vì vậy bạn đã được cảnh báo. Nếu bạn không biết hệ thống của mình có cần một tập tin phần sụn, mô-đun, v.v. thì hãy nghiên cứu trước khi bạn làm hỏng nó. (Được cảnh báo rằng việc xóa các mô-đun hạt nhân mà hệ thống của bạn cần có thể dẫn đến một hệ thống không thể khởi động hoặc hệ thống không có bàn phím / card mạng / âm thanh / hiển thị / v.v. hoặc tất cả các loại hành vi không thể giải thích khác.)

Ngoài ra, xin lưu ý rằng mọi nâng cấp gói đều có thể và sẽ khôi phục nhiều tệp bạn xóa ở trên. Nếu bạn quyết định đi theo con đường này, cuối cùng bạn có thể muốn loại bỏ các tập tin không cần thiết và chạy tập lệnh của bạn sau mỗi lần nâng cấp gói chính. (Ví dụ: nâng cấp kernel sẽ mang lại tất cả các mô-đun kernel cũng như nâng cấp thông qua sự phụ thuộc gói linux-firmware mang lại tất cả phần sụn trong /usr/lib/firmware.)

Cuối cùng, hãy chú ý /var/logvì các tập tin tạp chí sẽ phát triển theo thời gian. Bạn có thể xóa các tạp chí trong quá khứ nhưng giữ các tạp chí hiện tại bằng cách làm một cái gì đó như rm *\@*.journaltrong thư mục tạp chí của bạn.

Tôi đã chạy thành công một máy chủ NAS từ một thiết bị Disk-on-Module 512 MB trong nhiều tháng bằng các kỹ thuật này, tuy nhiên chúng vẫn không dành cho người yếu tim. (Tôi cũng đã sử dụng LinuxFromScratch để xây dựng một dự án tương tự chỉ với 128 MB dung lượng lưu trữ, nhưng đó là một câu chuyện khác ...)


CHỈNH SỬA / THÊM:

Dưới đây là một vài phương pháp bạn có thể sử dụng để cố gắng có thêm không gian:

  • Thoát khỏi libgo. Các libgothư viện đi kèm với gcc-libsvà được AFAIK chỉ được sử dụng bởi các ứng dụng viết bằng ngôn ngữ Go. Tôi không thể nghĩ ra bất kỳ ứng dụng nào tôi sử dụng cần thư viện đó. Trên hệ thống của tôi, nó có kích thước 40 MB. Khi bạn đang cố gắng giảm xuống, đó là rất nhiều không gian. Tôi đã xóa nó khỏi các bản cài đặt "mini" của mình mà không có ảnh hưởng xấu đến bất cứ điều gì tôi làm (nhưng một lần nữa, đó là tôi, YMMV!)

  • Co lại libicudata.so. Đó là 27 MB trên hệ thống của tôi. Về cơ bản, nó là một tấn dữ liệu unicode / locale được nén vào một đối tượng thư viện. Có một công cụ trực tuyến có thể tạo các phiên bản nhỏ hơn của tệp này, nhưng nó chưa được cập nhật cho phiên bản hiện tại (và bạn không thể sử dụng các tệp cũ hơn trong các bản phát hành mới hơn.) Tôi đã không thử làm điều này bằng tay, nhưng nếu bạn có thể tìm ra cách, bạn có thể cạo khoảng 20-22 MB khỏi tệp này.

  • Nếu bạn sử dụng Python, bạn có thể tiết kiệm test37 MB hoặc hơn bằng cách xóa thư viện khỏi python2: rm -r /usr/lib/python2.7/testvà khoảng 66 MB bằng cách xóa nó cho python3 : rm -r /usr/lib/python3.6/test.

  • Một lần nữa cho Python, bạn có thể thoát khỏi các .pyotệp và các .pytệp. Các .pyotệp này là các tệp "được tối ưu hóa", nhưng Python không bao giờ thực sự sử dụng chúng. Các .pytập tin là mã nguồn thô cho thư viện tiêu chuẩn. Các tệp duy nhất Python thường đọc khi chạy mã Python là các .pyctệp (python đã biên dịch). cd /usr/lib/python2.7 && find . -name "*.pyo" -exec rm -v {} \;cd /usr/lib/python3.6 && find . -name "*.pyo" -exec rm -v {} \;

  • Loại bỏ dữ liệu miền địa phương không cần thiết. Có một gói AUR được gọi là localepurgetự động hóa việc này. Nếu không, bạn phải chơi xung quanh trong /usr/share/locale. Bạn cần giữ địa phương của riêng bạn và locale.alias. Đối với tôi đây ở Mỹ, giữ en_USlocale.aliasvà loại bỏ tất cả mọi thứ khác đã cạo khoảng 80MB.

Bây giờ, những gì tôi muốn thấy là một công cụ phân tích hệ thống của bạn và xác định mô-đun hạt nhân nào bạn cần, và tập tin phần sụn nào bạn cần. Đó sẽ là một cách hay để "dọn dẹp" các thư mục đó một cách an toàn ...

Hoặc, có lẽ ai đó nên đặt cùng một Arch "distro" mà sử dụng uClibchoặc diet-libchoặc một cái gì đó tương tự. Đó có thể là một dự án mùa hè vui vẻ. :-)


2
Tôi cũng thích làm điều này .. phần sụn có vẻ là lợi ích lớn nhất đối với tôi, tôi đang cố gắng tạo ra một hộp nhỏ, vì vậy chỉ cần phần sụn cần thiết để chạy vòm trên hộp ảo ... có một cách dễ dàng để tìm phần sụn nào được yêu cầu?
Tom B

cảnh báo: chỉ cần thử upx, nó không chơi tốt với tất cả các loại ngoại lệ, ví dụ: nó để lại mysqld & mongodb segfaulting
Ayush

3
re: Gói nâng cấp có thể và sẽ khôi phục nhiều tệp bạn xóa . Bằng cách mở rộng /etc/pacman.conf bằng các NoExtractđịnh nghĩa (có thể được xác định nhiều lần), bạn có thể giải quyết vấn đề đó vĩnh viễn. Một ví dụ để chỉ cập nhật cập nhật trình điều khiển Realtek nic:NoExtract = usr/lib/firmware/* !usr/lib/firmware/rtl_nic/*
Pro Backup

find /usr/lib/firmware -atime +30sẽ tìm thấy các tập tin phần sụn không được truy cập trong 30 ngày. Nó sẽ được an toàn để xóa những tập tin.
dùng202729

5

TLD

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.*

Đầu tiên, những gì lớn trên hệ thống

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

Điều này cho thấy một danh sách được sắp xếp của các thư mục lớn nhất trong / Bạn có thể thực hiện hai cấp độ xuống:

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

Kết quả của tôi là:

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    /

Tôi bỏ qua /mnt(vì đó là một ổ đĩa ngoài) Hai thư mục đứng trước tâm trí: varusr. Hãy xem những gì bên trong:

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

Sau đó, sâu hơn một chút:

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

Hãy bắt đầu với nhật ký

Tôi có 717mb /var/log.

Tôi không phải là người thích xóa các thư mục một cách ngẫu nhiên, vì vậy hãy thực hiện theo cách sạch sẽ:

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

Chúng ta chỉ để lại 100mb nhật ký:

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.

Thêm thông tin ở đây về cách cấu hình tạp chí ở đây .

Gói

Tôi có 660M /var/cache/pacman. Đó là 1.8gb, nhưng tôi đã chạy pacman -Scđể loại bỏ các gói không sử dụng. Hãy loại bỏ phần còn lại:

pacman -Scc

/ usr / chia sẻ / miền địa phương

Rất nhiều người dùng loại bỏ nó, hoặc ít nhất là làm sạch nó. Nhưng tôi có thể là một vấn đề . Nhưng kiểm tra Bleachbit (đoạn tiếp theo).

Chất tẩy trắng

Tự động dọn dẹp . Sẽ xóa rất nhiều thứ, nhưng đối với nó chủ yếu là địa phương.

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

Bạn có thể tìm thêm nhiều thứ để xóa:

bleachbit --list
bleachbit -p thunderbird.*

Trên bản cài đặt Arch Linux 64 bit khá tối thiểu, tổng kích thước đã cài đặt của gói Bleachbit là 209,70 MiB:Total Installed Size: 209.70 MiB
Sao lưu Pro

1
Mẹo: nếu bạn làm du -xkd1trong /thư mục, nó sẽ không rơi xuống các điểm gắn kết khác.
fdmillion

3

Trên đĩa 4GB trong Eeepc của tôi với Ubuntu, nó đã giúp xóa một số tệp cục bộ (từ / usr / share / locale) và các tệp trợ giúp Gnome (từ / usr / share / gnome / help /). Cả hai đều được cài đặt cho các ngôn ngữ mà tôi không sử dụng. Dù vậy, không chắc Arch Linux có cài đặt tất cả các tệp đó hay không.


có ... du -hs /usr/share/localekhoảng 300 MB ... tôi chỉ có thể là rm -rfcác tệp không cần thiết?
Stefan

2
@Stefan wiki.archlinux.org/index.php/Locale Nếu bạn chỉnh sửa /etc/locale.genvà tái chạy locale-gen, bạn nên có ít miền địa phương trước khi biên dịch. Nếu bạn muốn giải phóng thêm dung lượng theo cách tự động, bạn cũng có thể muốn thử aur.archlinux.org/packages.php?ID=11975 . (Nhưng nó không được hỗ trợ và nếu nó phá vỡ hệ thống của bạn, bạn có thể giữ cho miếng.)
ephemient

1
localepurge là một tập lệnh để loại bỏ không gian đĩa bị lãng phí cho các nội địa hóa không cần thiết. Chỉnh sửa /etc/locale.nopurge trước :) Nó đã dọn sạch ~ 300 MB lần đầu tiên tôi đã chạy nó và hàng chục MB mỗi vài tháng. Có sẵn trong AUR.
tuk0z

0

Tôi sẽ đề nghị TỰ ĐỘNG nhìn vào các tệp rất cũ của riêng bạn và xem nếu cần thiết và loại bỏ chúng. Điều này có thể được thực hiện với hai điều. Một người viết một findlệnh để tìm kiếm các tập tin rất cũ. và sử dụng đầu ra này (có thể là đường ống) để logratetập lệnh để lưu trữ các tệp cũ hơn 3 tháng và xóa các tệp cũ hơn 3 tháng trong kho lưu trữ và gửi thư đến 1 ngày trước khi xóa. Vì vậy, bạn có thể chắc chắn rằng bạn đã không mất bất kỳ tập tin quan trọng. Vì vậy, cuối cùng bạn sẽ cần các lệnh sau để thực hiện các điều trên:

find , | , logrotate , mail, crontab

Tôi sẽ không cho bạn ăn thìa. Tôi đã làm điều này trước đây đã khá thành công với điều này và sau đó đã bị loại bỏ vì chúng tôi quyết định đi nagiostheo dõi vì nó được điều chỉnh nhiều hơn để làm loại công cụ đó trong một máy chủ corp. Tôi nghĩ rằng nếu maillệnh chưa được cấu hình cho bạn, bạn có thể thấy rằng phần còn lại khó khăn nhất nên được chuyển thẳng. Tất cả điều này cần phải được thực hiện thông qua bash scripting và đưa nó vào công việc định kỳ và để chạy mỗi x ngày. Tìm hiểu kịch bản bash, nó sẽ rất hữu ích không chỉ cho việc này mà còn giúp cuộc sống của bạn dễ dàng hơn với * nix. Vì vậy, sử dụng công cụ tìm kiếm internet yêu thích của bạn và đọc về các lệnh trên và bash scripting. Và buộc chúng lại với nhau và kiểm tra nó. Sau khi hài lòng đưa vào sử dụng thường xuyên. Tôi đảm bảo sẽ rất vui khi làm điều này. Bạn sẽ học được rất nhiều nếu bạn chưa từng làm điều này trước đây.

  • Mong rằng sẽ giúp

1
Theo kinh nghiệm của tôi, tôi thấy rằng hầu hết mọi thứ chiếm dụng đĩa không phải là các tệp liên quan đến HĐH mà là các tệp của riêng tôi được tích lũy trong một khoảng thời gian, do đó tôi đã đề xuất ở trên.
bagavadhar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.