Скрипт для сохдания резервных копий по SSH

Для создания резервных копий по SSH и отправляет уведомления в телеграм

Код

#!/bin/sh

# Список директорий для бэкапа
dirlist="dir1 dir2 dir3"

# Сервер назначения и директория на сервере
DEST_USER="user"
DEST_SERVER="server_ip"
DEST_DIR="/путь/до/папки"

# Telegram Bot API
TELEGRAM_BOT_TOKEN="telegram_token"
TELEGRAM_CHAT_ID="chat_id"

# Функция для отправки уведомлений в Telegram
send_telegram_message() {
 local message=$1
 curl -s -X POST -H 'Content-Type: application/json' \
 -d "{\"chat_id\": \"${TELEGRAM_CHAT_ID}\", \"text\": \"${message}\", \"disable_notification\": false}" \
 https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage > /dev/null
}

# Цикл по каждой директории из списка
for onedir in $dirlist
do
 # Текущее время для именования файла
 TIMESTAMP=$(date '+%F_%T')

 # Бэкап директории с помощью tar и передача по SSH
 tar zcf - "/путь/до/папки/${onedir}" | ssh ${DEST_USER}@${DEST_SERVER} "cat > ${DEST_DIR}/${onedir}_${TIMESTAMP}.tar.gz"

 # Проверка, что файл был создан и имеет ненулевой размер
 line=$(ssh ${DEST_USER}@${DEST_SERVER} "ls -la ${DEST_DIR}/${onedir}_${TIMESTAMP}.tar.gz")

 # Если в результате пусто - такого файла нет
 if [ -z "$line" ]; then
 echo "Backup of ${onedir} failed"
 send_telegram_message "Backup of ${onedir} failed"
 else
 # Берем размер файла и проверяем, что он не нулевой
 size=$(echo "$line" | awk '{print $5}')
 if [ "$size" -ne 0 ]; then
 echo "Backup of ${onedir} successful"
 send_telegram_message "Backup of ${onedir} successful"
 else
 echo "Backup of ${onedir} failed"
 send_telegram_message "Backup of ${onedir} failed"
 fi
 fi
done

# Отправка уведомления о завершении скрипта
send_telegram_message "The script has finished working."