tgoop.com/srv_admin_linux/697
Create:
Last Update:
Last Update:
📌 Bash скрипт для поиска больших файлов и уведомление админа
1. Находит файлы больше заданного порога (в мегабайтах).
2. Генерирует отчёт и отправляет уведомление администратору (например, на почту или в лог).
• Скрипт: check_large_files.sh
#!/usr/bin/env bash
# --------------------------------------------
# Скрипт для поиска «тяжёлых» файлов и уведомления
# Автор @i_odmin_book
# --------------------------------------------
# Порог размера в мегабайтах (можно изменить по-своему)
THRESHOLD=100
# Директория для сканирования (можно указать любую)
DIR="/var/log"
# Файл для временного отчёта
REPORT="/tmp/large_files_$(date +%Y%m%d_%H%M%S).txt"
# Адрес почты администратора (пример)
ADMIN_EMAIL="[email protected]"
# Найти файлы больше порога и сохранить в отчёт
echo -e "🔎 Поиск файлов > ${THRESHOLD}M в директории: ${DIR}\n" > "$REPORT"
find "$DIR" -type f -size +"${THRESHOLD}"M -printf "%p (%s bytes)\n" >> "$REPORT"
# Если отчёт не пустой, отправляем уведомление
if [[ -s "$REPORT" ]]; then
echo -e "📬 Отправляем отчёт администратору: ${ADMIN_EMAIL}"
mail -s "Отчёт: большие файлы на $(hostname)" "$ADMIN_EMAIL" < "$REPORT"
else
echo "✅ Файлов больше ${THRESHOLD}M не найдено."
fi
# Дополнительно: можно логировать в файл
LOGFILE="/var/log/check_large_files.log"
echo "$(date +'%Y-%m-%d %H:%M:%S') - Проверка завершена. Отчёт: $REPORT" >> "$LOGFILE"
• Описание работы
1. THRESHOLD — порог размера в мегабайтах, выше которого файл считается «большим».
2. DIR — директория, где ищем большие файлы (по умолчанию
/var/log
, но можно изменить).3. Команда
find "$DIR" -type f -size +"${THRESHOLD}"M -printf "%p (%s bytes)\n"
:▪️
-type f
— только файлы.▪️
-size +<число>M
— размер больше заданного числа мегабайт.▪️
-printf "%p (%s bytes)\n"
— выводим полный путь и точный размер в байтах.4. Результат пишется в временный файл
${REPORT}
.5. Проверка
if [[ -s "$REPORT" ]]; then … fi
:▪️ Если отчёт непустой (
-s
), отправляем его на почту с помощью mail
(или любую другую команду уведомления).▪️ В противном случае выводим сообщение об отсутствии «тяжёлых» файлов.
6. Логируем факт запуска в
/var/log/check_large_files.log
.• Дополнительные улучшения
▪️ Регулярные выражения: можно искать по шаблону, например, только логи с ротацией:
find "$DIR" -regextype posix-extended -regex ".*/.*\.log\.[0-9]+" -size +"${THRESHOLD}"M -printf "%p (%s bytes)\n"
Здесь
-regex
найдёт файлы вроде syslog.1
, auth.log.2
, и игнорирует обычные *.log
.▪️ Cron-задача: чтобы проверять раз в день, добавьте в
crontab -e
:
0 8 * * * /usr/local/bin/check_large_files.sh
Это запустит скрипт каждый день в 8:00 утра и сразу уведомит вас, если что-то «не так».
BY Админские угодья
Share with your friend now:
tgoop.com/srv_admin_linux/697