zaLinux.ru

Какие файлы можно удалить при нехватке места на диске Linux


Бывают ситуации, когда место на диске закончилось полностью и нужно экстренно очистить диск и удалить файлы. Место на диске может закончится даже так, что

  • при попытке выполнить очистку кэша установочных пакетов, система будет сообщать об ошибке (нет места даже для сохранения файла-блокировщика),
  • при попытке установить ncdu для поиска разросшихся папок и файлов, система не сможет найти даже 81 килобайт, необходимый для этой команды
  • при попытке найти файлы и папки занимающие больше всего места в Linux система также будет выдавать ошибку из-за того, что команда sort не сможет сохранить на диск кэш данных, если этих данных очень много

То есть бывают действительно критические ситуации — в этих условиях перестают нормально работать многие программы и службы. Поэтому задача становится следующей: срочно любой ценой освободить место на диске, чтобы можно было продолжить обслуживание системы и перейти ко второму этапу — поиску директорий и файлов, которые привели к этой проблеме из-за того, что стали занимать слишком много места.

Предупрежу заранее: следующие команды хотя в основном и удаляют бесполезные файлы, после их выполнения могут привести к следующим последствиям:

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

Это означает, что НЕ копируйте бездумно команды — читайте пояснения к ним и оценивайте, насколько они безболезненны для вашей ситуации.

1. Удаление временных файлов

Файлы в папке /tmp/ будут удалены в любом случае при следующей перезагрузки системы. То есть с одной стороны их можно удалить достаточно безболезненно:

