Привіт! Я Kernelka — ваша молодша подружка по Linux. Тут розкажу, як виконати безпечну очистку місця на диску так, щоб нічого зайвого не зламати. Ми пройдемося перевіреними інструментами: ncdu, apt/deborphan, journalctl і systemd-tmpfiles. Поясню простою мовою, без магії, але з максимально корисними командами і порадами. 🧹

Покрокова інструкція: безпечна очистка

1) Знайдіть «важкі» папки з ncdu (аналіз використання диска)

Перш ніж щось видаляти, подивіться реальне використання диска. ncdu зручно показує, де з'їдається простір.

# Debian/Ubuntu
sudo apt update && sudo apt install -y ncdu

# Запуск аналізу кореневого розділу (залишатися в межах ФС)
sudo ncdu -x /

Стрілками ходите по директоріях, клавіша d видаляє вибране (будьте уважні). Так ви не вгадаєте, а чітко зрозумієте, що варто чистити, а що — ні. Це найнадійніший старт для очистка місця на диску.

2) Приберіть кеші пакетів apt

Кеш apt у /var/cache/apt/archives часто зростає непомітно. Перевірте і звільніть зайве за допомогою перевірених apt команди:

# Подивитися розмір кешу
sudo du -sh /var/cache/apt/archives

# Видалити усі завантажені .deb (безпечно)
sudo apt clean

# Прибрати застарілі пакети з кешу
sudo apt autoclean

# Перевірити, що буде видалено (симуляція)
sudo apt-get -s autoremove

# А тепер справжнє прибирання зайвих залежностей
sudo apt autoremove --purge -y

Autoremove видаляє пакети, що потрапили в систему як залежності, але більше не потрібні. Опція --purge вичищає і конфіги.

3) Знайдіть «сиріт» із deborphan (тільки для Debian/Ubuntu)

deborphan шукає бібліотеки, які залишилися без «господарів». Видаляйте обережно, але вигода буває суттєва.

sudo apt install -y deborphan
# Показати список сиріт
deborphan

# Обережне видалення: спочатку подивіться список!
orphans=$(deborphan)
if [ -n "$orphans" ]; then
  echo "Знайдені сироти:" $orphans
  sudo apt purge -y $orphans
else
  echo "Сиріт не знайдено."
fi

# Додатково (може дати ще кандидатів, перевіряйте):
# deborphan --guess-data --guess-dev

Якщо не впевнені у пакеті — краще залиште. Ваш спокій дорожчий за кілька мегабайт 🙂

4) Впорядкуйте log-файли Linux: журнали systemd (journalctl)

Журнали systemd-journald теж інколи розростаються. Спочатку подивіться, скільки вони займають:

journalctl --disk-usage

Стисніть їх до розумного розміру або за віком:

# Залишити загалом не більше 200 МБ журналів
sudo journalctl --vacuum-size=200M

# Або залишити лише журнали за останні 14 днів
sudo journalctl --vacuum-time=14d

Щоб обмеження діяли постійно, додайте конфіг:

sudo mkdir -p /etc/systemd/journald.conf.d
sudo tee /etc/systemd/journald.conf.d/limits.conf > /dev/null <<'EOF'
[Journal]
SystemMaxUse=500M
SystemMaxFileSize=100M
MaxRetentionSec=14day
EOF
sudo systemctl restart systemd-journald

5) Автоприбирання /tmp і /var/tmp через tmpfiles.d

systemd-tmpfiles уміє видаляти старі тимчасові файли. Додайте власні правила, якщо дефолтні політики занадто м’які.

sudo tee /etc/tmpfiles.d/cleanup-tmp.conf > /dev/null <<'EOF'
# Видаляти файли у /tmp старші ніж 10 днів, у /var/tmp — старші 30 днів
# Формат: d <шлях> <mode> <owner> <group> <age>
d /tmp     1777 root root 10d
d /var/tmp 1777 root root 30d
EOF

# Виконати прибирання прямо зараз
sudo systemd-tmpfiles --clean
# (за потреби) жорстке видалення того, що точно підлягає видаленню
sudo systemd-tmpfiles --remove

Це безпечніше за «ручний» rm -rf, адже враховується вік файлів і стандартні політики системи.

Альтернативні способи і корисні дрібниці

  • Швидка перевірка «де тісно»: df -h; по папках — sudo du -xh / | sort -h | tail.
  • Snap/Flatpak: старі ревізії теж займають місце.
    # Видалити застарілі ревізії snap (disabled)
    snap list --all | awk '/disabled/{print $1, $3}' | \
    while read name rev; do sudo snap remove "$name" --revision="$rev"; done
    
    # Для Flatpak: видалити невикористовувані рънтайми
    flatpak uninstall --unused -y
    
  • Логи ротації (rsyslog+logrotate): переконайтеся, що /etc/logrotate.d/ містить політики для великих сервісів.

GUI-спосіб (для тих, хто не хоче все в терміналі)

Можна візуально подивитися дерево файлів через «Аналізатор використання диска» (Baobab):

sudo apt install -y baobab
baobab

У KDE є аналог — Filelight. Вони зручні, щоб відразу побачити «важкі» каталоги і прискорити очистка місця на диску без ризиків.

FAQ

Що робити, якщо місця зовсім немає і apt не запускається?
Спробуйте миттєво звільнити трішки простору:

# Прибрати кеш .deb вручну (безпечно)
sudo rm -f /var/cache/apt/archives/*.deb

# Потім уже: sudo apt clean && sudo apt autoremove

ncdu показує «permission denied». Це нормально?
Так. Запускайте з sudo, щоб сканувати системні каталоги.

Чи безпечно видаляти все, що показує deborphan?
Зазвичай так, але перевіряйте список. Якщо сумніваєтеся — не видаляйте або пошукайте опис пакета.

journalctl каже, що журнали вже маленькі, але /var/log великий.
Можливо, інші сервіси пишуть у текстові логи. Перевірте /var/log через ncdu і налаштуйте logrotate. Це класичні log-файли Linux.

Що, якщо у мене не systemd?
Тоді частина кроків (journalctl, tmpfiles.d) неактуальні. Скористайтесь інструментами вашої системи (rsyslog+logrotate, tmpwatch тощо).

Як скасувати політики tmpfiles.d?
Видаліть файл з /etc/tmpfiles.d/ і запустіть sudo systemd-tmpfiles --clean знову.

Порада від Kernelka

Щоб рідше згадувати про прибирання, автоматизуйте. Невеликий скрипт + планувальник і справа зроблена.

sudo tee /usr/local/sbin/safe-clean.sh > /dev/null <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
# Кеш apt
apt autoclean -y || true
apt autoremove --purge -y || true
# Журнали systemd (залишаємо 200МБ або 14 днів)
journalctl --vacuum-size=200M || true
journalctl --vacuum-time=14d || true
# Тимчасові файли згідно з tmpfiles.d
systemd-tmpfiles --clean || true
EOF
sudo chmod +x /usr/local/sbin/safe-clean.sh

# Запуск щомісяця через systemd (тимчасовий юніт):
sudo systemd-run --on-calendar='monthly' --unit=kernelka-safe-clean \
  bash -lc '/usr/local/sbin/safe-clean.sh'

Можете налаштувати постійний systemd timer або cron — головне, щоб прибиралося регулярно і акуратно.

Підсумок

  • Спочатку аналізуємо дисковий простір через ncdu, а вже потім видаляємо.
  • Очищаємо кеші apt і непотрібні залежності без ризику для системи.
  • Обмежуємо і вакууємо журнали через journalctl, слідкуємо за log-файли Linux.
  • Вмикаємо автоприбирання /tmp і /var/tmp через tmpfiles.d.
  • За бажанням, чистимо старі ревізії snap/flatpak і налаштовуємо автоматизацію.

Все! З таким підходом очистка місця на диску стає передбачуваною, безпечною і майже непомітною. 🛡️