Ответ
В DevOps-практиках освобождение места без простоя сервисов — частая задача. Вот конкретные действия, которые я выполнял на продакшен-серверах:
1. Очистка логов и временных файлов:
- Ротация и очистка логов: Используем
logrotateдля автоматического управления. Для ручной очистки старых логов:# Просмотреть кандидатов на удаление find /var/log -type f -name "*.log*" -mtime +7 -ls # Очистить содержимое файла без его удаления (если процесс держит дескриптор) truncate -s 0 /var/log/some-app.log - Очистка временных каталогов:
find /tmp -type f -atime +1 -delete
2. Управление пакетами и кэшами:
- Для APT:
apt-get clean - Для YUM/DNF:
yum clean allилиdnf clean all - Очистка кэша Docker:
docker system prune -a --volumes -f(с осторожностью, удалит все неиспользуемые данные).
3. Поиск крупных файлов и директорий:
# Найти топ-10 самых больших директорий
du -ah / | sort -rh | head -n 10
# Найти файлы больше 100МБ
find / -type f -size +100M -exec ls -lh {} ;
4. Работа с бэкапами и артефактами:
- Удаление устаревших бэкапов по политике хранения (например, старше 30 дней):
find /backups -type f -name "*.tar.gz" -mtime +30 -delete - Очистка старых артефактов сборки в CI/CD (например, в
~/.jenkins/workspaceили/var/lib/jenkins).
Ключевой принцип: Всегда сначала выполняем команды с -ls, -print или -exec echo {} ;, чтобы проверить, что будет удалено. Для критичных логов используем truncate, а не rm, если процесс продолжает писать в файл.