TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #392 1.27K
Контроль размера логов и архивация быстро растущих файлов

Неловко будет если кто-то включил дебаг, забыл про него и оставил так, даже на выходные. Покажу скрипт который будет: мониторить размер файлов в директории логов, сравнивать с предыдущим значением, при подозрительном росте - архивировать лог и обнулять его, сохраняя копию.

🛠 Скрипт


#!/usr/bin/env bash
set -euo pipefail

LOG_DIR="/var/log/myapp"
STATE_FILE="/tmp/log_sizes.db"
THRESHOLD_MB=50 # если лог вырос более чем на 50 MB - архивируем
ARCHIVE_DIR="/var/log/archive"

mkdir -p "$ARCHIVE_DIR"
touch "$STATE_FILE"

# читаем прошлые размеры
declare -A old_sizes
while IFS=":" read -r file size; do
old_sizes["$file"]="$size"
done < "$STATE_FILE"

> "$STATE_FILE" # перезапишем свежим состоянием

for log in "$LOG_DIR"/*.log; do
[[ -f "$log" ]] || continue
size=$(stat -c %s "$log")
echo "$log:$size" >> "$STATE_FILE"

old_size=${old_sizes["$log"]:-0}
diff=$(( (size - old_size) / 1024 / 1024 ))

if (( diff > THRESHOLD_MB )); then
ts=$(date +%F_%H-%M-%S)
archive="$ARCHIVE_DIR/$(basename "$log").$ts.gz"

echo "$log вырос на ${diff}MB - архивируем в $archive"
cp "$log" "$archive"
gzip "$archive"
: > "$log" # обнуляем лог
fi
done


▪️ Пояснение:

хранит состояние предыдущих размеров в log_sizes.db,
если файл вырос больше порога, делает копию с timestamp, архивирует и очищает,
работает для всех *.log в выбранной директории.

▪️ Применение. Добавь в cron для регулярной проверки:


*/10 * * * * /usr/local/bin/log_watch.sh


BashTex 📱 #bash
  • 👍 4
More from @bash_tex
  1. Oct 9, 2026BashTex 📱 #мем
  2. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  3. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  4. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  5. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
  6. Oct 2, 2026madvise() - как процесс подсказывает ядру, как он собирается использовать память Когда про…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →