#!/bin/bash # Source the .env file source <(sed 's/#.*//g' ./.env) # Set up variables from environment variables MARIADB_HOST=${MARIADB_HOST:-"localhost"} MARIADB_USER=${MARIADB_USER:-"root"} MARIADB_PASSWORD=${MARIADB_PASSWORD:-"passwd"} MARIADB_DATABASE=${MARIADB_DATABASE:-"DBName"} SQLITE_DATABASE=${SQLITE_DATABASE:-"/Path/to/database"} SFTP_HOST=${SFTP_HOST:-"localhost"} SFTP_PATH=${SFTP_PATH:-"/Paht/to/sftp"} TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN:-"TOKEN"} TELEGRAM_CHAT_ID=${TELEGRAM_CHAT_ID:-"ID_CHAT"} # Generate backups start_time=$(date +%s) mariadb_backup_filename="globalists_mariadb_backup_$(date +%Y%m%d).sql.gz" mariadb-dump -h "$MARIADB_HOST" -u "$MARIADB_USER" -p"$MARIADB_PASSWORD" "$MARIADB_DATABASE" | gzip > "$mariadb_backup_filename" sqlite_backup_filename="globalists_sqlite_backup_$(date +%Y%m%d).sql.gz" sqlite3 "$SQLITE_DATABASE" .dump | gzip > "$sqlite_backup_filename" # Calculate SHA512 hash of backups mariadb_hash=$(sha512sum "$mariadb_backup_filename" | awk '{ print $1 }') sqlite_hash=$(sha512sum "$sqlite_backup_filename" | awk '{ print $1 }') # Transfer backups to SFTP server sftp "$SFTP_HOST"<< EOF > /dev/null cd "$SFTP_PATH" put "$mariadb_backup_filename" put "$sqlite_backup_filename" quit EOF # Delete local backup files rm "$mariadb_backup_filename" rm "$sqlite_backup_filename" # Send message via Telegram message=" ** Respaldo completado! ** ** Base de datos:** * MariaDB: **$(echo $mariadb_backup_filename hash: $mariadb_hash)** * SQLite: **$(echo $sqlite_backup_filename hash: $sqlite_hash)** **⏱️ Tiempo de transferencia:** $(date -u -d "@$(( $(date +%s) - start_time ))" +'%T') ** Disponible en SFTP:** ($SFTP_PATH) " curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" -d chat_id="$TELEGRAM_CHAT_ID" -d text="$message" > /dev/null