Корневому диску не хватает места на диске. Как я могу освободить место?

35

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

Еще одно соображение заключается в том, что я работаю на сервере базы данных MySQL. Сервер установлен в самом корневом каталоге, поэтому я не хочу рисковать потерей данных.

Пожалуйста, дайте мне несколько советов, которые помогут разобраться с этой проблемой.

Рихан
источник

Ответы:

36

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

  1. Очистите apt-get кеш. Следующая команда удалит все загруженные файлы deb из каталога кэша apt-get.

    Запустите эту команду: sudo apt-get clean

  2. Переместить / домой точку монтирования на другой диск . Ранее моя домашняя папка находилась на корневом диске. Поэтому я переместил свою домашнюю папку на отдельный диск. Это помогло мне избавиться от стресса при монтировании root, потому что большинство приложений хранят свои данные в папке / home / user_name /. Прочитайте, как перенести домашнюю папку на отдельный диск.

  3. Увеличить размер корневого раздела я знаю, это очень очевидный ответ. Но поверьте мне, наши данные со временем нуждаются в изменениях. Я думал, что будет достаточно 20 ГБ / монтирования root, но в течение года я изменил размер корневого монтирования и увеличил до 50 ГБ.

Амей Джа
источник
8
sudo apt-get clean освободило больше места, чем ожидалось, +1
btk
Осторожно, что apt-get cleanудаляет даже установленные пакеты. Вы можете сохранить их в случае сбоя обновления.
Timss
Я очистил свой кеш, и он очистил 10 Гб! +1
Нумери говорит восстановить Монику
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'

Ссылка

homebrand
источник
Другие советы не помогли, но это спасло меня от 5G. Спасибо.
baltasvejas
Опция -yв команде apt-get на самом деле не нужна. Если вы опустите его, apt-get спросит вас (только один раз), следует ли удалить все переданные по конвейеру пакеты. Imho лучше не использовать -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 попыталась удалить установленную версию ядра в моей системе. Будьте осторожны, чтобы ваша система не загружалась.
Энтони
@ Энтони тык! Я собирался попробовать это. Как я могу проверить, какие из них можно удалить?
Sonic Soul
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}'
michaeljoseph
источник
1
Теперь это действительно полезный однострочник. Идеально подходит для краткого обзора самых крупных пакетов установки. Приходите к моим точечным файлам!
Arainone
Вы можете получить это сwajig sizes
Пабло 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 более старых ядер обычно освобождает около ГБ места на вашем корневом диске.

pHeLiOn
источник
1
В дополнение к linux-image вы также можете использовать grep для и очищать заголовки linux
kdopen
8

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

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

Он находит все файлы, размер которых превышает 50 МБ, и " du -h" составляет лучший список файлов, а "sort -n"после списка составленных номеров численно сортируется по размеру файла.

zorbon.cz
источник
В зависимости от размера вашей системы, это может занять некоторое время. У меня ушло 15 минут на 500 ГБ на жестком диске
Габриэль, ярмарка,
7

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

Команда, которая нашла это, была:

sudo find / -size +1G

И тогда любой большой файл в папке с именем .Trash, вероятно, хорошо удалить ...

hwjp
источник
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
}
cmak.fr
источник
Редактировать: Новые 2 строки старого очистителя ядра
cmak.fr
Благодарность! «Поворот и удаление старых журналов» очистить несколько концертов на моем диске.
SaTa
Ницца. Разработчики могут также захотеть удалить свои неиспользуемые образы докера :docker system prune
Pablo A
@Pablo A они /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/databases.

Джо-Эрленд Шинстад
источник
1

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

Из комментариев:

  • Сохраняйте разрешения при копировании, т.е. лучше используйте командную строку, если вы не уверены, что будет делать ваш файловый менеджер.

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

январь
источник
осторожно с перемещением / usr. используйте команду cp, чтобы скопировать папку usr с тем же разрешением. затем удалите оригинальную папку / usr и создайте ссылку на папку usr в /.
Шантану
1
У него должна быть точка монтирования. Не ссылка.
Джо-Эрленд Шинстад
Небольшое примечание: многие приложения также устанавливают двоичные файлы и данные приложений /opt.
Натан Осман
@ george-edison Ну, некоторые приложения устанавливают что-то /optпротив "правил".
Jan
1

Если у вас много отдельных файловых систем, может пригодиться следующий трюк: Монтировать / в другой раз, но на этот раз в / mnt. Теперь весь ваш поиск больших или многих файлов может быть выполнен без обхода неправильных файловых систем.

Это также может помочь вам найти файлы, которые скрыты под другим монтированием.

steviethecat
источник
0

Если у вас установлен сервер баз данных mssql, это может поглотить вашу память. Запустите NCurses Использование диска

$ sudo ncdu / 

Чтобы проверить, какие папки и файлы занимают максимум места. Данные MSSQL обычно хранятся на

/var/opt/mssql/backup/
Yogesh
источник
Вопрос гласит, что База данных должна остаться.
Стивен Раух
В вопросе упоминалась база данных MySql, так что, если он хочет удалить данные базы данных MsSQL, то я думаю, что это довольно справедливый ответ.
Йогеш,
Может быть полезно вариант-x
Пабло