37 lines
1.2 KiB
Bash
37 lines
1.2 KiB
Bash
#!/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
|