У кореневому накопичувачі не вистачає місця на диску. Як я можу звільнити місце?


35

Я використовую Ubuntu 11.04 і хочу звільнити деякий простір у моєму кореневому каталозі, який перевантажений. Я особливо хочу змінити шлях, який використовується для встановлення програм (вони встановлюються безпосередньо на кореневий диск).

Інша думка полягає в тому, що я працюю на сервері баз даних MySQL. Сервер встановлюється в кореневому каталозі сам, тому я не хочу ризикувати втратою будь-яких даних.

Будь ласка, дайте мені кілька порад, які допоможуть вирішити цю проблему.

Відповіді:


36

Нещодавно я зіткнувся з подібною ситуацією. Занадто багато програм було встановлено, і вони почали використовувати мій корінний простір кріплення. Я перелічу кілька кроків, яких я дотримувався, і сподіваюся, що ви також можете використати те саме.

  1. Очистіть кеш apt-get. Наступна команда видалить усі завантажені файли deb із каталогу кешу apt-get.

    Виконайте цю команду: sudo apt-get clean

  2. Переміщення / місце кріплення додому на інший привід . Раніше моя домашня папка знаходилася на кореневому диску. Тому я перемістив свою домашню папку на окремий диск. Це допомогло мені звільнити великий стрес від кореневого монтування, оскільки більшість програм зберігають свої дані в / home / user_name / folder. Прочитайте, як перемістити домашню папку на окремий диск.

  3. Збільшити розмір кореневого розділу Я знаю, що це дуже очевидна відповідь. Але повірте, наші дані потребують змін з часом. Я подумав, що 20 ГБ / кореневого монтажу буде достатньо, але, закінчивши рік, я змінив розмір кореневого кріплення і збільшився до 50 ГБ


8
sudo apt
прибирайте

Остерігайтеся, що apt-get cleanвилучаєте навіть встановлені пакети. Ви можете зберегти їх у разі невдалого оновлення.
timss

Я очистив кеш, і він очистив 10 Гбіт! +1
Numeri повідомляє про відновлення Моніки

28

Я успішно очистив 3,5 Гб, видаливши старі заголовки та зображення, використовуючи таку команду:

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

Ви можете перевірити, які пакети будуть очищені, виконуючи першу частину команди:

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

Довідково


Інші поради не допомогли, але це врятувало мене близько 5G. Спасибі.
baltasvejas

Опція -yв команді apt-get насправді не потрібна. Якщо ви пропустите це apt-get, то запитаєте вас (лише один раз), чи потрібно видалити всі пакетні пакети. Імхо, краще не користуватися -y, це дає ще одну можливість перевірити (крім другої команди, згаданої вище). Для мене це звільнило 15 Гб на кореневому розділі!
Борис Даппен

2
Команда 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 намагалася видалити наразі встановлену версію ядра в моїй системі. Будьте обережні, щоб не зробити вашу систему незавантаженою.
Антоній

@Antony yaikes! я збирався спробувати це. Як я можу перевірити, що добре видалити?
Сонічна душа

2
@SonicSoul Я врешті-решт зробив те, що пропонує одна з відповідей нижче ( askubuntu.com/a/778442/333806 ). В основному, побіг uname -rзнайти поточне ядро ​​і подбав про те, щоб його не видалити. Якщо команда, що надається homebrandдля перевірки, які пакети будуть очищені, не показує поточне ядро, то ви повинні бути в безпеці виконувати згадану ним команду очищення.
Антоній

22

Використовуйте dpkg-queryдля пошуку найбільших пакетів та видаліть ті, які вам більше не потрібні ( джерело ):

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}'

1
Тепер це дійсно корисний однолінійний. Ідеально підходить для швидкого огляду найбільших пакетів встановлення. Заходьте до моїх точкових файлів!
arainone

Ви можете отримати це за допомогою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.

19
Ви не даєте пояснень. Якщо хтось повинен просто скопіювати / вставити ваш код, система закриється без попередження, можливо, це призведе до втрати даних. Будь ласка, не надайте команди без пояснення того, що вони роблять. -1
Жо-Ерленд Шінстад

9
Чому потрібно перевіряти файлову систему?
Натан Осман

10

Видалення старих версій ядра (як це вже запропонувало homebrand ) може звільнити пристойну кількість місця, якщо ви ще не зробили це робити.

Існує декілька способів видалення старих версій ядра, а ряд різних варіантів можна знайти у відповідях, розміщених на: Як видалити старі версії ядра, щоб очистити меню завантаження?

Моїм кращим методом є, головним чином, ця відповідь з питань, де вона розбита на досить прості зрозумілі кроки:

Відкрийте термінал і перевірте своє поточне ядро:

uname -r

НЕ ВИДАЙТЕ ЦЕ КЕРНЕЛЬ!

Далі введіть команду нижче для перегляду / списку всіх встановлених ядер у вашій системі.

dpkg --list | grep linux-image

Знайдіть усі ядра, нижчі за ваші поточні. Коли ви знаєте, яке ядро ​​видалити, продовжуйте видаляти його нижче.

Виконайте команду нижче, щоб видалити вибране ядро.

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

Потім у відповіді йдеться на "update-grub2", коли ви закінчите очищення, що, швидше за все, застаріло: sudo update-grubповинно вистачити для Ubuntu 14.04 і далі. Потім вони говорять "Перезавантажте систему" (що, здається, так, що ви можете побачити очищене меню завантаження), тому в цьому випадку це не потрібно.

Меню завантажувача grub використовується для показу всіх старих версій ядра на головній сторінці, але вони тепер розміщені поза підменю. Це набагато акуратніше, але новачок у Ubuntu / Linux, можливо, не знає, що вони там займають місце.

