36 lines
1.0 KiB
Bash
Executable File
36 lines
1.0 KiB
Bash
Executable File
#!/bin/bash
|
|
PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"
|
|
|
|
DIR="/DATA/Backup/PostgreSQL"
|
|
USER="postgres"
|
|
##PASS="gentoo"
|
|
|
|
if [ -z $1 ]; then
|
|
echo "database name missing! use --all for all db's"
|
|
exit 1;
|
|
elif [ $1 = '--all' ]; then
|
|
echo "full backup"
|
|
## for i in `psql -U $USER -l -t | cut -d'|' -f1 | sed -e 's/ //g' -e '/^$/d'`; do
|
|
for i in $(psql -U $USER -l -t | cut -d'|' -f1 | sed -e 's/ //g' -e '/^$/d'); do
|
|
if [ "$i" != "postgres" ] && [ "$i" != "template0" ] && [ "$i" != "template1" ] && [ "$i" != "template_postgis" ]; then
|
|
if test -f ${DIR}/${i}.sql; then
|
|
echo "Move ${DIR}/${i}.sql to ${DIR}/${i}.sql.1"
|
|
mv ${DIR}/${i}.sql ${DIR}/${i}.sql.1
|
|
fi
|
|
echo "dump ${i} to ${DIR}/${i}.sql"
|
|
pg_dump -U $USER $i > ${DIR}/${i}.sql
|
|
chmod 600 ${DIR}/${i}.sql
|
|
fi
|
|
done;
|
|
elif [ -n $1 ]; then
|
|
echo "Starting backup of $1"
|
|
if test -f $DIR/$1.sql; then
|
|
echo "Move $DIR/$1.sql to $DIR/$1.sql.1"
|
|
mv ${DIR}/${1}.sql ${DIR}/${1}.sql.1
|
|
fi
|
|
pg_dump -U $USER $1 > ${DIR}/${1}.sql
|
|
chmod 600 ${DIR}/${1}.sql
|
|
fi
|
|
echo "Done"
|
|
exit 0;
|