first commit
This commit is contained in:
Executable
+54
@@ -0,0 +1,54 @@
|
||||
#!/bin/bash
|
||||
|
||||
# --- НАЛАШТУВАННЯ ---
|
||||
REMOTE_DIR="/Volumes/Just/sql advanced/lab2-1/backups"
|
||||
|
||||
# Новий формат: рік-місяць-день_години-хвилини-секунди
|
||||
DATE=$(date +%Y-%m-%d_%H-%M-%S)
|
||||
FILENAME="OrdersDB_${DATE}.sql"
|
||||
BACKUP_PATH="/tmp/$FILENAME"
|
||||
|
||||
echo "Starting dump of OrdersDB ($DATE)..."
|
||||
|
||||
# 1. Створення дампу бази даних
|
||||
# Додано --set-gtid-purged=OFF для сумісності з mysql:latest
|
||||
# Додано --single-transaction для уникнення помилок консистентності
|
||||
mysqldump -h db -u root -p$MYSQL_ROOT_PASSWORD \
|
||||
--set-gtid-purged=OFF \
|
||||
--single-transaction \
|
||||
OrdersDB > $BACKUP_PATH
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Dump created: $FILENAME. Uploading to Mac..."
|
||||
|
||||
# 2. Завантаження через SFTP
|
||||
lftp -u $SFTP_USER, sftp://$SFTP_HOST <<EOF
|
||||
set sftp:connect-program "ssh -a -x -i /root/.ssh/id_rsa -o StrictHostKeyChecking=no"
|
||||
cd "$REMOTE_DIR"
|
||||
put "$BACKUP_PATH"
|
||||
quit
|
||||
EOF
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Upload successful. Sending email..."
|
||||
|
||||
# 3. Надсилання сповіщення
|
||||
# Ми додаємо вивід помилок msmtp у змінну, щоб побачити їх, якщо лист не піде
|
||||
EMAIL_LOG=$(echo -e "Subject: Backup Success: OrdersDB ($DATE)\n\nВітаю! Резервна копія $FILENAME успішно збережена на зовнішній диск." | msmtp $EMAIL_TO 2>&1)
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Email sent!"
|
||||
else
|
||||
echo "Email error: $EMAIL_LOG"
|
||||
fi
|
||||
else
|
||||
echo "SFTP Error!"
|
||||
echo -e "Subject: Backup FAILED: SFTP Error ($DATE)\n\nПомилка передачі файлу $FILENAME на диск." | msmtp $EMAIL_TO
|
||||
fi
|
||||
|
||||
# Видаляємо тимчасовий файл
|
||||
rm "$BACKUP_PATH"
|
||||
else
|
||||
echo "MySQL Dump Error!"
|
||||
echo -e "Subject: Backup FAILED: SQL Error ($DATE)\n\nНе вдалося створити дамп бази OrdersDB. Перевірте логі контейнера." | msmtp $EMAIL_TO
|
||||
fi
|
||||
Reference in New Issue
Block a user