Як було запропоновано, не видаляйте поточне ядро, а також доцільно зберегти попередню версію ядра, на всякий випадок, якщо вам потрібно повернутись до цього.

Є більш швидкі способи зробити це, але я віддаю перевагу простоті цього методу, головним чином тому, що я можу зрозуміти кожну команду по дорозі:

«Що версії ядра я використовую? Яке ядро версії у мене? Добре, продувки , що один.»

Полоскайте, повторіть, милуйтеся звільненим вами простором.

Копіювати назву конкретного старшого ядра, яке ви хочете видалити з результатів, що dpkg --list | grep linux-imageнадає вам у терміналі, досить легко , а потім використовувати sudo apt-get purgeта вставити скопійоване ім'я в.

Видалення 3 або 4 старих ядер, як правило, звільнятиме близько ГБ місця на вашому кореневому диску.


1
Окрім linux-image, ви також можете
привітати

8

Коли мені потрібно зробити більше вільного місця на серверах, я використовую цю команду:

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

Він знаходить, що всі файли перевищують 50 Мб, і " du -h" скласти кращий список файлів і "sort -n"після" "труби зробити список числовим чином відсортований за розміром файлу.


Залежно від вашої системи, це може зайняти деякий час. Взяв у мене 15 хвилин за 500 Гб на жорсткому диску
Габріель Ярмарок

7

Виконуючи вказівки щодо документів спільноти Ubuntu, я виявив масивний файл сміття - це було схоже на резервну копію /var/log/syslog.1, імовірно, щось спричиняло навантаження на вихід у syslog ...

Команда, яка знайшла це:

sudo find / -size +1G

І тоді будь-який великий файл у папці під назвою .Trash, ймовірно, добре видалити ...


5

Ось сценарій, який я запускаю, щоб звільнити місце на кореневому розділі

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
}

Редагувати: Нові 2-х
рядкові

Спасибі! "Обертання та видалення старих журналів" очистити кілька концертів на моєму диску.
SaTa

Приємно. Розробники також можуть видалити невикористані зображення докера :docker system prune
Pablo A

@Pablo вони можуть дивитися /var/crash/*.crashтеж
cmak.fr

Оскільки вам потрібно sudoвикликати функцію, sudoусередині функції здається зайвою. Також vacuum-time=1sможе не завжди працювати, але я не впевнений, оскільки замість цього використовую вакуумний розмір: forum.manjaro.org/t/…
WinEunuuchs2Unix

2

У Ubuntu кожна папка може мати власну файлову систему. Це означає, що ви можете перемістити будь-яку папку на власний розділ, інший диск або навіть у віддалену мережу. Це особливо популярно для домашніх каталогів, оскільки це означає, що ви можете перевстановити Ubuntu, не змінюючи особистих налаштувань або втративши будь-які файли. Він також популярний у мережах, де користувачі повинні мати можливість увійти на різні машини та все ж отримати свої особисті налаштування та файли. Але це корисно у багатьох різних випадках, таких як ваш.

Програми не встановлені в певну папку, як, здається, пропонуєте. Різні частини програми розміщуються в різних частинах файлової системи. Основна програма зазвичай розміщується в / usr / bin, тоді як файли конфігурації, наприклад, розміщуються в / etc. У вашому випадку, MySQL, самі бази даних розміщуються десь у / var. Я думаю / var / mysql.

Оскільки / usr та / var є обома каталогами у кореневій файловій системі, вони будуть використовувати простір кореневих файлових систем. Але, як я вже говорив, ви можете перемістити їх у різні файлові системи. У випадку з MySQL ви можете налаштувати, де зберігаються бази даних. Ви можете легко перемістити бази даних, наприклад, в /home/username/.mysql/datababa.


1

Ви не можете змінити шлях, де менеджер пакунків встановлює програми. Більшість файлів додатків зберігаються в /usr. Якщо ви хочете відновити простір на кореневому розділі, /usrможливим рішенням є перехід до іншого розділу.

З коментарів:

  • Зберігайте дозволи при копіюванні, тобто краще скористайтеся командним рядком, якщо ви не впевнені, що зробить ваш файловий менеджер.

  • Правильний шлях до цього - встановити нову файлову систему в / usr або використовувати mount --bind. Не ясно, наскільки добре би функціонувало символьне посилання.


обережно рухатись / usr. використовуйте команду cp, щоб скопіювати папку usr з таким же дозволом. потім видаліть оригінальну папку / usr і створіть посилання на папку usr на /.
шантану

1
Він повинен мати точку кріплення. Не посилання.
Жо-Ерленд Шінстад

Невелика примітка: багато програм також встановлюють у бінарні файли та дані програми /opt.
Натан Осман

@ george-edison Добре, що деякі програми встановлюють речі /optпроти "правил".
січня

1

Якщо у вас багато окремих файлових систем, наступний трюк може виявитися корисним: Mount / інший час, але на цей раз під / mnt. Тепер усі ваші пошуки великих чи багатьох файлів можна виконати, не обходячи неправильні файлові системи.

Це також може допомогти вам знайти файли, які приховані під іншим кріпленням.



0

Якщо у вас встановлений сервер бази даних mssql, це може з'їсти вашу пам'ять. Запустіть використання диска NCurses

$ sudo ncdu / 

Щоб перевірити, які папки та файли займають максимум пам’яті. Дані mssql зазвичай зберігаються на

/var/opt/mssql/backup/

Питання зазначає, що База даних повинна залишатися.
Стівен Рауч

Питання згадувало базу даних MySql, тому якщо він повинен видалити дані бази даних MsSQL, я думаю, це здається досить справедливою відповіддю.
Йогеш

Може бути корисно варіант-x
Пабло
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.