Na dysku głównym brakuje miejsca na dysku. Jak mogę zwolnić miejsce?

35

Używam Ubuntu 11.04 i chcę zwolnić miejsce w moim katalogu głównym, który jest przeciążony. W szczególności chcę zmienić ścieżkę używaną do instalowania aplikacji (są one instalowane bezpośrednio na dysku głównym).

Inną kwestią jest to, że pracuję na serwerze bazy danych MySQL. Serwer jest zainstalowany w samym katalogu głównym, więc nie chcę ryzykować utraty danych.

Proszę o wskazówki, jak rozwiązać ten problem.

Rihan
źródło

Odpowiedzi:

36

Ostatnio spotkałem się z podobną sytuacją. Zainstalowano zbyt wiele aplikacji i zaczęły one korzystać z mojego miejsca do montowania katalogu głównego. Wymieniam kilka kroków, które podążyłem, i mam nadzieję, że możesz użyć tego samego.

  1. Wyczyść pamięć podręczną apt-get. Następujące polecenie usunie wszystkie pobrane pliki deb z katalogu pamięci podręcznej apt-get.

    Uruchom to polecenie: sudo apt-get clean

  2. Przenieś punkt montowania / home na inny dysk . Wcześniej mój folder domowy znajdował się na dysku głównym. Przeniosłem więc folder domowy na oddzielny dysk. Pomogło mi to zmniejszyć stres związany z montowaniem roota, ponieważ większość aplikacji przechowuje dane w folderze / home / nazwa_użytkownika /. Przeczytaj, jak przenieść folder domowy na oddzielny dysk.

  3. Zwiększ rozmiar partycji root Wiem, że to bardzo oczywista odpowiedź. Ale wierz mi, nasze dane wymagają zmian w czasie. Myślałem, że wystarczy 20 GB / root, ale w ciągu roku zmieniłem rozmiar swojego roota i zwiększyłem do 50 GB.

Amey Jah
źródło
8
sudo apt-get clean uwolnił więcej miejsca niż oczekiwano, +1
btk
Uwaga, apt-get cleanusuwa nawet zainstalowane pakiety. Możesz je zachować na wypadek, gdyby aktualizacja się nie powiodła.
timss
Wyczyściłem pamięć podręczną i wyczyściłem 10 Gb! +1
Numeri mówi Przywróć Monikę
28

Udało mi się wyczyścić 3,5 GB, usuwając stare nagłówki i obrazy, używając następującego polecenia:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge

Możesz sprawdzić, które pakiety zostaną usunięte podczas wykonywania pierwszej części polecenia:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'

Odniesienie

homebrand
źródło
Inne wskazówki nie pomogły, ale zaoszczędziło mi to około 5G. Dzięki.
baltasvejas
Opcja -ypolecenia apt-get nie jest tak naprawdę konieczna. Jeśli go pominiesz, apt-get zapyta cię (tylko raz), czy wszystkie pakiety potokowe powinny zostać usunięte. Imho lepiej nie używać -y, daje jeszcze jedną możliwość sprawdzenia (oprócz drugiego polecenia wspomnianego powyżej). Dla mnie to uwolnione 15 GB na partycji root!
Boris Däppen
2
Komenda dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge próbowała usunąć aktualnie zainstalowaną wersję jądra w moim systemie. Uważaj, aby nie uniemożliwić uruchomienia systemu.
Antony,
@Antony yaikes! miałem zamiar tego spróbować. Jak mogę sprawdzić, które z nich można usunąć?
Sonic Soul,
2
@SonicSoul W końcu zrobiłem to, co sugeruje jedna z poniższych odpowiedzi ( askubuntu.com/a/778442/333806 ). Zasadniczo pobiegł uname -rznaleźć bieżące jądro i starał się go nie usuwać. Jeśli polecenie dostarczone przez homebrandsprawdzanie, które pakiety zostaną wyczyszczone, nie pokazuje bieżącego jądra, to powinieneś być bezpieczny, uruchamiając wspomnianą przez niego komendę purge.
Antony
22

Użyj, dpkg-queryaby znaleźć największe pakiety i usunąć te, których już nie potrzebujesz ( źródło ):

dpkg-query --show --showformat='${Package;-50}\t${Installed-Size}\n' | sort -k 2 -n | grep -v deinstall | awk '{printf "%.3f MB \t %s\n", $2/(1024), $1}'
michaeljoseph
źródło
1
Teraz jest to naprawdę przydatny jednowarstwowy. Idealny do szybkiego podsumowania największych pakietów instalacyjnych. Przyjdź do moich plików dotfiles!
arainone
Możesz to uzyskać za pomocąwajig sizes
Pablo A
13
sudo apt autoclean  # clean /var/cache/apt/archives folder which save packages while install.
sudo apt autoremove # this command remove unused packages.

