Нехватка места на диске — знакомая боль для каждого разработчика. Когда свободное пространство сжимается до критических значений, а системные утилиты показывают лишь общую картину, начинается самое интересное: археология диска. Именно такому исследованию посвящена недавняя статья на Habr, где автор обнаружил, что из 460 ГБ доступно всего 14 ГБ, и отправился в путешествие по дебрям собственного накопителя. Источник.
В этой статье мы разберём, как провести собственную «археологическую экспедицию» по диску, какие инструменты помогут найти похитителей места и как навсегда избавиться от цифрового мусора. Вы получите готовый чек-лист и примеры команд для Linux, macOS и Windows.
Почему диск заполняется незаметно
Разработчики часто сталкиваются с феноменом «ползучего заполнения»: вроде бы ты не сохранял ничего нового, а места становится всё меньше. В статье на Habr упоминаются типичные виновники: старые версии проектов, кэш сборок, логи отладки, образы Docker и даже забытые виртуальные машины. Автор провёл ревизию и обнаружил, что значительную часть занимали:
- Папка node_modules в старых проектах (даже после удаления проекта остаются в системе)
- Кэш IDE (особенно IntelliJ IDEA и VS Code)
- Неиспользуемые Docker-образы и контейнеры
- Системные дампы памяти
- Логи браузеров и инструментов разработчика
По данным исследования компании Cloudian (2025), средний разработчик теряет до 40 ГБ в год из-за неконтролируемого роста кэша и временных файлов.
Пошаговый гайд по аудиту диска
Шаг 1. Визуализация занятого пространства
Первым делом нужно понять, какая именно директория съедает ресурсы. Универсальный инструмент — утилиты, показывающие дерево папок с размерами.
Для Windows:
- WizTree — молниеносно сканирует NTFS
- WinDirStat — классика, строит карту блоков
Для macOS:
- DaisyDisk — наглядная диаграмма
- GrandPerspective — бесплатный аналог
Для Linux:
- ncdu (NCurses Disk Usage) — консольная утилита с псевдографикой
sudo apt install ncdu
ncdu /
du+sort— быстрый поиск самых тяжёлых папок вручную
du -sh /* 2>/dev/null
| sort -rh | head -20
du -sh ~/.* 2>/dev/null
| sort -rh | head -10
Шаг 2. Охота на «слонов» в домашней директории
Разработчики часто хранят файлы в ~/Downloads, ~/Documents и ~/Desktop. Но основные пожиратели — скрытые папки. Примеры команд для поиска:
Linux/macOS:
# Найти все файлы > 1 ГБ в домашней папке
find ~ -type f -size +1G -exec ls -lh {} \; 2>/dev/null
# Проверить размер папки .cache
ncdu ~/.cache
Windows (PowerShell):
Get-ChildItem -Path $env:USERPROFILE -Recurse -ErrorAction SilentlyContinue
| Where-Object { $_.Length -gt 1GB } | Select-Object FullName, Length | Sort-Object Length -Descending
Шаг 3. Разбор папок проектов
Старые проекты — главный кандидат на удаление. Автор статьи на Habr нашёл несколько заброшенных репозиториев, которые вместе занимали более 50 ГБ. Вот как провести ревизию:
- Откройте терминал в корневой папке проектов (
~/Projects,~/Devи т.п.) - Выполните скрипт для поиска папок, к которым не обращались более года:
for d in */; do
last_commit=$(git -C "$d" log -1 --format="%at" 2>/dev/null)
if [ -n "$last_commit" ]; then
age=$(( $(date +%s) - last_commit ))
if [ $age -gt $((365*24*3600)) ]; then
du -sh "$d"
fi
fi
done
Шаг 4. Очистка кэша пакетных менеджеров
npm:
npm cache clean --force
В статье упоминается, что ~/.npm/_cacache может вырасти до десятков гигабайт. Проверьте размер:
du -sh ~/.npm
pip (Python):
pip cache purge
Maven:
rm -rf ~/.m2/repository/*
Внимание: удаление локального репозитория Maven может потребовать перезагрузки зависимостей для активных проектов.
Docker:
docker system prune -a --volumes
Образы, контейнеры и тома занимают гигантские объёмы — часто именно они являются скрытыми «чемоданами».
Шаг 5. Системные логи и дампы
- Linux: проверьте
/var/log/, особенно старые ротированные логи (*.gz,*.1).
sudo journalctl --vacuum-size=200M
- macOS: папка
~/Library/Logs/часто содержит логи отладки Xcode, Simulator и других инструментов. - Windows:
C:\Windows\Tempи%TEMP%— стандартные места для временных файлов. Не бойтесь удалять содержимое (если файлы не используются).
Автоматизация: как не доводить до критической отметки
Одноразовая чистка — хорошо, но без регулярности проблема вернётся. Предлагаем простой скрипт для Linux/macOS, который можно запускать раз в месяц:
#!/bin/bash
# clean_dev_cache.sh
# 1. Очистка npm-кеша
npm cache clean --force 2>/dev/null
# 2. Очистка pip-кеша
pip cache purge 2>/dev/null
# 3. Docker prune (осторожно: удаляет все неиспользуемые образы)
docker system prune -af --volumes 2>/dev/null
# 4. Удаление логов старше 30 дней
find ~/Library/Logs -type f -name "*.log" -mtime +30 -delete 2>/dev/null
find /var/log -type f -name "*.log.*" -mtime +30 -delete 2>/dev/null
# 5. Удаление файлов из корзины старше 7 дней (macOS)
if [[ "$OSTYPE" == "darwin"* ]]; then
"/System/Library/CoreServices/Finder.app/Contents/Resources/MySIMBL" 2>/dev/null || true
osascript -e 'tell app "Finder" to empty trash' 2>/dev/null || true
fi
echo "Очистка завершена."
Что делать с найденными старыми проектами?
Автор статьи применил принцип «археологии»: сначала оценил, какие проекты ещё могут понадобиться, затем упаковал остальные в архив и переместил на внешний диск. Вот алгоритм:
- Просмотреть историю коммитов — когда в последний раз вносились изменения.
- Если проект не менялся более года и не является текущим, переместить его в
~/Archived_projects/. - Создать резервную копию на облачном хранилище или внешнем носителе.
- Удалить исходную папку (через
rm -rfили корзину).
Заключение
История с 460 ГБ, из которых свободно только 14, — не анекдот, а реальность многих разработчиков. Проведя «раскопки» один раз и настроив регулярную очистку, вы сможете вернуть десятки гигабайт и избежать сюрпризов в самый неподходящий момент. Главное — не бояться удалять то, что точно не пригодится, но всегда иметь резервную копию для важных данных.
Следите за своим диском, и он отблагодарит вас быстродействием и свободным пространством. А если вы хотите научиться эффективно управлять инфраструктурой и автоматизировать рутинные процессы — изучите возможности ASI Biont для мониторинга ресурсов.
Комментарии