Бывают ситуации, когда место на диске закончилось полностью и нужно экстренно очистить диск и удалить файлы. Место на диске может закончится даже так, что
- при попытке выполнить очистку кэша установочных пакетов, система будет сообщать об ошибке (нет места даже для сохранения файла-блокировщика),
- при попытке установить 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 (ваши скаченные файлы)
Их НЕ нужно удалять, но стоит проанализировать. Например, вы можете выяснить, что веб-браузер на вашем компьютере имеет кэш в несколько гигабайт и что вы можете их освободить (рекомендуется делать средствами веб-браузера, а не удалять файлы напрямую).
Если я пропустил какие-то директории с файлами, которые можно безболезненно удалить, то пишите их в комментариях!
Связанные статьи:
- ncdu: графический интерфейс du чтобы быстро узнать, какие файлы и папки израсходовали место на диске (83.1%)
- Как найти файлы и папки занимающие больше всего места в Linux (83.1%)
- Диск Windows монтируется только для чтения (РЕШЕНО) (51.3%)
- Как исправить «Windows is hibernated, refused to mount» (РЕШЕНО) (51.3%)
- Как восстановить работоспособность USB диска/флешки после записи ISO или установки ОС (РЕШЕНО) (51.3%)
- Как использовать команду ip в Linux (RANDOM - 15.6%)
Ну еще можно поудалять все скачанные сериалы и киношки 🙂
Спасибо бро, очень помог!
Хорошая, информативная статья. Сохранил в закладки!
Спасибо! Очень толково!
Есть проблема с нехваткой места на домашней папке, но она пуста.
Помогите, пожалуйста, разобраться с диаграммой в приложении.
Приветствую, больше всего занимает /usr, но это никак не исправить, кроме удаления программ и пакетов. Наверное, вы не захотите этого делать.
Чтобы посмотреть, что занимает место в папке /var выполните следующую команду:
Если лень разбираться, просто выполните следующие команды и папка /var сразу похудеет:
Чтобы посмотреть, что занимает место в папке /home выполните следующую команду:
С помощью курсорных клавиш выберите подпапки для изучения.
Там, скорее всего, директории, которые начинаются с точки, то есть «скрытые» папки. Можете их посмотреть командой
У вас, на самом деле, можно сказать что папка практически пустая, так как у меня один только кэш веб-браузера на несколько гигибайт (он тоже хранится в /home).
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 в последней команде, пусть сортирует по возрастанию, выбросит самое крупное в конец выхлопа.
Приветствую! Спасибо, за полезное дополнение!
Спасибо, ваша статья меня спасла. Бонусный пункт 10 - это бомба! 36Гб кэша докера и полгода мучений с удалением чего только можно…