sudo rm -rf /tmp/*

НО: может быть нарушена работа программ, которые запущены в настоящее время и которые сохранили какие-то данные в папку /tmp/.

2. Удаление файлов кэширования

В директории /var/cache/ много поддиректорий, которые можно удалить практически безболезненно (данные утеряны не будут, а программы создадут новые файлы кэширования). Эта директория вызывает особый интерес, поскольку на некоторых системах кэши разрастаются на гигабайты и десятки гигабайт. Иногда поиск проблемной директории в /var/cache/ может окончательно решить ситуацию с нехваткой места на диске.

Для удаления кэша шрифтов:

sudo rm -rf /var/cache/fontconfig/

Для удаления кэша установочных пакетов (на Debian, Linux Mint, Ubuntu, Kali Linux и их производных):

sudo rm -rf /var/cache/apt/

Для удаления кэша установочных пакетов (на Arch Linux, BlackArch и их производных):

sudo rm -rf /var/cache/pacman/

Удаление кэша справочных страниц:

sudo rm -rf /var/cache/man/

Вы можете продолжить поиск больших кэшей применимо к программному обеспечению, установленному на вашей системе. Например, это могут быть кэши веб-сервера, прокси-сервера и т. д.

3. Удаление логов (журналов)

В этой папке (/var/log/) можно удалить практически все файлы, но старайтесь сохранить структуру папок, поскольку некоторые приложения после удаления здесь папки не в состоянии создать её второй раз…

На веб-серверах могут разрастись слишком сильно журналы веб-сервера.

Для удаления логов Apache на Debian, Linux Mint, Ubuntu, Kali Linux и их производных:

sudo rm -rf /var/log/apache2/*

Для удаления логов Apache на Arch Linux, BlackArch и их производных:

sudo rm -rf /var/log/httpd/*

Чтобы сервер начал создавать новые файлы журналов и записывать в них, нужно перезапустить службу веб-сервера.

В зависимости от интенсивности использования системы, накопленные журналы могут занимать гигабайты. В зависимости от системы файлы могут называться по-разному, более точный анализ рекомендуется выполнять с помощью утилиты ncdu:

sudo ncdu /var/log/

4. Очистите корзину

Этот совет больше для настольных систем. Файлы, которые вы удалили в графическом интерфейсе рабочего стола, попадают в папку ~/.local/share/Trash/files/, вы можете проанализировать их и при желании удалить (второй раз):


ncdu ~/.local/share/Trash/files/

5. Удаление ненужных файлов исходного кода заголовков ядра

Следующее актуально только для Debian, Linux Mint, Ubuntu, Kali Linux и их производных. Проверьте папку /usr/src/, там будут подпапки вида linux-headers- - большинство из них можно удалить — оставьте только ту, номер которой соответствует текущему ядру системы — обычно это самый последний номер выпуска.


6. Удаление осиротевших пакетов

Осиротевшие пакеты — это те пакеты (программы), которые устанавливались в качестве зависимостей для других программ. Но по разным причинам они больше не нужны: или удалена программа, которая их использовала, или для той программы они перестали быть зависимостями после обновления программы.

На Debian, Linux Mint, Ubuntu, Kali Linux и их производных удалить ненужные пакеты можно следующим образом:

sudo apt autoremove

Для Debian и производных предыдущая команда абсолютно безопасна.

В Arch Linux и производных список осиротевших пакетов можно увидеть следующим образом:

pacman -Qdt

Прежде чем переходить к их автоматическому удалению, настоятельно рекомендуется изучить этот список!

Для рекурсивного удаления сироток и их конфигурационных файлов в Arch Linux и производных:

sudo pacman -Rns $(pacman -Qtdq)

Если осиротевшие пакеты не были найдены, pacman завершит работу с ошибкой: ошибка: не задано целей (для справки используйте -h). Это ожидаемо, поскольку pacman -Rns не получил аргументов.


7. Очистка журналов systemd

Со временем, в некоторых системах логи системы начинают занимать гигабайты на жёстком диске. Просмотреть журналы и освободить место вы можете с помощью команды journalctl, подробности смотрите в статье «Как использовать journalctl для просмотра системных логов Linux».

Чтобы увидеть, сколько место занимают журналы, выполните:

journalctl --disk-usage

Чтобы удалить все записи, оставив только записей на 100 мегабайт, выполните:

journalctl --vacuum-size=100M

Либо для удаления всех записей в системном журнале, старше одной недели:

journalctl --vacuum-time=1weeks

8. Файлы в директории /lost+found

В папку /lost+found сохраняются файлы, которые были найдены после проверки файловой системы диска. Обычно такие проверки выполняются после внезапной перезагрузки системы или в случае признаков проблем с диском.

Найденные файлы обычно повреждены. Их цель — сохранить данные, которые в случае исправления ошибок на файловой системе были бы совсем утеряны.

Папка /lost+found может быть пустой (если не было проблем с диском). В случае если там есть файлы, то вы можете их просмотреть и, при желании, удалить.

9. Очистка PHP сессий

Иногда веб-приложений из-за бага могут создать бесчисленное количество сессий. Проверьте директорию /var/lib/php/sessions/ на предмет слишком большого количества файлов.

(БОНУС) 10. Проанализируйте файлы Docker

Не удаляйте бездумно файлы Docker. Я привожу пример этой директории только по той причине, что она привлекла моё внимание из-за просто фантасмагоричного размера — и это при том, что я Docker'ом фактически не пользуюсь — буквально несколько раз попробовал, чтобы увидеть, что это такое.

Самой большой папкой является /var/lib/docker/overlay2/. Для анализа занимаемого места на диске выполните:

sudo ncdu /var/lib/docker/

Заключение

Итак, мы рассмотрели, какие файлы можно удалить из Linux практически без потери информации. Кроме рассмотренных директорий, которые можно очистить как на удалённой системе с веб-сервером, так и на домашнем компьютере, пользователям с графическим рабочим столом следует обратить внимание на такие директории как:

  • ~/.cache
  • ~/.local
  • ~/Downloads (ваши скаченные файлы)

Их НЕ нужно удалять, но стоит проанализировать. Например, вы можете выяснить, что веб-браузер на вашем компьютере имеет кэш в несколько гигабайт и что вы можете их освободить (рекомендуется делать средствами веб-браузера, а не удалять файлы напрямую).

Если я пропустил какие-то директории с файлами, которые можно безболезненно удалить, то пишите их в комментариях!


Рекомендуемые статьи:

8 Комментарии

  1. Прохожий

    Ну еще можно поудалять все скачанные сериалы и киношки 🙂

  2. Gykan

    Спасибо бро, очень помог!

  3. Александр

    Хорошая, информативная статья. Сохранил в закладки! 

  4. Лев Александрович

    Спасибо! Очень толково!

    Есть проблема с нехваткой места на домашней папке, но она пуста.

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

    1. Alexey (Автор записи)

      Приветствую, больше всего занимает /usr, но это никак не исправить, кроме удаления программ и пакетов. Наверное, вы не захотите этого делать.

      Чтобы посмотреть, что занимает место в папке /var выполните следующую команду:

      ncdu /var

      Если лень разбираться, просто выполните следующие команды и папка /var сразу похудеет:

      journalctl --vacuum-size=100M
      sudo apt autoremove
      sudo rm -rf /var/cache/apt/

      Чтобы посмотреть, что занимает место в папке /home выполните следующую команду:

      ncdu /home

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

      Там, скорее всего, директории, которые начинаются с точки, то есть «скрытые» папки. Можете их посмотреть командой

      ls -al ~

      У вас, на самом деле, можно сказать что папка практически пустая, так как у меня один только кэш веб-браузера на несколько гигибайт (он тоже хранится в /home).

  5. Евгений

    gdu ищет быстрее, часто это важно.

    В /var/log вообще безболезненно можно удалять старые журналы -- которые с цифрами на конце и сжатые

    rm /var/log/*.{[0-9],gz}

    Старые установочные пакеты и ненужные чистятся ещё командами

    apt autopurge

    Ну и на такой случай полезно уметь в простейшие команды, ибо даже mc может не загрузиться:

    find / -type f -size +1G -exec ls -lah {} \; | cut -d" " -f 5- | sort -rnk1

    Эта, например, выводит все файлы с корня размером более 1GB в "человекочитаемом" формате размера, отсортированном по его убыванию. Т.е. в начале списка "кандидаты" на удаление или даже виновники нехватки места. Если список длинный -- поиграйтесь размером, ищите не с корня, а глубже. Или уберите ключик r в последней команде, пусть сортирует по возрастанию, выбросит самое крупное в конец выхлопа.

    1. Alexey (Автор записи)

      Приветствую! Спасибо, за полезное дополнение!

  6. Нина

    Спасибо, ваша статья меня спасла. Бонусный пункт 10 - это бомба! 36Гб кэша докера и полгода мучений с удалением чего только можно…

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *