Bash - работа с дисками и другими накопителями
-
Содержание
-
Увеличение свободного места системного диска Linux
Безопасно удаляем:
- Большие активные файлы логов в
/var/log/(например,syslog,kern.log,daemon.log, которые Logrotate еще не успел ротировать). - Ротированные сжатые файлы (
*.gz,*.1, и т.д.) в/var/log/, которые также не попали в список подкаталогов.
️ План очисткиВам нужно выполнить обе процедуры, чтобы получить максимальный эффект, начиная с наиболее безопасных:
1. Очистка журналов Systemd (Journald)
Это самая большая видимая статья (201M, которая должна была быть больше 3ГБ, но, возможно, вы уже частично их чистили). Выполните ограничение по времени и размеру для безопасности:
-
Очистка записей старше 7 дней:
sudo journalctl --vacuum-time=7d -
Ограничение максимального размера до 500M (если проблема повторяется):
sudo journalctl --vacuum-size=500MЭтот шаг гарантирует, что Journald не будет снова занимать гигабайты.
2. Очистка старых ротированных логов (Logrotate files)
# Найти и удалить все сжатые файлы логов (.gz) sudo find /var/log/ -name "*.gz" -delete # Найти и удалить все старые файлы логов, созданные ротацией (например, .1, .2, .old) sudo find /var/log/ -name "*.[0-9]" -delete sudo find /var/log/ -name "*.old" -delete3. Очистка активных больших файлов
Если после выполнения шагов 1 и 2 все еще остается большой объем (более 100 МБ) в
/var/log, значит, у вас есть один или несколько очень больших, активных файлов логов (например,syslog).ВНИМАНИЕ: Мы очищаем (truncate), а не удаляем эти файлы, чтобы не нарушить работу служб:
# Очистка основного системного лога (если он большой) sudo truncate -s 0 /var/log/syslog # Очистка лога ядра (если он большой) sudo truncate -s 0 /var/log/kern.log # Перезапуск службы логов для гарантии sudo systemctl restart rsyslogПосле выполнения Шагов 1 и 2, запустите
sudo du -sh /var/logеще раз. Общий размер должен значительно уменьшиться.Проверьте, какие именно большие файлы находятся в
/var/log/(а не в подкаталогах), чтобы точно знать, что вы очищаетеsudo ls -lh /var/log/
️ Почему эти команды безопасны-
Целевое удаление: Команды нацелены исключительно на файлы, которые уже прошли ротацию (
Logrotate) и являются архивами или старыми копиями активных журналов.- Файлы с расширением
.gz— это сжатые, очень старые копии логов. - Файлы с расширением
.[0-9](например,.1,.2,.3) — это старые копии логов, которые были заменены более новыми. - Файлы с расширением
.old— это также старые, переименованные копии.
- Файлы с расширением
-
Не затрагивают активные службы:
- Эти команды не удаляют активные, текущие файлы журналов (например,
/var/log/syslog,/var/log/kern.log,/var/log/nginx/access.log). - Они не затрагивают базу данных Systemd Journal (
/var/log/journal/), которую мы очищали отдельной командой ранее. - Они не нарушают работу служб, которые прямо сейчас пишут в активные логи.
- Эти команды не удаляют активные, текущие файлы журналов (например,
-
Использование
findи-delete: Командаfindс опцией-delete— это безопасный и эффективный способ массового удаления файлов, найденных по конкретному шаблону.
Вывод: Смело запускайте эти три команды. Они предназначены именно для того, чтобы освободить место, занятое архивами и старыми копиями системных и прикладных журналов, не влияя на стабильность работы.
После их выполнения вы должны увидеть значительное уменьшение размера каталога
/var/log.
Если у вас переполнен системный раздел, то есть несколько категорий файлов, которые можно безболезненно удалить для освобождения места. Поскольку раздел
/homeу вас на другом диске, мы сосредоточимся на очистке системных каталогов.Вот список наиболее безопасных действий, которые стоит выполнить в первую очередь:
️ Очистка пакетов APTСистема управления пакетами APT со временем накапливает кэши и ненужные зависимости.
-
Удаление неиспользуемых зависимостей:
Эта команда удаляет пакеты, которые были установлены автоматически как зависимости для других программ, но теперь эти программы удалены, и сами зависимости больше не нужны.sudo apt autoremove -
Очистка кэша загруженных пакетов:
APT сохраняет копии загруженных установочных файлов (.deb) в каталоге/var/cache/apt/archives. Их можно удалить.- Очистка кэша только для устаревших пакетов:
sudo apt autoclean - Полная очистка кэша APT (освободит больше всего места):
sudo apt clean
- Очистка кэша только для устаревших пакетов:
🧹 Удаление старых ядер Linux
При обновлении системы могут устанавливаться новые версии ядра Linux, а старые остаются для возможности отката. Если система работает стабильно, можно удалить старые ядра, оставив только текущее и, возможно, одно предыдущее на всякий случай. Старые ядра и связанные с ними заголовки (
linux-image-*иlinux-headers-*) могут занимать значительное место, особенно в разделе/boot.Для автоматического и безопасного удаления старых неиспользуемых ядер можно воспользоваться командой
autoremove(если ядра были установлены как зависимости):sudo apt autoremove --purgeФлаг
--purgeгарантирует, что будут удалены и конфигурационные файлы.
Очистка журналов и временных файлов- Очистка системного журнала (Journald):
Журналы могут накапливаться и занимать много места в каталоге/var/log. Вы можете ограничить их размер или удалить старые записи.- Удаление записей старше, например, 7 дней:
sudo journalctl --vacuum-time=7d - Ограничение максимального размера журнала (например, до 100M):
sudo journalctl --vacuum-size=100M
- Удаление записей старше, например, 7 дней:
- Очистка временных файлов:
Многие временные файлы хранятся в/tmp, но обычно они автоматически очищаются при перезагрузке. Если вы не перезагружались долгое время, вы можете очистить их вручную. Будьте осторожны с ручной очисткой, лучше полагаться на автоматическую:sudo rm -rf /tmp/*
Удаление "осиротевших" конфигурационных файловПосле полного удаления пакетов иногда остаются их конфигурационные файлы (статус
rc- removed, config files). Эти файлы обычно очень маленькие, но их можно удалить, если вы уверены, что не будете снова устанавливать эти программы.Для просмотра и удаления:
-
Показать пакеты с "осиротевшими" конфигами:
dpkg -l | grep '^rc' -
Полное удаление (purge) этих пакетов:
dpkg -l | awk '/^rc/ {print $2}' | sudo xargs dpkg --purgeЭта команда извлекает имена всех пакетов со статусом
rcи передает их для полного удаления.
️ Использование сторонних утилит (опционально)Существуют графические утилиты, такие как Ubuntu Cleaner или BleachBit, которые предоставляют удобный интерфейс для выполнения многих из этих задач, включая очистку кэша браузеров и миниатюр. Если вам некомфортно работать в терминале, можете рассмотреть их установку, но будьте внимательны при выборе опций очистки.
Главное правило: всегда выполняйте команды очистки с
sudoи точно знайте, что вы удаляете, чтобы не повредить работающую систему. - Большие активные файлы логов в
-
Просмотр занятого места на диске
Вот актуальный на 2025 год набор команд для анализа занятого места в Linux — от самых быстрых и красивых до максимально точных.
Топ-8 рабочих команд (копируй-вставляй)
# 1. Самая красивая и удобная (2025 стандарт) sudo ncdu / # интерактивный ncdu (лучше всего) # 2. Классика с сортировкой по размеру (мой ежедневный выбор) sudo du -h --max-depth=1 / 2>/dev/null | sort -hr # 3. Топ-15 самых тяжёлых каталогов в системе sudo du -h --max-depth=3 / 2>/dev/null | sort -hr | head -15 # 4. Только реальные каталоги (без виртуальных /proc, /sys, /dev) sudo du -h --max-depth=1 --exclude={/dev,/proc,/sys,/tmp,/run} / | sort -hr # 5. Быстрый анализ корня + сортировка sudo du -sh /* 2>/dev/null | sort -hr # 6. Что именно жрёт место в /home (включая скрытые папки) du -sh ~/.??* ~/* | sort -hr | head -20 # 7. Самые большие файлы в системе (топ-50) sudo find / -type f -printf '%s %p\n' 2>/dev/null | sort -nr | head -50 | numfmt --to=iec-i --suffix=B # 8. Графический анализ (GUI, но из терминала) sudo baobab / # или gnome-disks → правый клик → AnalyzeУстановка лучших утилит (одной строкой)
# Debian / Ubuntu / Mint / Pop!_OS sudo apt install ncdu tree baobab numfmt # Fedora / Alma / Rocky sudo dnf install ncdu tree baobab numfmt # Arch / Manjaro sudo pacman -S ncdu tree baobab numfmtМои личные алиасы (добавь в ~/.bashrc или ~/.zshrc)
alias big="sudo du -h --max-depth=1 / 2>/dev/null | sort -hr" alias big2="sudo du -h --max-depth=2 / 2>/dev/null | sort -hr | head -30" alias bigfiles="sudo find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k5 -hr" alias cleanme="sudo du -sh ~/.cache/* /var/cache/* /tmp/* 2>/dev/null | sort -hr"Однострочники для самых частых задач
# Что жрёт место в /var sudo du -h --max-depth=2 /var | sort -hr | head -20 # Docker — сколько весит? sudo du -h /var/lib/docker | sort -hr | head -10 # Snap-пакеты (часто жрут 10–30 ГБ) sudo du -h /var/lib/snapd/snaps | sort -hr # Самые жирные папки пользователя du -sh ~/* ~/.local/* ~/.cache/* 2>/dev/null | sort -hr | head -15Самая лучшая команда на все случаи жизни (2025)
sudo ncdu --exclude-caches --exclude-kernels /- Интерактивная
- Показывает в ГБ/МБ
- Можно удалять прямо из интерфейса
- Исключает мусор
- Работает в 100 раз быстрее, чем du
Итог: запомни всего три команды
sudo ncdu / # лучшее, что есть sudo du -h --max-depth=1 / | sort -hr # классика sudo du -sh /* | sort -hr # когда лень писать многоБольше ничего придумывать не надо.
С ncdu ты найдёшь любой «пожиратель» места за 10 секунд. -
Узнать общий размер текущего каталога
Вот актуальный на 2025 год набор команд для быстрого и точного определения размера текущего (или любого) каталога. Всё работает везде: Ubuntu, Debian, Fedora, Arch, Alpine и т.д.
Топ-7 команд (копируй-вставляй)
# 1. Самая популярная и правильная (2025 стандарт) du -sh . # размер текущей папки # 2. Ещё быстрее и красивее (мой ежедневный выбор) du -sh --apparent-size . # реальный размер файлов (а не блоков на диске) # 3. Размер без учёта скрытых папок (полезно в /home) du -sh -- * # только видимые папки и файлы # 4. Размер с учётом только реальных файлов (игнорирует sparse-файлы, Docker-образы и т.п.) du -sh --apparent-size --exclude="*.img" --exclude="*.qcow2" . # 5. Самый быстрый способ (не сканирует содержимое, только метаданные) dust -r . # после установки: cargo install dust или sudo apt install dust # 6. Интерактивный и самый красивый (рекомендую всем) ncdu . # покажет всё дерево + можно удалять прямо из интерфейса # 7. Размер в байтах (удобно для скриптов) du -sb . # точное количество байтПолезные вариации
# Размер нескольких папок сразу du -sh ~/{Downloads,Documents,Desktop,.cache,.local} 2>/dev/null | sort -hr # Размер только папок первого уровня (с сортировкой) du -sh ./* | sort -hr # Размер с исключениями (например, без node_modules и .git) du -sh --exclude="./node_modules" --exclude="./.git" . # Самые жирные папки внутри текущей (топ-20) du -h --max-depth=2 . 2>/dev/null | sort -hr | head -20Установка самых удобных утилит (2025)
# Ubuntu/Debian/Mint sudo apt install ncdu dust # dust — это как du, но в 10 раз быстрее и красивее # Fedora sudo dnf install ncdu dust # Arch/Manjaro sudo pacman -S ncdu dustМои алиасы (добавь в ~/.bashrc или ~/.zshrc)
alias size="du -sh ." alias sizeof="du -sh" # sizeof Downloads alias big="du -h --max-depth=1 . | sort -hr" alias fat="dust -r" alias clean="ncdu ~"Итог: запомни всего три команды на всю жизнь
du -sh . # классика, всегда работает dust . # самый быстрый и красивый (2025) ncdu . # когда нужно покопаться и почиститьБольше ничего придумывать не надо.
dustиncdu— это то, чем пользуются все продвинутые линуксоиды в 2025 году.