Экспресс очистка сервера с целью освобождения дискового пространства

Andrey

пишу код за еду
Сообщения
3,386
Реакции
4,019
  • Команда форума
  • #1
Экспресс очистка сервера с целью освобождения дискового пространства

Опасно разводить беспорядок на сервере, потому будучи брошенным на произвол судьбы он рано или поздно съест всё свободное место на диске. Сервер с отсутствующим свободным местом может вас даже по ssh в гости не пустить. В этом я недавно убедился. А потому предлагаю краткий набор рекомендаций для тех, кто как и я, бросает серверы без присмотра на длительные сроки, а потом удивляется: «Это что ж с ним случилось?».
Во-первых, если ваш сервер боевой (т.е. там висят какие-то сайты или какая-то почта или сервер выполняет регулярно ещё какую-то полезную работу), то настройте ротацию логов (пример для логов веб-сервера, но таким же способом можно ротировать любые логи). Логи — верный способ убить пространство на сервере с маленьким диском.
Во-вторых, удалите кеш пакетов (особенно, если вы постоянно чего-то ставите, удаляете, снова устанавливаете — это уже скорее для тестового сервера проблема). Поможет простая команда:
C-подобный:
sudo apt-get clean
В-третьих, посмотрите как обстоят дела с локальной почтой:
C-подобный:
sudo ls -al /var/mail
Я, например, поймал несколько сотен лишних мегабайт в виде сообщений в ящик root`а о разных отработавших задачах планировщика. В зависимости от вашего почтового сервиса, почта может копиться и в домашних каталогах пользователей. Пошарьте и там.
И, наконец, в-четвёртых, пошарьте руками по серверу с целью выявления самых тяжелых директорий. Начните так:
C-подобный:
sudo du -sm /* | sort -nr
Получите отсортированный список, где в первом столбце будет размер в мегабайтах. Например, если окажется, что больше всех весит /var, то посмотрите, кто это там такой тяжелый:
C-подобный:
sudo du -sm /var/* | sort -nr
И так далее. Главное, лишнего не удаляйте. Вообще, рекомендую перед любой чисткой всё или хотя бы то, что собрались удалять — бэкапить.
И ещё маленький хинт для тех, кто пока только начинает покорение Ubuntu и Linux`а. Если вам надо быстро очистить файл, не удаляя его (а, например, этот приём годен для очистки любых логов), то выручит такая команда:
C-подобный:
sudo su
> /var/logauth.log
Или вот так:
C-подобный:
sudo echo -n > /var/logauth.log

Источник: aboutubuntu.ru
 

Yazik

Участник
Сообщения
30
Реакции
15
Могу дополнить:
C-подобный:
sudo apt autoclean
C-подобный:
sudo apt autoremove
Если в системе используется докер, то можно удалить старые образы и контейнеры:
C-подобный:
sudo docker system prune
Заранее убедитесь, что нужные контейнеры имеют статус UP, так как все остановленные контейнеры будут удалены.
Для того, чтобы удобно посмотреть, какой каталог сколько весит, в корне (cd /) можно выполнить:
C-подобный:
du -sh *
И дальше уже смотреть, есть ли смысл чистить логи и прочее.
 
  • Мне нравится
Реакции: NaN

marvalk

Участник
Сообщения
10
Реакции
2
Оставлю это тут для умелых рук:

Bash:
apt install logrotate

Теперь, даже если утилита не была установлена, вы ее установите. Все основные настройки программы находятся в файле /etc/logrotate.conf, дополнительные настройки, касаемо правил и других возможностей могут быть размещены в папке /etc/logroate.d/. Вы можете размещать все настройки logrotate прямо в основном конфигурационном файле, будет более правильно, если настройки для каждого отдельного сервиса будут находиться в отдельном файле, в папке /etc/logrotate.d/.

Чтобы конфигурационные файлы из этой папки загружались программой, необходимо добавить в основной конфигурационный файл такую строчку:
Bash:
nano /etc/logrotate.conf // открываем конфигурационный файл
include /etc/logrotate.d // строчка которую добавляем в конфиг

Сначала давайте рассмотрим основные директивы, которые мы будем применять во время настройки. Здесь директивы выглядят не совсем обычно, сама директива и определяет что и когда нужно делать, а уже если нужно, ей передаются дополнительные параметры. Чтобы указать как часто нужно выполнять проверку совпадению условий используются такие директивы:
XML:
hourly - каждый час;
daily - каждый день;
weekly - каждую неделю;
monthly - каждый месяц;
yearly - каждый год.

Основные директивы управления и обработки логов:
XML:
rotate - указывает сколько старых логов нужно хранить, в параметрах передается количество;
create - указывает, что необходимо создать пустой лог файл после перемещения старого;
dateext - добавляет дату ротации перед заголовком старого лога;
compress - указывает, что лог необходимо сжимать;
delaycompress - не сжимать последний и предпоследний журнал;
extension - сохранять оригинальный лог файл после ротации, если у него указанное расширение;
mail - отправлять Email после завершения ротации;
maxage - выполнять ротацию журналов, если они старше, чем указано;
missingok - не выдавать ошибки, если лог файла не существует;
olddir - перемещать старые логи в отдельную папку;
postrotate/endscript - выполнить произвольные команды после ротации;
start - номер, с которого будет начата нумерация старых логов;
size - размер лога, когда он будет перемещен;

Это те основные директивы, которые мы будем использовать. В главном конфигурационном файле находится глобальная конфигурация, директивы, которые будут распространяться на все логи если не было отменено их действие. Каждый лог, который подлежит ротации описывается таким образом:
C:
адрес_файла_лога {
директивы
}

ну и пример создадим файл rsyslog.conf в папке /etc/logrotate.d/ и поместим в него настройки для ротации этого лога:
C:
/var/log/messages {
daily
rotate 3
size 10M
compress
delaycompress
}

Эти настройки означают, что ротация журналов будет выполняться ежедневно, и мы будем хранить три последних журнала, более старые копии будут автоматически удаляться. Минимальный размер для ротации - 10 мегабайт, ротация не будет выполнена, если лог не занимает более 10 мегабайт. Будет использоваться сжатие, для всех журналов кроме последнего и предпоследнего. Точно по такому же принципу вы можете настроить ротацию логов для любого из журналов. Нужно создать такую секцию для каждого из логов, которыми вы хотите управлять.
Запускаем наш conf
Bash:
logrotate -d /etc/logrotate.d/rsyslog.conf  // это наш конфиг который мы создали изначально

Источник: losst.pro
 
Последнее редактирование:
Сверху Снизу