Linux

Очистка диска в Linux: 5 проверенных способов освободить место

В этом гайде вы узнаете, как безопасно освободить место на диске в Linux, используя встроенные утилиты и ручные методы. После выполнения вы удалите до 5-10 ГБ временных файлов, кэшей и старых пакетов.

Обновлено 15 февраля 2026 г.
10-15 мин
Низкая
FixPedia Team
Применимо к:Ubuntu 20.04+Debian 11+CentOS 8+Fedora 35+Архи Linux

Введение / Зачем это нужно

Со временем на диске Linux накапливаются временные файлы, старые пакеты, кэши и логи, которые могут занимать гигабайты места. Это приводит к предупреждениям о нехватке места, замедлению работы системы и проблемам с обновлениями. Данный гайд поможет вам безопасно и эффективно освободить место на диске, используя как встроенные утилиты, так и ручные методы. После выполнения вы высвободите 5-10 ГБ (а иногда и больше) без удаления пользовательских данных.

Требования / Подготовка

  • Доступ к терминалу Linux (Ubuntu, Debian, CentOS, Fedora, Arch и т.д.).
  • Права суперпользователя (sudo) для очистки системных каталогов.
  • Установленная утилита ncdu (рекомендуется, но не обязательна): sudo apt install ncdu (Debian/Ubuntu) или sudo dnf install ncdu (RHEL/Fedora).
  • Внимание: Перед удалением любого файла убедитесь, что он не используется активными процессами. Рекомендуется сделать резервную копию важных данных.

Пошаговая инструкция

Шаг 1: Анализ использования диска

