TGViewer
Я хочу стать вайб-программистом Я хочу стать вайб-программистом @iwannabeprogrammer · 2.75K subscribers
Post #3645 636

Forwarded from Linux Club

🚀 Полезный Bash-скрипт для архивации старых логов 🚀

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

1. Находит файлы с расширением .log, изменённые более чем N дней назад.
2. Архивирует их в тарболл с датой.
3. Удаляет оригиналы после успешного архива.


#!/usr/bin/env bash
#
# Архивация старых логов >7 дней
# Сохраняет в /var/backups/logs/YYYY-MM-DD_logs.tar.gz

# Настройки
LOG_DIR="/var/log" # Каталог с логами
BACKUP_DIR="/var/backups/logs" # Куда складывать архивы
DAYS_OLD=7 # Возраст файлов в днях

# Создаём папку для бэкапов, если нет
mkdir -p "$BACKUP_DIR"

# Текущая дата
DATE=$(date '+%Y-%m-%d')

# Найти *.log старше N дней и упаковать в архив
find "$LOG_DIR" -type f -regextype posix-extended -regex ".*/[a-zA-Z0-9_-]+\.log$" \
-mtime +"$DAYS_OLD" -print0 | \
tar --null -czf "$BACKUP_DIR/${DATE}_logs.tar.gz" --files-from -

# Проверка успешности и удаление исходников
if [[ $? -eq 0 ]]; then
echo "✅ Архив создан: $BACKUP_DIR/${DATE}_logs.tar.gz"
# Удаляем старые логи
find "$LOG_DIR" -type f -regextype posix-extended -regex ".*/[a-zA-Z0-9_-]+\.log$" \
-mtime +"$DAYS_OLD" -delete
echo "🗑 Оригиналы удалены."
else
echo "❌ Ошибка при создании архива!"
exit 1
fi


Как это работает

▪️find … -regextype posix-extended -regex ".*/[a-zA-Z0-9_-]+\.log$"
Использует регулярное выражение, чтобы найти все файлы с именами, состоящими из букв, цифр, подчёркиваний или дефисов, и оканчивающиеся на .log.
▪️Опция -mtime +7 выбирает файлы старше 7 дней.
▪️tar --null --files-from - позволяет безопасно работать с именами, содержащими пробелы.
▪️При успешном создании архива исходные файлы удаляются командой -delete в find.

❓ Совет:
Добавьте этот скрипт в cron, чтобы он выполнялся автоматически, например, каждый день в 2:00:


0 2 * * * /usr/local/bin/archive_logs.sh >> /var/log/archive_logs_cron.log 2>&1

#linux

🐧 Linux Club ©
  • 👍 2
  • ❤ 1
More from @iwannabeprogrammer
  1. Oct 2, 2026Напоминаем про наш секретный второй ресурс тут тонны крутых постов, которых вы здесь точно…
  2. Oct 2, 2026Я хочу стать вайб-программистом
  3. Sep 30, 2026Я хочу стать вайб-программистом
  4. Sep 27, 2026Я хочу стать вайб-программистом
  5. Sep 27, 2026Чтят традиции описания в вакансиях Я хочу стать вайб-программистом
  6. Sep 26, 2026Я хочу стать вайб-программистом
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 →