Проверка. Был ли создан сегодня snapshot

Если сегдня не был создан snapshot - высылаю уведомление в телеграмм.

Создать файл .env

BOT_TOKEN=18045447450203:AAGEjU7HKEEGle1Zv2an5sVF49QxNxhw03w
CHAT_ID=33109821804

Высылаю лог файл по вторинкам в любом случае

Скрипт Linux по SSH

cat /root/check_snapstots_today.sh

Внимание # --- Теги для проверки ---

#!/bin/bash

# --- Настройки подключения SFTP ---
PORT=2222
REMOTE_HOST="srv.pp.ua"
REMOTE_USER="root"
REMOTE_PATH="/mnt/company/restic/"
SSH_KEY_PATH="/root/.ssh/company_key"
RESTIC_PASSWORD_FILE="/root/restic-password.txt"
EMAIL_REPORT=report@company.ua
export RESTIC_PASSWORD_FILE="/root/restic-password.txt"


# --- Теги для проверки ---
TAGS=("1c" "custom" "Svetlana" "glbuh")

# --- Telegram ---
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/.env"   # BOT_TOKEN, CHAT_ID

# --- IP для уведомлений ---
IP_local=$(ip -4 -br a | grep UP | awk '{print $3}')
IP_global=$(curl -s ifconfig.me)

# --- Логирование ---
LOG_FILE=/var/log/restic_spetscontract.log
TODAY=$(date +%F)
echo "TODAY is $TODAY" > "$LOG_FILE"
exec > >(tee -a "$LOG_FILE") 2>&1

# --- Путь к репозиторию SFTP + ключ и порт ---
RESTIC_REPO="sftp:${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH}"
RESTIC_SFTP_OPTS="sftp.command=ssh -p ${PORT} -i ${SSH_KEY_PATH} -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} -s sftp"

# --- Функция вывода снапшотов по тегу ---
show_snapshots_by_tag() {
    local tag="$1"
    echo "------- ${tag} ---------------"
    restic -r "$RESTIC_REPO" -o "$RESTIC_SFTP_OPTS" snapshots --tag="$tag"
}

echo "==================== $REMOTE_HOST ====================="

# --- Вывод снапшотов по тегам ---
for tag in "${TAGS[@]}"; do
    show_snapshots_by_tag "$tag"
done

# --- Отображение снапшотов за сегодня ---
echo "====================  $TODAY  ==========================="
restic -r "$RESTIC_REPO" -o "$RESTIC_SFTP_OPTS" snapshots | grep "$TODAY"

# --- Проверка наличия снапшота за сегодня ---
echo "=== Проверка наличия снапшота за $TODAY ==="
SNAPSHOT_TODAY=$(restic -r "$RESTIC_REPO" -o "$RESTIC_SFTP_OPTS" snapshots | grep "$TODAY")

if [[ -n "$SNAPSHOT_TODAY" ]]; then
    echo "✅ Снапшот за $TODAY найден:"
    echo "$SNAPSHOT_TODAY"
else
    echo "⚠️ Снапшот за $TODAY не найден!"
    echo "Результат: ПРОБЛЕМА — нет снапшота за $TODAY"
    MESSAGE="⚠️ Restic: сегодня ($TODAY) не создан снапшот в репозитории ${RESTIC_REPO}
LAN: $IP_local
WAN: $IP_global
$0"
    curl -s -X POST "https://api.telegram.org/bot$BOT_TOKEN/sendMessage" \
        -d chat_id="$CHAT_ID" \
        -d text="$MESSAGE"
fi

# --- Статистика ---
echo "=== Статистика snapshot ==="
restic -r "$RESTIC_REPO" -o "$RESTIC_SFTP_OPTS" stats
echo "=== Статистика snapshot (raw-data) ==="
restic -r "$RESTIC_REPO" -o "$RESTIC_SFTP_OPTS" stats --mode raw-data

echo "------------------------"
echo "$IP_local"
echo "$IP_global"
echo "$0"


# Отправить лог по вторникам
# Получаем номер дня недели: 2 — вторник (1 — понедельник, 7 — воскресенье)
DOW=$(date +%u)

if [[ "$DOW" -eq 2 ]]; then
    echo "Вторник. Высылаю отчет на $EMAIL_REPORT "
mutt -s "Company log restic" -- "$EMAIL_REPORT" < "$LOG_FILE"
else
    echo "Сегодня не вторник. Отчет не высылаю"
fi

exit 0
nano /etc/systemd/system/check_snapstots_today.service
[Unit]
Description= check snapstots today
After=network.target

[Service]
Type=oneshot
ExecStart=/root/check_snapstots_today.sh
WorkingDirectory=/root
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Environment="HOME=/root"
Environment="XDG_CACHE_HOME=/root/.cache"
[Install]
WantedBy=multi-user.target
nano /etc/systemd/system/check_snapstots_today.timer
[Unit]
Description= check snapstots today
[Timer]
OnBootSec=1m
OnCalendar=*-*-* 11:33:00
[Install]
WantedBy=timers.target

или

OnCalendar=Mon..Fri *-*-* 10:33:00

systemctl  daemon-reload
systemctl  start check_snapstots_today.timer
systemctl  enable  check_snapstots_today.timer
systemctl list-timers --all | grep check_snapstots_today.service

Если таймер не отображается, то - «жёсткая перезагрузка» самого процесса systemd (PID 1)

systemctl daemon-reexec