TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #86 493
Как собрать все логи за день и заархивировать их

Если логи занимают значительный объём, неплохо было бы собирать их в архив и перемещать в отдельный каталог. Сегодня как раз об этом, напишем скрипт, который это автоматизирует.

Допустим, есть у нас исходная директория с логами: /bashtex/logs и в ней хранятся логи вида: BashTex_DAY_20241105_1758.log

20241105 — это дата в формате YYYYMMDD, представляющая собой 5 ноября 2024 года.


Архив с логами за день нужно перекинуть в /bashtex/logs/backup/ с названием подкаталога в формате DDMMYYYY.

Bash-скрипт решающий данную задачу:


#!/bin/bash

# Исходный каталог с логами
LOG_DIR="/bashtex/logs"

# Каталог для хранения бэкапов
BACKUP_DIR="$LOG_DIR/backup"

# Определение текущей даты в нужных форматах
CURRENT_DATE=$(date +"%Y%m%d") # Формат для поиска логов YYYYMMDD
CURRENT_DATE_FORMATTED=$(date +"%d%m%Y") # Формат для папки бэкапа DDMMYYYY

# Создание имени архива с логами
ARCHIVE_NAME="logs_$CURRENT_DATE_FORMATTED.tar.gz"

# Каталог для сегодняшнего бэкапа
TARGET_DIR="$BACKUP_DIR/$CURRENT_DATE_FORMATTED"

# Проверка и создание целевого каталога, если его нет
if [ ! -d "$TARGET_DIR" ]; then
echo "Создаю директорию для бэкапа: $TARGET_DIR"
mkdir -p "$TARGET_DIR"
fi

# Поиск и архивирование логов за текущий день
echo "Собираю логи за $CURRENT_DATE и архивирую в $ARCHIVE_NAME"
find "$LOG_DIR" -type f -name "*_$CURRENT_DATE_*.log" -print0 | tar -czvf "$TARGET_DIR/$ARCHIVE_NAME" --null -T -

echo "Архив создан и перемещён в $TARGET_DIR/$ARCHIVE_NAME"


Небольшое пояснение:


LOG_DIR — каталог с логами.
BACKUP_DIR — основной каталог для хранения архивов.
CURRENT_DATE — текущая дата в формате YYYYMMDD, для поиска логов.
CURRENT_DATE_FORMATTED — текущая дата в формате DDMMYYYY, для названия папки.


Выдаем права на исполнение:


chmod +x backup_logs.sh


И запускаем:


./backup_logs.sh


Теперь логи за текущий день будут собираться, архивироваться и переноситься в папку /bashtex/logs/backup/DDMMYYYY. Можно это дело докрутить под нужную маску логов и архивировать только то, что необходимо, а не все логи за день. Также это дело можно добавить в крон и архивировать раз в сутки

BashTex 📱 #linux #bash
  • 🔥 5
More from @bash_tex
  1. Oct 14, 2026coproc: как Bash общается с фоновым процессом в обе стороны Обычно Bash запускает фоновый…
  2. Oct 13, 2026openat2(): как Linux защищает от выхода за пределы каталога Допустим, приложение должно чи…
  3. Oct 12, 2026xargs против while read: где быстрее и безопаснее Обе конструкции позволяют обработать спи…
  4. Oct 9, 2026BashTex 📱 #мем
  5. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  6. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
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 →