Для постгрес, я на коленке написал вот такой:
#!/bin/bash
### Куда сохранить: если каталога нет, первый проход будет без дампа
DIRPGDUMP="$HOME/db/pgdump"
### Какие базы, через пробел
BASEDUMP="basecomp cartridges"
BACKUSER="backupuser"
if [[ -d $DIRPGDUMP ]]
then
for pdump in $BASEDUMP; do
echo "Копирование базы $pdump"
pg_dump -h 127.0.0.1 -p 5432 -U $BACKUSER -d $pdump -C -F p -b -v -f $DIRPGDUMP/$pdump\_`date +%Y-%m-%d_%H-%M-%S`
echo $DIRPGDUMP/$pdump\_`date +%Y-%m-%d_%H-%M-%S`
echo ""
done
else
echo "Создадим каталог $HOME/db/pgdump"
mkdir -p $HOME/db/pgdump
fi
я не пишу часто скрипты, но вот так немного себе обеспечил автоматизацию.
Локальный доступ без пароля в постгрес настроен.
Вот так будет лучше:
#!/bin/bash
LIST="/tmp/userdb.csv"
# Список csv
# БАЗА|ЛОГИН|ПАРОЛЬ (заполнить файл)
# 1 2 3 4
echo "БАЗА1|ЛОГИН1|ПАРОЛЬ1|/туда1/сюда1" > $LIST
echo "БАЗА2|ЛОГИН2|ПАРОЛЬ2|/туда2/сюда2" >> $LIST
# Разделитель полей в списке
DELIM="|"
# Разделитель полей для цикла for
IFS=$'\n'
# Получить из файла csv строчку разделенную | и превратить в строчку разделенную пробелом
for LOGINPW in $(cut -d $DELIM -f 1,2,3,4 --output-delimiter=" " "$LIST")
do
# Выделить из переменной поля разделенные пробелом
BASESQL=`echo "$LOGINPW" | cut -d " " -f 1`
LOGIN=`echo "$LOGINPW" | cut -d " " -f 2`
PASSW=`echo "$LOGINPW" | cut -d " " -f 3`
PATHS=`echo "$LOGINPW" | cut -d " " -f 4`
# Здесь добавить скрипт дампа базы, переменные в нижнем регистре
echo "mysqldump ${LOGIN,,} ${PASSW,,} ${BASESQL,,} > $PATHS/$BASESQL_`date +%Y-%m-%d_%H-%M-%S`"
done
rm -f $LIST