sudo shutdown -rf   # it will restart your PC immediately and check filesystem in next boot.
shantanu
źródło
19
Nie podajesz żadnych wyjaśnień. Jeśli ktoś po prostu skopiuje / wklei kod, system zamknie się bez ostrzeżenia, co może spowodować utratę danych. Nie podawaj poleceń bez wyjaśnienia, co robią. -1
Jo-Erlend Schinstad,
9
Dlaczego trzeba sprawdzić system plików?
Nathan Osman,
10

Usunięcie starych wersji jądra (jak sugeruje już homebrand ) może zwolnić sporo miejsca, jeśli jeszcze tego nie zrobiłeś.

Istnieje wiele sposobów na usunięcie starych wersji jądra, a odpowiedzi można znaleźć na wiele różnych sposobów: Jak usunąć stare wersje jądra, aby wyczyścić menu startowe?

Moją preferowaną metodą jest głównie ta odpowiedź z penreturns, gdzie jest podzielona na dość proste i zrozumiałe kroki:

Otwórz terminal i sprawdź swoje bieżące jądro:

uname -r

NIE USUWAJ TEGO Jądra!

Następnie wpisz poniższe polecenie, aby wyświetlić / wyświetlić listę wszystkich zainstalowanych jąder w systemie.

dpkg --list | grep linux-image

Znajdź wszystkie jądra, które są niższe niż twoje obecne jądro. Kiedy wiesz, które jądro należy usunąć, przejdź poniżej, aby je usunąć.

Uruchom poniższe polecenie, aby usunąć wybrane jądro.

sudo apt-get purge linux-image-x.x.x.x-generic

Odpowiedź mówi wtedy „update-grub2”, kiedy skończysz czyścić, co prawdopodobnie będzie już nieaktualne: sudo update-grubpowinno wystarczyć dla Ubuntu 14.04 i dalszych. Mówią także „Uruchom ponownie system” (wydaje się, że możesz zobaczyć oczyszczone menu startowe), więc w tym przypadku nie jest to konieczne.

Menu programu rozruchowego Grub służyło do wyświetlania wszystkich starszych wersji jądra na stronie głównej, ale teraz są one umieszczone z dala od podmenu. Jest o wiele ładniejszy, ale nowicjusz Ubuntu / Linux może nie być świadomy, że zajmuje miejsce.

Zgodnie z sugestią, nie usuwaj obecnego jądra, a także zaleca się zachowanie poprzedniej wersji jądra, na wypadek, gdybyś musiał cofnąć się do tego.

Są na to szybsze sposoby, ale wolę prostotę tej metody głównie dlatego, że rozumiem każde polecenie po drodze:

„Jakiej wersji jądra używam? Jakie mam wersje jądra? Dobra, wyczyść .”

Opłucz, powtórz, podziwiaj uwolnione miejsce.

Dość łatwo jest skopiować nazwę konkretnego starszego jądra, którą chcesz usunąć z wyników wyświetlanych dpkg --list | grep linux-imagew terminalu, a następnie użyć sudo apt-get purgei wkleić skopiowaną nazwę.

Usunięcie 3 lub 4 starszych jąder zwykle zwalnia około GB miejsca na dysku głównym.

pHELiOn
źródło
1
Oprócz linux-image możesz także
grepować
8

Kiedy potrzebuję zrobić więcej wolnego miejsca na serwerach, używam tego polecenia:

find / -type f -size +50M -exec du -h {} \; | sort -n

Znajduje wszystkie pliki większe niż 50 MB i „ du -h” tworzy lepszą listę plików, a "sort -n„po potoku tworzy listę uporządkowaną numerycznie według rozmiaru pliku.

zorbon.cz
źródło
W zależności od tego, jak duży jest twój system, może to zająć trochę czasu. Zajęło mi 15 minut na około 500 GB na HDD
Gabriel Fair
7

Postępując zgodnie z instrukcjami zawartymi w dokumentach społeczności Ubuntu , odkryłem ogromny plik śmieci - wyglądał on jak kopia zapasowa pliku /var/log/syslog.1, prawdopodobnie coś wyrzucało mnóstwo danych wyjściowych do syslog ...

Poleceniem, które ją znalazło, było:

sudo find / -size +1G

A potem każdy duży plik w folderze o nazwie .Trashprawdopodobnie dobrze jest usunąć ...

hwjp
źródło
5

Oto skrypt, który uruchamiam, aby zwolnić miejsce na partycji root