Прежде чем удалять, нужно понять, что занимает место. Не гадайте — используйте инструменты для анализа.

  1. Быстрый обзор корневого раздела:
    df -h
    

    Покажет использование всех смонтированных разделов. Обратите внимание на %Use для / (корня).
  2. Глубокий анализ с помощью ncdu (рекомендуется):
    sudo ncdu /
    

    Это интерактивная утилита, которая медленно, но очень наглядно покажет, какие каталоги самые большие. Навигация: стрелки вверх/вниз, Enter — войти в каталог, d — удалить (будьте осторожны!). Для выхода — q.
  3. Альтернатива без установки ncdu:
    sudo du -sh /* 2>/dev/null | sort -rh | head -20
    

    Эта команда покажет 20 самых больших каталогов в корне (/). 2>/dev/null скрывает ошибки доступа.

💡 Совет: Чаще всего основные "пожиратели" места — это /var (логи, кэши пакетов), /usr (установленные программы), /home (пользовательские файлы) и /opt (стороннее ПО).

Шаг 2: Очистка кэша пакетного менеджера

Пакетные менеджеры хранят скачанные архивы пакетов, которые после установки можно удалить.

  • Для Debian/Ubuntu (APT):
    # Очистка локального репозитория скачанных файлов пакетов (кэш)
    sudo apt clean
    
    # Удаление пакетов, установленных как зависимости, но больше не нужных
    sudo apt autoremove --purge
    
    # (Опционально) Очистка старых версий установленных пакетов (опасно! только если уверены)
    # sudo apt autoremove --purge --auto-remove
    

    --purge удаляет также конфигурационные файлы. Будьте осторожны: это может сбросить настройки ПО.
  • Для RHEL/CentOS/Fedora (DNF/YUM):
    # Удаление неиспользуемых зависимостей
    sudo dnf autoremove
    
    # Очистка кэша всех пакетов (скачанных rpm)
    sudo dnf clean all
    
  • Для Arch Linux (Pacman):
    # Удаление неиспользуемых пакетов (зависимостей, которые ничто не требует)
    sudo pacman -Rns $(pacman -Qdtq)
    
    # Очистка кэша пакетов (оставляет только текущие версии)
    sudo paccache -r
    

Шаг 3: Удаление старых журналов (logs)

Журналы в /var/log могут разрастаться, особенно если есть проблемы в системе.

  1. Очистка systemd-журнала (если используете systemd):
    # Показать текущее использование journal
    journalctl --disk-usage
    
    # Очистить журналы старше 7 дней
    sudo journalctl --vacuum-time=7d
    
    # Или очистить, оставив не более 500 МБ
    # sudo journalctl --vacuum-size=500M
    
  2. Очистка традиционных логов в /var/log:
    # Перейти в каталог логов
    cd /var/log
    
    # Показать большие файлы (больше 100 МБ)
    sudo find . -type f -size +100M -exec ls -lh {} \;
    
    # Удалить старые сжатые логи (например, .gz файлы старше 30 дней)
    sudo find /var/log -name "*.gz" -type f -mtime +30 -delete
    
    # Удалить старые неупакованные логи (осторожно! лучше сначала посмотреть)
    # sudo find /var/log -type f -name "*.log" -mtime +30 -delete
    

    Не удаляйте файлы syslog, messages, auth.log "наугад" — они могут понадобиться для диагностики. Лучше удалять только явно старые архивы (.gz, .old, .1, .2).

Шаг 4: Очистка временных файлов

Временные каталоги /tmp и ~/.cache часто содержат "хвосты" от установок и обновлений.

# Очистка системного /tmp (требует sudo)
sudo rm -rf /tmp/*

# Очистка пользовательского кэша (например, браузеров, Flatpak, Snap)
rm -rf ~/.cache/*

# Очистка /var/tmp (временные файлы, сохраняющиеся между перезагрузками)
sudo rm -rf /var/tmp/*

⚠️ Важно: Убедитесь, что нет активных процессов, которые пишут в эти каталоги. Обычно это безопасно, но в редких случаях может привести к сбоям в работе приложений. Если сомневаетесь, перезагрузите систему перед очисткой /tmp.

Шаг 5: Поиск и удаление больших неиспользуемых файлов

Найдите личные или системные файлы, которые вы давно не использовали.

  1. Поиск больших файлов в домашней директории:
    # Найти файлы больше 500 МБ в /home
    find /home -type f -size +500M -exec ls -lh {} \;
    
  2. Поиск неиспользуемых файлов (не accessed более 90 дней):
    # Внимание! Эта команда может долго работать
    sudo find / -type f -size +100M -atime +90 -exec ls -lh {} \; 2>/dev/null
    

    Параметр -atime +90 ищет файлы, к которым не обращались последние 90 дней. Просмотрите список и вручную удалите ненужное (например, старые ISO-образы, логи, архивы).
  3. Поиск и удаление старых ядер (только для Debian/Ubuntu!):
    # Показать установленные ядра
    dpkg --list | grep linux-image
    
    # Удалить ВСЕ старые ядра, оставив последнее (очень осторожно!)
    # sudo apt autoremove --purge
    

    Не удаляйте текущее ядро вручную! Команда autoremove обычно справляется безопасно, но проверьте список пакетов перед подтверждением.

Проверка результата

После выполнения всех шагов проверьте, сколько места освободилось:

df -h /

Или снова запустите ncdu / для визуального сравнения. Вы должны увидеть увеличение свободного места в 1-10 ГБ (зависит от initial состояния системы).

Возможные проблемы

  • "Permission denied" при удалении файлов: Используйте sudo для системных каталогов. Убедитесь, что вы не пытаетесь удалить файлы, принадлежащие другим пользователям без прав.
  • Система стала работать нестабильно после удаления логов: Обычно это временно. Логи создаются заново. Если проблема persists, проверьте, не удалили ли вы файл, который ещё используется процессом (например, syslog). Восстановите из резервной копии или перезапустите демон (например, sudo systemctl restart rsyslog).
  • Недостаточно места для выполнения команд: Если диск заполнен на 100%, некоторые команды (например, apt) могут не работать из-за невозможности создать временные файлы. В этом случае:
    1. Вручную удалите самые большие файлы, найденные через ncdu или find.
    2. Очистите кэш браузера или пользовательские кэши в /home.
    3. Перезагрузите систему — это автоматически очистит /tmp.
  • Случайно удалили нужный файл: В Linux нет корзины в командной строке. Восстановите из резервной копии или, если файл был открыт процессом, используйте lsof | grep (имя_файла), чтобы найти PID и скопировать файл из /proc/(PID)/fd/.

Автоматизация очистки

Для регулярной поддержания чистоты диска можно настроить cron-задачи.

  1. Еженедельная очистка кэша APT и старых пакетов (Debian/Ubuntu):
    sudo crontab -e
    

    Добавьте строку (выполняться в воскресенье в 3:00):
    0 3 * * 0 apt clean && apt autoremove -y
    
  2. Ежедневная очистка systemd-журнала (оставлять 7 дней):
    0 4 * * * journalctl --vacuum-time=7d
    
  3. Ежемесячная очистка /tmp (перезагрузка обычно справляется, но для уверенности):
    0 2 1 * * rm -rf /tmp/*
    

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

Часто задаваемые вопросы

Безопасно ли удалять файлы из /tmp?
Можно ли удалить старые ядра Linux автоматически?
Что такое `journalctl --vacuum-time` и как его использовать?
Потеряю ли я данные при очистке кэша браузера?

Полезное

Анализ использования диска
Очистка кэша пакетного менеджера
Удаление старых журналов (logs)
Очистка временных файлов
Поиск и удаление больших неиспользуемых файлов