diff --git a/.env.example b/.env.example index 4134e0c..39d0a8f 100644 --- a/.env.example +++ b/.env.example @@ -3,10 +3,7 @@ MARIADB_USER="" MARIADB_PASSWORD="" MARIADB_DATABASE="" SQLITE_DATABASE="" -SFTP_HOST="" -SFTP_USER="" -SFTP_PASSWORD="" +SFTP_HOST="condornas" SFTP_PATH="" -SFTP_PORT="" TELEGRAM_BOT_TOKEN="" TELEGRAM_CHAT_ID="" \ No newline at end of file diff --git a/respaldosql.py b/respaldosql.py index 7046f42..b2be32b 100644 --- a/respaldosql.py +++ b/respaldosql.py @@ -1,6 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- + import os import hashlib import datetime diff --git a/respaldossql.sh b/respaldossql.sh new file mode 100755 index 0000000..15fee99 --- /dev/null +++ b/respaldossql.sh @@ -0,0 +1,56 @@ +#!/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