diff --git a/pgm_bckp/backup.sh b/pgm_bckp/backup.sh new file mode 100644 index 0000000..4bd250a --- /dev/null +++ b/pgm_bckp/backup.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "$SCRIPT_DIR/config.sh" + +mkdir -p "$backup_dir" + +for db_id in "${database_ids[@]}"; do + IFS='|' read -r db_type db_name db_host db_port db_user db_pass <<< "${!db_id}" + timestamp=$(date +%Y%m%d%H%M%S) + backup_file="$backup_dir/$db_name-$timestamp.sql" + + case "$db_type" in + mysql) + mysqldump --user="$db_user" --password="$db_pass" --host="$db_host" --port="$db_port" --databases "$db_name" > "$backup_file" + ;; + postgres) + export PGPASSWORD="$db_pass" + pg_dump --username="$db_user" --host="$db_host" --port="$db_port" --format=plain --file="$backup_file" "$db_name" + ;; + *) + echo "❌ Unsupported database type: $db_type for $db_name" + continue + ;; + esac + + if [ $? -eq 0 ]; then + echo "✅ Backup of $db_type database '$db_name' completed: $backup_file" + else + echo "❌ Error during backup of $db_type database '$db_name'" + rm -f "$backup_file" + fi + + # Cleanup + find "$backup_dir" -type f -name "$db_name-*.sql" -mtime +$backup_retention_days -exec rm -f {} \; +done diff --git a/pgm_bckp/config.sh b/pgm_bckp/config.sh new file mode 100644 index 0000000..9260c59 --- /dev/null +++ b/pgm_bckp/config.sh @@ -0,0 +1,13 @@ +# Backup destination and retention +backup_dir="db_backup" +backup_retention_days=7 + +# List of database identifiers +database_ids=("db1" "db2" "pg1") + +# For each database, define its parameters +# Format: type|name|host|port|user|password + +db1="mysql|db1|127.0.0.1|3306|root|rootpass" +db2="mysql|db2|10.0.0.2|3307|backup_user|backup123" +pg1="postgres|my_pgdb|192.168.1.100|5432|pguser|pgpass"