Вопрос или проблема
У меня есть скрипт, который синхронизирует папки. Скрипт выполняет
/usr/bin/rsync -av --delete $SOURCE $DEST >> $LOG_FILE 2>> $ERR_LOG_FILE
поэтому он перенаправляет вывод в LOG_FILE
и вывод ошибок в ERR_LOG_FILE
.
Кроме того, я хотел бы, чтобы ошибки отправлялись root
по электронной почте. Как я могу это сделать?
Если вы можете полагаться на код завершения….
/usr/bin/rsync -av --delete "$SOURCE" "$DEST" >> "$LOG_FILE" 2>&1 ||
mail -s "Ошибки Rsync" [email protected] <"$LOG_FILE"
С bash
:
rsync -av --delete "$SOURCE" "$DEST" >> "$LOG_FILE" 2>>"$ERR_LOG_FILE"
[[ -s $ERR_LOG_FILE ]] && mail -s test root < "$ERR_LOG_FILE"
.
Ответ или решение
Скрипт для синхронизации папок в Linux: перенаправление ошибок в файл и отправка по электронной почте
Вам необходимо создать скрипт для синхронизации папок с помощью rsync
, который не только записывает обычный вывод и ошибки в соответствующие файлы, но и отправляет уведомления о возникнувших ошибках на электронную почту. Мы подробнее разберем, как это реализовать.
Шаг 1: Определение переменных
Перед тем как приступить к написанию скрипта, определим основные переменные:
$SOURCE
: путь к исходной директории.$DEST
: путь к целевой директории.$LOG_FILE
: файл для сохранения стандартного вывода.$ERR_LOG_FILE
: файл для сохранения ошибок.
Пример объявления переменных в вашем скрипте может выглядеть так:
SOURCE="/path/to/source"
DEST="/path/to/dest"
LOG_FILE="/path/to/logfile.log"
ERR_LOG_FILE="/path/to/errorlog.log"
Шаг 2: Выполнение команды rsync
Теперь, когда переменные определены, можно написать команду rsync
для синхронизации папок. Мы используем перенаправление для записи стандартного и ошибочного вывода в соответствующие файлы:
/usr/bin/rsync -av --delete "$SOURCE" "$DEST" >> "$LOG_FILE" 2>> "$ERR_LOG_FILE"
Шаг 3: Проверка ошибок и отправка уведомления по электронной почте
Следующим шагом будет проверка, были ли ошибки. Это можно сделать, проверяя размер файла $ERR_LOG_FILE
. Если файл не пустой, то мы отправляем его содержимое по электронной почте.
Используя команду mail
, напишем следующий код:
if [[ -s $ERR_LOG_FILE ]]; then
mail -s "Ошибка Rsync" root < "$ERR_LOG_FILE"
fi
Полный скрипт будет выглядеть следующим образом:
#!/bin/bash
# Определение переменных
SOURCE="/path/to/source"
DEST="/path/to/dest"
LOG_FILE="/path/to/logfile.log"
ERR_LOG_FILE="/path/to/errorlog.log"
# Выполнение команды rsync
/usr/bin/rsync -av --delete "$SOURCE" "$DEST" >> "$LOG_FILE" 2>> "$ERR_LOG_FILE"
# Проверка наличия ошибок и отправка уведомления
if [[ -s $ERR_LOG_FILE ]]; then
mail -s "Ошибка Rsync" root < "$ERR_LOG_FILE"
fi
Шаг 4: Запуск скрипта
Не забудьте сделать ваш скрипт исполняемым:
chmod +x ваш_скрипт.sh
Теперь вы можете запускать скрипт, чтобы синхронизировать папки. В случае возникновения ошибок, они будут записаны в файл $ERR_LOG_FILE
, и вы получите уведомление по электронной почте.
Заключение
Создание скрипта для синхронизации папок с использованием rsync
и отправка уведомлений об ошибках — это полезный инструмент для автоматизации задач администрирования в Linux. Убедитесь, что у вас правильно настроен демон почты на сервере для успешной отправки сообщений. Подходящее управление логами и уведомлениями поможет предотвратить возможные проблемы и повысить эффективность работы.