Jak zminimalizować wykorzystanie miejsca na dysku

29

Jedną z moich maszyn jest 2 GB EeePC Surf , schludny netbook z bardzo ograniczonymi zasobami. Tak ograniczone, że mam teraz 22 MB wolnego miejsca.

Na nim uruchamiam Arch Linux z Openbox DE i wieloma potrzebnymi aplikacjami, aby działał jako komputer mobilny.

Jakie metody są dostępne, aby usunąć niepotrzebne miejsce?

Stefan
źródło
@Stefan ile ma pamięci RAM? (tylko zastanawiam się, czy możliwe jest umieszczenie rzeczy takich jak / tmp w
pamięci
1
@Stefan również ... jeśli chcesz przejść eksperymentalną trasę ... btrfs podobno obsługuje skompresowany system plików (lub zamierza?) Może to sprawdzić
xenoterracide
@stefan również, du -sh /aby zobaczyć, gdzie używana jest większość twojego miejsca.
Xenoterracide
@xeno, 490 MB pamięci RAM i to jest du -sh /*?
Stefan
@Stefan, więc jest ... Ups ... z ciebie możesz cd /i biegnij du -sh *i wiercić się ... (tak naprawdę nie masz wystarczająco dużo pamięci RAM, aby przechowywać w nim rzeczy)
xenoterracide

Odpowiedzi:

19

Oto kilka punktów, od których możesz zacząć:

  • Spójrz na pakiety zainstalowane w systemie pacman -Qi usuń te, których nie potrzebujesz. Dobrym początkiem może być dodanie -t przełącznika:

    Ogranicz lub filtruj dane wyjściowe do pakietów niewymaganych przez żaden aktualnie zainstalowany pakiet.

  • Wyczyść pamięć podręczną pakietów Pacmana za pomocą pacman -Sc

  • Zawsze używaj pacman -Rsdo usuwania również nieużywanych zależności pakietów.

  • Aby znaleźć „duże pliki” i foldery, które wykorzystują duże części dysku, dobrym dodatkiem dujest xdiskusage. To małe narzędzie pozwala szybko przeglądać system plików i wyświetlać graficzną reprezentację użycia dysku przez foldery.

echox
źródło
pacman -ccmyślę, że do wyczyszczenia całej pamięci podręcznej, w tym zainstalowanych pakietów. Zwykle nie jest to zalecane, ponieważ mogą być później potrzebne jako kopie zapasowe.
ksenoterrakid
@xeno, już zamontowałem katalog na pulpicie --cachedir, więc nie muszę przechowywać żadnych plików pkg.
Stefan
3
/Znalazłem pacgraphbardzo przydatne do czyszczenia przestrzeni . Może sortować zainstalowane pakiety według rozmiaru, dzięki czemu możesz lepiej ustalić, co sensowne jest usunięcie. (Może nawet rysować wykresy zależności SVG, ale jest przydatny z poziomu wiersza poleceń.)
Anko
4
ncduto fajna alternatywa dla wiersza poleceń xdiskusage. Baobab jest jednak zdecydowanie najlepszą aplikacją graficzną do tego celu.
Zaz
10

OSTRZEŻENIE: Te pomysły są przeznaczone tylko dla użytkowników, którzy są dobrze obeznani zarówno w Linuksie jako całości, jak i Arch Linux.

Jeśli chcesz wkroczyć na niebezpieczne terytorium, możesz zmniejszyć podstawową instalację Arch do mniej niż 500 MB. Wymaga to robienia bardzo niebezpiecznych rzeczy:

  1. usuwanie wszystkich niepotrzebnych ustawień regionalnych (już uwzględnionych)
  2. usuwanie wszelkich plików oprogramowania układowego, które nie są potrzebne do uruchomienia systemu (z /usr/lib/firmware)
  3. usunięcie wszelkich modułów jądra niepotrzebnych do uruchomienia systemu (z /usr/lib/modules/...)
  4. usuwanie jakichkolwiek .aplików /usr/lib(tylko jeśli nigdy nie korzystasz z systemu do kompilacji oprogramowania. Uwaga: obejmuje to także używanie makepkg)
  5. usunięcie wszystkiego /usr/include(tylko jeśli nigdy nie używasz systemu do kompilacji oprogramowania)
  6. usuwanie niepotrzebnej dokumentacji z /usr/share/doci/usr/share/info
  7. (BARDZO ZŁA POMYSŁ, chyba że dla serwera) usuwanie stron podręcznika /usr/share/man
  8. (również zły pomysł) usuwanie niepotrzebnych deskryptorów terminali /usr/share/terminfoi niepotrzebnych plików strefy czasowej/usr/share/zoneinfo
  9. (NIEBEZPIECZEŃSTWO) działający strip *na wszystkich folderach zawierających wykonywalne pliki binarne ( /usr/bini /usr/sbin)
  10. (w ekstremalnych sytuacjach) przy użyciu narzędzia takiego jak upxkompresja większych plików binarnych (pliki binarne Samby dobrze sobie z tym radzą, ponieważ są one zwykle dość duże, ponieważ często są kompilowane statycznie). Należy również pamiętać, że użycie upxoznacza, że ​​cały nieskompresowany plik binarny musi się zmieścić Pamięć RAM podczas wykonywania, więc bądź zmęczony na systemach z niską pamięcią RAM.

Zanim zrobisz JAKIEKOLWIEK z tego, ZRÓB PEŁNĄ kopię zapasową swojego systemu. Linux na szczęście czyni to stosunkowo łatwym - jeśli możesz podłączyć i zamontować zewnętrzny wolumin (np. Dysk USB), możesz zrobić coś takiego, jak cd / && tar -cf /mnt/usb/mySystem.tar /wykonać kopię zapasową całego systemu.

Jeszcze raz zauważ, że tak naprawdę nie zalecam wykonywania powyższych czynności (szczególnie od 7 do 9), chyba że posiadasz dogłębną wiedzę, doświadczenie i zrozumienie wewnętrznych elementów Linuksa i Arch Linux . Granie z dowolnymi plikami, które wymieniłem, może uszkodzić system w okropny sposób, więc zostałeś ostrzeżony. Jeśli nie wiesz, czy Twój system potrzebuje określonego pliku oprogramowania układowego, modułu itp., Przeprowadź badania, zanim zaczniesz z nim zadzierać. (Ostrzegamy, że usunięcie modułów jądra, których potrzebuje Twój system, może spowodować, że system nie da się uruchomić lub system bez obsługi klawiatury / karty sieciowej / dźwięku / wyświetlacza / itp. Lub wszelkiego rodzaju inne niewytłumaczalne zachowanie).

Należy również pamiętać, że wszelkie aktualizacje pakietów mogą przywracać wiele plików usuniętych powyżej. Jeśli zdecydujesz się pójść tą drogą, możesz ostatecznie chcieć skryptu usunąć niepotrzebne pliki i uruchomić skrypt po każdej dużej aktualizacji pakietu. (Przykład: uaktualnienie jądra przywróci wszystkie moduły jądra, a także zaktualizuje poprzez zależność pakiet oprogramowania układowego linux przywracając całe oprogramowanie /usr/lib/firmware).

Wreszcie, miej oko na /var/logto, że z czasem pliki dziennika będą rosły. Możesz usunąć poprzednie dzienniki, ale zachować bieżące, robiąc coś takiego jak rm *\@*.journalw folderze dzienników.

Od miesięcy z powodzeniem korzystam z serwera NAS na urządzeniu 512 MB Disk-on-Module przy użyciu tych technik, jednak nadal nie są one dla osób o słabym sercu. (Użyłem również LinuxFromScratch do zbudowania podobnego projektu przy zaledwie 128 MB pamięci, ale to już inna historia ...)


EDYCJA / DODAJ:

Oto kilka innych metod, których możesz użyć, aby uzyskać dodatkową przestrzeń:

  • Pozbyć się libgo. libgoBiblioteka wyposażony gcc-libsjest AFAIK używane tylko przez aplikacje napisane w języku Go. Nie mogę wymyślić żadnej używanej przeze mnie aplikacji, która potrzebuje tej biblioteki. W moim systemie ma on rozmiar 40 MB. Kiedy próbujesz schudnąć, to dużo miejsca. Usunąłem go z moich „mini” instalacji bez żadnych negatywnych skutków dla wszystkiego, co robię (ale znowu, to ja, YMMV!)

  • Kurczenie się libicudata.so. W moim systemie jest to 27 MB. Zasadniczo jest to ton danych unicode / locale skompresowanych do obiektu biblioteki. Istnieje narzędzie online, które może tworzyć mniejsze wersje tego pliku, ale nie zostało ono zaktualizowane do bieżącej wersji (i nie można używać starszych plików w nowszych wersjach.) Nie próbowałem robić tego ręcznie, ale jeśli potrafisz dowiedzieć się, jak to zrobić, możesz ogolić około 20-22 MB tego pliku.

  • Jeśli używasz Pythona można zapisać 37MB lub tak usuwając testbibliotekę z python2: rm -r /usr/lib/python2.7/testa około 66MB usuwając go python3: rm -r /usr/lib/python3.6/test.

  • Ponownie dla Pythona możesz pozbyć się .pyoplików i .pyplików. Te .pyopliki są „zoptymalizowane” pliki, ale Python nigdy naprawdę je wykorzystuje. Te .pypliki są surowy kod źródłowy biblioteki standardowej. Jedynymi plikami, które Python normalnie czyta podczas uruchamiania kodu Pythona, są .pycpliki (skompilowane w Pythonie). cd /usr/lib/python2.7 && find . -name "*.pyo" -exec rm -v {} \;icd /usr/lib/python3.6 && find . -name "*.pyo" -exec rm -v {} \;

  • Usuwanie niepotrzebnych danych regionalnych. Dostępny jest pakiet AUR, localepurgektóry to automatyzuje. W przeciwnym razie musisz się pobawić /usr/share/locale. Musisz zachować własne ustawienia regionalne i locale.alias. Dla mnie tutaj w Stanach Zjednoczonych, utrzymanie en_USi locale.aliasi usuwanie wszystkiego innego ogolił około 80MB.

Teraz chcę zobaczyć narzędzie, które analizuje system i określa, jakich modułów jądra potrzebujesz, a także jakich plików oprogramowania układowego potrzebujesz. Byłby to dobry sposób na „bezpieczne” wyczyszczenie tych folderów ...

A może ktoś powinien ułożyła „distro” Arch, który używa uClibclub diet-libclub coś podobnego. To może być fajny letni projekt. :-)

fdmillion
źródło
2
Też mnie to interesuje ... oprogramowanie układowe wydaje mi się największym zyskiem, staram się stworzyć małe, włóczęgowskie pudełko, więc potrzebuję tylko oprogramowania wymaganego do uruchomienia arch na virtualboksie ... jest łatwy sposób na znalezienie jakie oprogramowanie jest wymagane?
Tom B
ostrzeżenie: właśnie wypróbowałem upx, nie działa dobrze ze wszystkimi rodzajami ekwipunków, np. opuściło mysqld i mongodb segfaulting
Ayush
3
Odp: Uaktualnienia pakietów mogą przywrócić wiele usuniętych plików . Rozszerzając /etc/pacman.conf o NoExtractdefinicje (można zdefiniować wiele razy), możesz rozwiązać ten problem na stałe. Jeden przykład, aby zaktualizować tylko sterowniki Realtek nic:NoExtract = usr/lib/firmware/* !usr/lib/firmware/rtl_nic/*
Pro Backup
find /usr/lib/firmware -atime +30znajdzie pliki oprogramowania układowego, które nie są dostępne w ciągu 30 dni. Usunięcie tych plików powinno być bezpieczne.
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.*

Po pierwsze, co jest duże w systemie

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

To pokazuje posortowaną listę największych katalogów w / Możesz zrobić dwa poziomy niżej:

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

Mój wynik to:

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    /

Ignoruję /mnt(ponieważ jest to dysk zewnętrzny). Przypominają mi się dwa katalogi: vari usr. Zobaczmy, co jest w środku:

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

Potem nieco głębiej:

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

Zacznijmy od dzienników

Mam 717 MB w /var/log.

Nie jestem fanem losowego usuwania katalogów, więc zróbmy to w czysty sposób:

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

Zostawmy tylko 100 MB dzienników:

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.

Więcej informacji o tym, jak skonfigurować dziennik tutaj .

Pakiety

Mam 660M /var/cache/pacman. To było 1,8 GB, ale pobiegłem, pacman -Scaby usunąć nieużywane pakiety. Usuńmy resztę:

pacman -Scc

/ usr / share / locale

Wielu użytkowników go usuwa, a przynajmniej czyści. Ale mogę być problemem . Ale kasa bleachbit (następny akapit).

Bleachbit

Automatyczny środek czyszczący . Usunie wiele rzeczy, ale były to głównie lokalizacje.

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

Możesz poszukać więcej rzeczy do usunięcia:

bleachbit --list
bleachbit -p thunderbird.*
zamglenie
źródło
Przy dość minimalnej 64-bitowej instalacji Arch Linux, całkowity rozmiar zainstalowanego pakietu bleachbit wynosi 209,70 MiB:Total Installed Size: 209.70 MiB
Pro Backup
1
Wskazówka: jeśli zrobisz to du -xkd1w /katalogu, nie zejdzie on do innych punktów montowania.
fdmillion
3

Na dysku 4 GB w moim Eeepc z Ubuntu pomogło usunąć niektóre pliki ustawień regionalnych (z / usr / share / locale) i pliki pomocy Gnome (z / usr / share / gnome / help /). Oba zostały zainstalowane dla języków, których nie używam. Nie jestem jednak pewien, czy Arch Linux w ogóle instaluje wszystkie te pliki.


źródło
tak ... du -hs /usr/share/localema około 300 MB ... czy mogę po prostu rm -rfniepotrzebnych plików?
Stefan
2
@Stefan wiki.archlinux.org/index.php/Locale Jeśli edytujesz /etc/locale.geni uruchamiasz ponownie locale-gen, powinieneś mieć mniej wstępnie skompilowanych ustawień narodowych. Jeśli chcesz zwolnić więcej miejsca w sposób zautomatyzowany, możesz spróbować również aur.archlinux.org/packages.php?ID=11975 . (Ale to nie jest obsługiwane, a jeśli zepsuje system, musisz zachować elementy.)
ephemient
1
localepurge to skrypt do usuwania miejsca na dysku zmarnowanego na niepotrzebne lokalizacje. Najpierw edytuj /etc/locale.nopurge :) Po pierwszym uruchomieniu wyczyściłem ~ 300 MB i dziesiątki MB. Jest dostępny w AUR.
tuk0z
0

Sugerowałbym AUTOMATYCZNĄ analizę twoich własnych bardzo starych plików i sprawdzenie, czy jest to konieczne, i usunięcie ich. Można to zrobić za pomocą dwóch rzeczy. Jeden pisze findpolecenie, aby wyszukać bardzo stare pliki. i używając tego wyjścia (być może potoku) do lograteskryptu do archiwizacji plików starszych niż 3 miesiące i usuwania plików starszych niż 3 miesiące w archiwum i wysyłania wiadomości e-mail na 1 dzień przed usunięciem. Aby mieć pewność, że nie straciłeś żadnego ważnego pliku. W końcu potrzebne byłyby następujące polecenia, aby wykonać powyższe:

find , | , logrotate , mail, crontab

Nie zamierzam cię karmić łyżką. Zrobiłem to już wcześniej, z powodzeniem, a później zostałem zlikwidowany, ponieważ zdecydowaliśmy się nagiosna monitorowanie, ponieważ było bardziej dostrojone do robienia tego rodzaju rzeczy na serwerze korporacyjnym. Myślę, że jeśli mailpolecenie nie jest już skonfigurowane, może się okazać, że najtrudniejszy odpoczynek powinien być prosty. Wszystko to należy zrobić poprzez skrypt bash i umieszczenie go w zadaniu cron oraz uruchamianie co x dni. Naucz się skryptów bash, będzie to bardzo przydatne nie tylko do tego, ale ułatwi ci życie z * nix. Więc użyj swojej ulubionej wyszukiwarki internetowej i przeczytaj o powyższych poleceniach i skryptach bash. Połącz je i przetestuj. Raz usatysfakcjonowany, należy go regularnie używać. Zapewniam, że fajnie będzie to robić. Dowiesz się dużo, jeśli wcześniej tego nie robiłeś.

  • Mam nadzieję, że to pomaga
bagavadhar
źródło
1
Z mojego doświadczenia wynika, że ​​większość rzeczy zajmujących dyski nie są plikami związanymi z systemem operacyjnym, ale moje własne pliki gromadziły się przez pewien czas, dlatego zasugerowałem powyższe.
bagavadhar