Настраивает минимальную ротацию логов в Ubuntu

bash-скрипт, который:

* Удаляет старые журналы systemd старше 2 дней
* Настраивает journald на хранение только 2 дней
* Настраивает logrotate на хранение только одной ротации (.1), без .2.gz, .3.gz и т.д.
* Уменьшает размер логов до минимума (ротация ежедневно, хранить только 1 файл)

> nano minimal-log-retention.sh
> chmod +x minimal-log-retention.sh
> sudo ./logrotate-minimal.sh

#!/bin/bash
set -e

echo "🔧 Настройка systemd-journald..."
# Настройка хранения бинарных логов максимум 2 дня
sudo sed -i 's/^#*MaxRetentionSec=.*/MaxRetentionSec=2d/' /etc/systemd/journald.conf || echo "MaxRetentionSec=2d" | sudo tee -a /etc/systemd/journald.conf
sudo sed -i 's/^#*SystemMaxUse=.*/SystemMaxUse=100M/' /etc/systemd/journald.conf || echo "SystemMaxUse=100M" | sudo tee -a /etc/systemd/journald.conf
sudo systemctl restart systemd-journald

echo "🧹 Очистка старых journald логов..."
sudo journalctl --vacuum-time=2d

echo "🔧 Настройка logrotate..."

# Основной конфиг: ротация ежедневно, хранить только 1 версию, сжатие отключено
sudo sed -i 's/^weekly/daily/' /etc/logrotate.conf
sudo sed -i 's/^rotate .*/rotate 1/' /etc/logrotate.conf
sudo sed -i '/^compress/s/^/#/' /etc/logrotate.conf
sudo sed -i '/^delaycompress/s/^/#/' /etc/logrotate.conf

# Перебираем все файлы в /etc/logrotate.d/ и применяем те же правила
for file in /etc/logrotate.d/*; do
  sudo sed -i 's/weekly/daily/' "$file"
  sudo sed -i 's/monthly/daily/' "$file"
  sudo sed -i 's/rotate [0-9]\+/rotate 1/' "$file"
  sudo sed -i '/compress/d' "$file"
  sudo sed -i '/delaycompress/d' "$file"
done

echo "✅ Готово. Ротация логов настроена на минимальное хранение (2 дня, 1 файл без архивации)."