Введение / Зачем это нужно
Дисковое пространство на серверах и рабочих станциях Linux часто заканчивается из-за накопления временных файлов, кэша пакетов, старых журналов и ненужных пакетов. Этот гайд поможет вам быстро диагностировать, какие данные занимают больше всего места, и безопасно освободить gigabytes без потери важной информации. Вы научитесь использовать стандартные утилиты (df, du, find) и пакетные менеджеры для поддержания системы в чистоте.
Требования / Подготовка
Перед началом убедитесь, что:
- У вас есть доступ к терминалу Linux с правами sudo (администратора) для выполнения команд удаления и анализа системных каталогов.
- Установлены базовые утилиты:
df,du,find,sort,grep. Они есть в любом стандартном установленном дистрибутиве. - Для удобства анализа рекомендуется установить
ncdu(sudo apt install ncduилиsudo dnf install ncdu), но это необязательно. - Внимание: Не удаляйте файлы в системных каталогах (
/bin,/sbin,/usr,/etc), если не уверены в их назначении.
Пошаговая инструкция
Шаг 1: Проверка текущего использования диска
Сначала определите, какие разделы диска заполнены. Команда df (disk free) показывает использование каждого смонтированного раздела.
df -h
Ключи:
-h— human-readable, показывает размеры в MB, GB.- Вывод:
Filesystem Size Used Avail Use% Mounted on. Обращайте внимание наUse%— если значение близко к 100%, это критично.
Пример вывода:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 48G 2.0G 96% /
В этом случае корневой раздел / заполнен на 96%. Дальнейшие действия сосредоточим на нём.
Шаг 2: Поиск самых больших каталогов
Теперь нужно найти, какие каталоги занимают больше всего места. Начнём с корня /.
sudo du -h --max-depth=1 / | sort -rh | head -n 20
Пояснение:
sudo— требуется для доступа к некоторым системным каталогам.du -h— вычисляет использование диска каталогами.--max-depth=1— показывает только первый уровень вложенности (только подкаталоги корня).sort -rh— сортирует по убыванию размера (human-readable numeric).head -n 20— выводит топ-20 самых больших.
Если du работает медленно на большом разделе, используйте ncdu (интерактивный инструмент):
sudo ncdu /
Он позволяет перемещаться по каталогам и видеть размеры в реальном времени.
Шаг 3: Очистка кэша пакетного менеджера
Пакетные менеджеры хранят скачанные архивы пакетов в кэше. За годы они могут накопиться в несколько gigabytes.
Для Ubuntu/Debian (apt):
sudo apt clean
Удаляет все файлы из /var/cache/apt/archives. Безопасно, так как пакеты уже установлены.
Для Fedora/CentOS/RHEL (dnf/yum):
sudo dnf clean all
или для старых версий:
sudo yum clean all
Шаг 4: Удаление старых журналов и логов
Журналы в /var/log могут разрастаться, особенно если есть ошибки в системе. Очистите старые или сжатые логи.
Внимание: Не удаляйте файлы, которые активно используются (например, syslog, auth.log без сжатия). Лучше удалять только архивы (*.gz, *.old) и логи старше определённого срока.
# Удалить сжатые логи старше 30 дней
sudo find /var/log -type f -name "*.gz" -mtime +30 -delete
# Удалить обычные логи (не сжатые) старше 7 дней (осторожно!)
sudo find /var/log -type f -name "*.log" -mtime +7 -delete
Также проверьте размер конкретных логов:
sudo du -sh /var/log/*
Если видите огромные файлы (например, kern.log), возможно, стоит настроить logrotate (обычно он уже есть).
Шаг 5: Очистка временных файлов
Временные каталоги /tmp и /var/tmp часто содержат ненужные данные. Очистите их, но убедитесь, что нет важных файлов.
# Очистка /tmp
sudo rm -rf /tmp/*
# Очистка /var/tmp
sudo rm -rf /var/tmp/*
Также проверьте /var/cache — там могут быть кэши приложений:
sudo du -sh /var/cache/*
Если видите крупные каталоги (например, man, apt, yum), их можно очистить аналогично шагу 3.
Шаг 6: Удаление ненужных пакетов и зависимостей
Со временем в системе накапливаются пакеты, которые были установлены как зависимости, но больше не нужны. Удалите их.
Для Ubuntu/Debian:
# Показать пакеты, которые можно удалить (зависимости)
sudo apt autoremove --purge
# Также проверьте список установленных пакетов и удалите ненужные вручную:
apt list --installed | less
# Затем: sudo apt remove package-name
Для Fedora/CentOS:
sudo dnf autoremove
Важно: Не удаляйте пакеты вручную, если не уверены, что они не нужны системе. Команда autoremove безопасна.
Проверка результата
После выполнения всех шагов снова проверьте использование диска:
df -h
Сравните значения Used и Avail с первоначальными. Вы должны увидеть рост свободного места (Avail). Также можно повторить анализ каталогов (шаг 2) для подтверждения.
Возможные проблемы
- Ошибка доступа (Permission denied)
- Решение: используйте
sudoдля команд, требующих прав администратора. Не запускайтеrm -rfбез понимания, что удаляете.
- Решение: используйте
- Место не освобождается после удаления файлов
- Причина: процесс всё ещё держит открытый дескриптор удалённого файла.
- Решение: найдите процесс:
sudo lsof | grep '(deleted)'. Затем перезапустите соответствующий процесс (например, службу) или завершите его.
- Система стала работать нестабильно после удаления пакетов
- Причина: случайно удалён критичный пакет.
- Решение: восстановите пакет через
sudo apt install package-name(или аналог). Имея резервную копию списка пакетов, можно восстановить систему.
- Критически важные логи удалены
- Решение: если удалили активный лог, перезапустите службу, которая его пишет (например,
sudo systemctl restart rsyslog), чтобы создать новый файл. Старые данные могут быть потеряны.
- Решение: если удалили активный лог, перезапустите службу, которая его пишет (например,
- Недостаточно места даже после очистки
- Возможно, есть большие файлы, которые не были учтены (например, дампы баз данных, виртуальные машины). Проверьте домашние каталоги пользователей и каталоги приложений (
/opt,/var/lib/dockerесли используется Docker).
- Возможно, есть большие файлы, которые не были учтены (например, дампы баз данных, виртуальные машины). Проверьте домашние каталоги пользователей и каталоги приложений (
Рекомендация: Регулярно выполняйте очистку кэша пакетов и журналов (раз в месяц) для поддержания здоровья системы.