function myclean {
    ## Show free space
    df -Th | grep -v fs
    # Will need English output for processing
    LANG=en_GB.UTF-8

    ## Clean apt cache
    apt-get update
    apt-get -f install
    apt-get -y autoremove
    apt-get clean

    ## Remove old versions of snap packages
    snap list --all | while read snapname ver rev trk pub notes; do
        if [[ $notes = *disabled* ]]; then
            snap remove "$snapname" --revision="$rev"
        fi
    done
    ## Set snap versions retain settings
    if [[ $(snap get system refresh.retain) -ne 2 ]]; then snap set system refresh.retain=2; fi
    rm -f /var/lib/snapd/cache/*

    ## Remove old versions of Linux Kernel
    # This one-liner is deprecated since 18.04
    # dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs apt-get -y purge
    # New 2 lines to remove old kernels
    dpkg --list | grep 'linux-image' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs apt-get -y purge
    dpkg --list | grep 'linux-headers' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs apt-get -y purge

    ## Rotate and delete old logs
    /etc/cron.daily/logrotate
    find /var/log -type f -iname *.gz -delete
    sudo journalctl --rotate
    sudo journalctl --vacuum-time=1s

    ## Show free space
    df -Th | grep -v fs
}
cmak.fr
źródło
Edycja: Nowy 2
liniowy program do
Dzięki! „Obróć i usuń stare logi” wyczyść kilka koncertów na moim dysku.
SaTa
Miły. Programiści mogą również chcieć usunąć nieużywane obrazy dokerów :docker system prune
Pablo A
@Pablo A można wyglądają na /var/crash/*.crashzbyt
cmak.fr
Ponieważ musisz sudowywołać funkcję, sudofunkcja wydaje się zbędna. Również vacuum-time=1snie zawsze może działać, ale nie jestem pewien, ponieważ zamiast tego używam wielkości próżni: forum.manjaro.org/t/…
WinEunuuchs2Unix
2

W Ubuntu każdy folder może mieć własny system plików. Oznacza to, że możesz przenieść dowolny folder na własną partycję, inny dysk lub nawet w zdalnej sieci. Jest to szczególnie popularne w przypadku katalogów domowych, ponieważ oznacza to, że możesz ponownie zainstalować Ubuntu bez zmiany ustawień osobistych lub utraty jakichkolwiek plików. Jest również popularny w sieciach, w których użytkownicy powinni mieć możliwość logowania się na różnych komputerach, a jednocześnie uzyskiwania własnych ustawień i plików. Jest to jednak przydatne w wielu różnych przypadkach, takich jak Twoja.

Aplikacje nie są instalowane w określonym folderze, jak sugerujesz. Różne części aplikacji są umieszczone w różnych częściach systemu plików. Główny program jest zwykle umieszczany w / usr / bin, podczas gdy pliki konfiguracyjne są umieszczane na przykład w / etc. W twoim przypadku, MySQL, same bazy danych są umieszczone gdzieś w / var. Myślę, że / var / mysql.

Ponieważ oba katalogi / usr i / var są katalogami w głównym systemie plików, wykorzystają przestrzeń głównego systemu plików. Ale jak powiedziałem, możesz przenieść je do różnych systemów plików. W przypadku MySQL możesz skonfigurować miejsce przechowywania baz danych. Możesz na przykład łatwo przenieść bazy danych do /home/username/.mysql/databases.

Jo-Erlend Schinstad
źródło
1

Nie można zmienić ścieżki, w której menedżer pakietów instaluje aplikacje. Większość plików aplikacji jest zapisywana w /usr. Jeśli chcesz odzyskać miejsce na partycji głównej, możliwe jest przejście /usrdo innej partycji.

Z komentarzy:

  • Zachowaj uprawnienia podczas kopiowania, tj. Lepiej użyj wiersza poleceń, jeśli nie masz pewności, co zrobi menedżer plików.

  • Właściwy sposób to zamontowanie nowego systemu plików w / usr lub użycie mount --bind. Nie jest jasne, jak dobrze działałoby dowiązanie symboliczne.

Jan
źródło
ostrożny przy przenoszeniu / usr. użyj polecenia cp, aby skopiować folder usr z tym samym uprawnieniem. następnie usuń oryginalny folder / usr i utwórz łącze do folderu usr na /.
shantanu,
1
Powinien mieć punkt montowania. Nie link.
Jo-Erlend Schinstad,
Mała uwaga: wiele aplikacji instaluje również pliki binarne i dane aplikacji /opt.
Nathan Osman,
@ george-edison Cóż, niektóre aplikacje instalują rzeczy /optwbrew „regułom”.
Jan
1

Jeśli masz wiele oddzielnych systemów plików, przydatna może być następująca sztuczka: Zamontuj / innym razem, ale tym razem w / mnt. Teraz można wyszukiwać duże lub wiele plików, nie przechodząc przez niewłaściwe systemy plików.

Może również pomóc znaleźć pliki ukryte pod innym mocowaniem.

steviethecat
źródło
0

Jeśli masz zainstalowany serwer bazy danych mssql, może to pochłonąć twoją pamięć. Uruchom użycie dysku NCurses

$ sudo ncdu / 

Aby sprawdzić, które foldery i pliki zajmują maksymalną pamięć. Dane mssql są zwykle przechowywane

/var/opt/mssql/backup/
Jogesh
źródło
Pytanie stwierdza, że ​​baza danych musi pozostać.
Stephen Rauch
Pytanie dotyczyło bazy danych MySql, więc jeśli ma usunąć dane z bazy danych MsSQL, wydaje mi się, że to dość uczciwa odpowiedź.
Yogesh,
Może być przydatna opcja-x
Pablo