From 73b16f84d25c73401a056e26ebbd3504ecb3c272 Mon Sep 17 00:00:00 2001
From: Patrick Ditzel <p.ditzel@micromata.de>
Date: Thu, 14 Dec 2017 12:16:27 +0000
Subject: [PATCH] As this program grwos and grows it was time do make an own repository for it an move it into.
---
config/dbb.cfg | 40 ++++
config/mariadb.cfg | 11 +
dbb-modules/mongodb | 5
TODO.md | 26 ++
install.sh | 11 +
dbb-modules/postgresql | 138 +++++++++++++
dbb | 234 +++++++++++++++++++++++
dbb-modules/mariadb | 19 +
config/postgresql.cfg | 19 +
INSTALL.md | 13 +
README.md | 23 ++
config/mongodb.cfg | 11 +
12 files changed, 550 insertions(+), 0 deletions(-)
diff --git a/INSTALL.md b/INSTALL.md
new file mode 100644
index 0000000..1069468
--- /dev/null
+++ b/INSTALL.md
@@ -0,0 +1,13 @@
+# Installation of the script
+
+1.) Run the install.sh - script
+
+```bash
+./install.sh
+```
+
+2.) Edit the configfile that it fits to your environment.
+
+3.) Make changes to the skript and some pull requests ;-).
+
+
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..6b328f0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,23 @@
+# Databasebackup (dbbackup)
+
+This is a bash-script to backup your databases with the most common standard tools.
+
+## Requirenments
+
+Important: This Script is developed with debian GNU/Linux so it should work on debian and the most derived distributions.
+
+For the backup of your databases you need a propper client to connect to your databaseserver.
+This script aims to backup many different databasetype eg. postgres, mysql or mongodb in one single program. So if you have to backup postgres you have to install the psql-client package. If you want to backup MySQL databases install the mysql-client package.
+
+## Features
+
+* Runs interactive and noninteractive
+* Make Postgrsbackups (localy and remote)
+* Make MySQL/MariaDB-Backups (coming soon)
+* Make MongoDB-Backups (coming soon)
+* Optinal keep a filehistory of backups
+* Optinal logging to syslog
+* Reads configuration for postgresbackups from ~/.pgpass
+
+More Information here: [https://www.central-computer.de/datenbanken-backup/]
+
diff --git a/TODO.md b/TODO.md
new file mode 100644
index 0000000..0712c34
--- /dev/null
+++ b/TODO.md
@@ -0,0 +1,26 @@
+# ToDo-List
+
+Ideas for the future
+
+## Database Options
+
+### MariaDB / MySQL
+
+- [ ] Backup MariaDB / MySQL on the local machine
+- [ ] Backup MariaDB / MySQL on remote machines
+
+### MongoDB
+
+- [ ] Backup MongoDB on the local host
+- [ ] Backup MongoDB on remote machines
+
+### Oracle
+- [ ] Check if it possible to dump OracleDatabases
+- [ ] Backup the local host
+- [ ] Backup remote hosts
+
+## General Functionality
+
+- [ ] Run single backuptasks in background (using "&"" and "wait")
+- [ ] Run script in interactive mode and tell it what db on what host with which user an pwd (<- only interactive) (using a script alias and do interactiv or noninteractive depending on the calling name)
+- [x] Adding an optional filehistory of the backuped files/dumps (specify an timerange or a number how many dumps should be saved)
diff --git a/config/dbb.cfg b/config/dbb.cfg
new file mode 100644
index 0000000..0372fd0
--- /dev/null
+++ b/config/dbb.cfg
@@ -0,0 +1,40 @@
+################################################################################
+# Configure the einvironment:
+################################################################################
+#
+################################################################################
+# Should dbbackup log to syslog (TRUE | FALSE)
+# Default is TURE
+
+ENABLE_SYSLOG=TRUE
+
+################################################################################
+# Enable debugout
+# Default is FALSE
+
+ENABLE_DEBUG=TRUE
+
+################################################################################
+# Where to backup datafiles?
+
+BACKUP_DIR=/home/backupuser/database_backups
+
+################################################################################
+# We need a tmpdir
+
+TMP_DIR=/tmp/databases
+
+################################################################################
+# Which user is running dbbackup?
+
+BACKUPUSER=backupuser
+
+################################################################################
+# Should a history of backuped files kept?
+
+KEEP_BACKUP_FILES=TRUE
+
+# How many days should these files kept?
+
+BACKUP_FILES_DAYS=14
+
diff --git a/config/mariadb.cfg b/config/mariadb.cfg
new file mode 100644
index 0000000..8e55cd9
--- /dev/null
+++ b/config/mariadb.cfg
@@ -0,0 +1,11 @@
+################################################################################
+# ToDo
+
+MYSQL_BACKUP_LOCAL=FALSE
+
+################################################################################
+# ToDo
+
+MYSQL_BACKUP_REMOTE=FALSE
+
+################################################################################
\ No newline at end of file
diff --git a/config/mongodb.cfg b/config/mongodb.cfg
new file mode 100644
index 0000000..5e02b3c
--- /dev/null
+++ b/config/mongodb.cfg
@@ -0,0 +1,11 @@
+################################################################################
+# ToDo
+
+MONGODB_BACKUP_LOCAL=FALSE
+
+################################################################################
+# ToDo
+
+MONGODB_BACKUP_REMOTE=FALSE
+
+################################################################################
\ No newline at end of file
diff --git a/config/postgresql.cfg b/config/postgresql.cfg
new file mode 100644
index 0000000..c23b720
--- /dev/null
+++ b/config/postgresql.cfg
@@ -0,0 +1,19 @@
+################################################################################
+# Backup Postgres @ localhost as user postres (Debian)
+
+POSTGRES_BACKUP_LOCAL=TRUE
+
+# Should every database backuped in a single file?
+# Works together with POSTGRES_BACKUP_LOCAL_DUMP_ALL
+
+POSTGRES_BACKUP_LOCAL_SINGLE=TRUE
+
+# Should all databases backuped in one large file?
+# Works together with POSTGRES_BACKUP_LOCAL_SINGLE
+
+POSTGRES_BACKUP_LOCAL_DUMP_ALL=TRUE
+
+################################################################################
+## Enable backup of remote postgres databases specified in ~/.pgpass
+
+POSTGRES_BACKUP_REMOTE=TRUE
diff --git a/dbb b/dbb
new file mode 100755
index 0000000..105f565
--- /dev/null
+++ b/dbb
@@ -0,0 +1,234 @@
+#!/bin/bash
+
+################################################################################
+# #
+# Author: Patrick Ditzel (patrick@central-computer.de) #
+# Lizenz: GNU GENERAL PUBLIC LICENSE v3 #
+# #
+################################################################################
+
+################################################################################
+# Set up the backupenvironment and "global" functions
+################################################################################
+
+INSTALLATION_PATH_PREFIX=/usr/local
+
+function set_config {
+ if [ -r /etc/dbb.cfg ]; then
+ # Check if configuration is found in /etc. If yes set configvar
+ BACKUPCFG=/etc/dbb.cfg
+ elif [ -r ~/.dbb.cfg ]; then
+ # If config is found in the backupuser home directory set it into the configvar
+ BACKUPCFG=~/.dbb.cfg
+ else
+ echo "No configuration file is found, please create one" | /usr/bin/logger -s -i -t databasebackup
+ fi
+}
+
+function load_dbmodul_dfg {
+ if [ -d $BACKUPCFG.d ]; then
+ if [ ! "$(ls -A $BACKUPCFG.d)" ]; then
+ echo "Configurationdirectory for modules exist but it is empty" | /usr/bin/logger -s -i -t databasebackup
+ else
+ for MODULCFG in $(ls $BACKUPCFG.d); do . $BACKUPCFG.d/MODULCFG; done
+ fi
+ else
+ echo "Configurationdirectory does nort exists, can't load any configurationfile" | /usr/bin/logger -s -i -t databasebackup
+ fi
+}
+
+function check_backup_env {
+ # Check if the configuration exists and is not empty
+ if [ -r $BACKUPCFG ] && [ -s $BACKUPCFG ]; then
+ # If true then read it
+ . $BACKUPCFG
+ load_dbmodul_dfg
+ else
+ # If not throw an errormessage
+ echo "The configfile does not exists or is empty" | /usr/bin/logger -s -i -t databasebackup
+ echo "Please create the $BACKUPCFG or write your settings into" | /usr/bin/logger -s -i -t databasebackup
+ exit 1
+ fi
+ if [ "$ENABLE_DEBUG" = "TRUE" ]; then
+ # If debugoutput is enabled show the configurationfile without comments
+ echo "################################################################################" | /usr/bin/logger -s -i -t databasebackup
+ while read -r configline; do
+ echo "$configline" | grep -v '^$' | grep -v '^#' | /usr/bin/logger -s -i -t databasebackup
+ done <<< "$(cat $BACKUPCFG)"
+ echo "################################################################################" | /usr/bin/logger -s -i -t databasebackup
+ fi
+ # Check if the target directory for the backupfiles exists
+ if [ ! -d "$BACKUP_DIR" ]; then
+ # If not create it
+ mkdir -p "$BACKUP_DIR"
+ fi
+ # Check if the directory for tempfiles exists
+ if [ ! -d "$TMP_DIR" ]; then
+ # If not create it
+ mkdir -p "$TMP_DIR"
+ fi
+
+}
+
+function set_logger {
+ # Check if log to syslog is enabled
+ if [ "$ENABLE_SYSLOG" = "TRUE" ]; then
+ # If true then define the logger
+ LOGGER="/usr/bin/logger -s -i -t databasebackup"
+ else
+ # If not cat it out on stdout
+ LOGGER="/bin/cat"
+ fi
+}
+
+function debug {
+ DEBUGMSG=$1
+ if [ "$ENABLE_DEBUG" = "TRUE" ]; then
+ echo "$DEBUGMSG" | $LOGGER
+ fi
+}
+
+function load_dbmodules {
+ if [ -d $BACKUPCFG.d ] && [ -d $INSTALLATION_PATH_PREFIX/lib/dbb-modules ]; then
+ if [ ! "$(ls -A $BACKUPCFG.d)" ] && [ ! "$(ls -A $INSTALLATION_PATH_PREFIX/lib/dbb-modules)" ]; then
+ debug "Configurationdirectory or directory for modules exist but it is empty"
+ else
+ for MODUL in $(ls $BACKUPCFG.d | cut -d "." -f1); do
+ . $INSTALLATION_PATH_PREFIX/lib/dbb-modules/$MODUL
+ debug "Load module: $INSTALLATION_PATH_PREFIX/lib/dbb-modules/$MODUL"
+ check_$MODUL_deps
+ done
+ fi
+ else
+ debug "Configurationdirectory does nort exists, can't load any configurationfile"
+ fi
+}
+
+function is_interactive {
+ SCRPT=$(basename "$0")
+ debug "$SCRPT"
+
+ if [ "$SCRPT" = "dbbi" ]; then
+ # If the script is called for interactive use we have to chenge the calls of the functions
+ # Setting the $LOGGER für interactive use to /bin/cat
+ LOGGER="/bin/cat"
+ # Here we set teh environment variable for interactive use
+ debug "dbbi (DataBase Interactive Backup) is called"
+ RADIOACTIVE=TRUE
+ elif [ "$SCRPT" = "dbb" ]; then
+ # Set the $LOGGER
+ LOGGER="/usr/bin/logger -s -i -t databasebackup"
+ # If the script is used noninteractive we have also to set the environmet variable with this information
+ debug "dbb (DataBase Backup) is called"
+ RADIOACTIVE=FALSE
+ # unset the $LOGGER because this will be set later within the informatione in the configfile
+ unset LOGGER
+ else
+ # If the switch between interactive and noninteractive does not work: tell it but before set the $LOGGER
+ LOGGER="/usr/bin/logger -s -i -t databasebackup"
+ debug "An error occured - don't know if to use interactive or noninteractive"
+ exit 1
+ fi
+}
+
+function backup_file_handler {
+ # translate the vars to make it more readable
+ BFH_TMP_DIR=$1
+ BFH_BACKUPDIR_DIR=$2
+ BFH_FILE=$3
+ # If enabled put out some debug infos
+ debug "BFH_TMP_DIR: $BFH_TMP_DIR"
+ debug "BFH_BACKUPDIR_DIR: $BFH_BACKUPDIR_DIR"
+ debug "FILE: $BFH_FILE"
+ # Check if the script should keep a filehistorie
+ if [ "$KEEP_BACKUP_FILES" = "TRUE" ]; then
+ debug "Keep history"
+ # Set some vars to manage the files
+ BACKUP_DAY=$(date +%x)
+ REMOVE_NUMBER=$(( $BACKUP_FILES_DAYS + 1 ))
+ BFH_FILE_PREFIX_NAME_TO_REMOVE=$(date -d "$REMOVE_NUMBER days ago" "+%x")
+ # ... and if it is turned on give some debig info
+ debug "BACKUP_DAY: $BACKUP_DAY"
+ debug "REMOVE_NUMBER: $REMOVE_NUMBER"
+ debug "FILE_PREFIX_NAME_TO_REMOVE: $BFH_FILE_PREFIX_NAME_TO_REMOVE-$BFH_FILE"
+ # Check if there is an backupfile from the current day
+ if [ -f "$BFH_BACKUPDIR_DIR"/"$BACKUP_DAY"-"$BFH_FILE" ]; then
+ # If yes append miniutes and seconds to the date-profix of the filename
+ debug "File $BFH_BACKUPDIR_DIR/$BACKUP_DAY-$BFH_FILE already exists. Rename the new one."
+ DATE_TIME_SUFFIX=$(date +%H%M%S)
+ # ... and move it into the targetdir
+ mv "$BFH_TMP_DIR"/"$BFH_FILE" "$BFH_BACKUPDIR_DIR"/"$BACKUP_DAY"-"$DATE_TIME_SUFFIX"-"$BFH_FILE"
+ else
+ # If there is no backupfile of the current day move it to the backupfolder
+ mv "$BFH_TMP_DIR"/"$BFH_FILE" "$BFH_BACKUPDIR_DIR"/"$BACKUP_DAY"-"$BFH_FILE"
+ fi
+ # Check if there are files older then the days to keep set in the config
+ if [ -f "$BFH_BACKUPDIR_DIR"/"$BFH_FILE_PREFIX_NAME_TO_REMOVE"-"$BFH_FILE" ]; then
+ # if yes remove it
+ rm "$BFH_BACKUPDIR_DIR"/"$BFH_FILE_PREFIX_NAME_TO_REMOVE"-"$BFH_FILE"
+ # Also remove the files with the extended prefix in the name
+ # If there is ab file with the extende prefix then there has to be a file with tne normal prefix
+ rm "$BFH_BACKUPDIR_DIR"/"$BFH_FILE_PREFIX_NAME_TO_REMOVE"?????-"$BFH_FILE"
+ else
+ # If no file exists do nothing but some debuginfo
+ debug "File $BFH_BACKUPDIR_DIR/$BFH_FILE_PREFIX_NAME_TO_REMOVE-$BFH_FILE does not exists, so can not remove it."
+ fi
+ else
+ # If we do not keep a filehistory do the following
+ # Check if the targefile exists
+ if [ -f "$BFH_BACKUPDIR_DIR"/"$BFH_FILE" ]; then
+ debug "$BFH_FILE exists ... make a diff"
+ # Check if there are differences betwenn last backup and the actual one
+ diff "$BFH_TMP_DIR"/"$BFH_FILE" "$BFH_BACKUPDIR_DIR"/"$BFH_FILE" > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ # If yes then move it to the backupfolder
+ debug "Differences found between old and new $BFH_FILE -> moving to BACKUP_DIR"
+ mv "$BFH_TMP_DIR"/"$BFH_FILE" "$BFH_BACKUPDIR_DIR"/"$BFH_FILE"
+ else
+ # If not do nothing
+ debug "No differences found between old an new $BFH_FILE"
+ fi
+ else
+ # If there is a new databasedumpfile move it to the backupfolder
+ debug "New Backupfile $BFH_FILE -> moving to $BFH_BACKUPDIR_DIR"
+ mv "$BFH_TMP_DIR"/"$BFH_FILE" "$BFH_BACKUPDIR_DIR"/"$BFH_FILE"
+ fi
+ fi
+}
+
+function check_global_deps {
+ # Check the dependencys
+ if [ ! -e /usr/bin/sudo ]; then
+ echo "It seems that you dont have sudo installed. Please install sudo and restart" | /usr/bin/logger -s -i -t databasebackup
+ exit 1
+ fi
+}
+
+################################################################################
+
+# The mainfunktion
+function main {
+ check_global_deps
+ is_interactive
+ if [ "$RADIOACTIVE" = "TRUE" ]; then
+ debug "Unsing dbbi (dbb interactive = dbbi) is for future use"
+ fi
+ if [ "$RADIOACTIVE" = "FALSE" ]; then
+ debug "running noninteractive"
+ # Set up the configuration for the noninteractive mode
+ set_config
+ # Configure logging (from configurationfil)e
+ set_logger
+ # Check if the backupenvironment is setup properly
+ check_backup_env
+ # Run modul-main-functions
+ for MODULMAIN in $(ls $BACKUPCFG.d | cut -d "." -f1); do
+ $MODULMAIN_main
+ done
+ # The final action: remove the dumps
+ rm -rf "$TMP_DIR"
+ fi
+
+}
+
+main
diff --git a/dbb-modules/mariadb b/dbb-modules/mariadb
new file mode 100644
index 0000000..f45817c
--- /dev/null
+++ b/dbb-modules/mariadb
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+# MariaBD/MySQL remote
+#
+# The Information what MySQL/MariaDB - databases should be backuped are defined in ~/.my.cnf
+
+function run_mysql_backups {
+ debug "Dump remote database $MYSQLDB from $MYSQLDBHOST"
+ /usr/bin/mysqldump --skip-dump-date -h "$MYSQLDBHOST" -u "$MYSQLDBUSER" -p"$MYSQLPASSWD" "$MYSQLDB" > "$TMP_DIR"/"$MYSQLDBHOST"_"$MYSQLDB".mysql
+ debug "Diff MySQLDump $MYSQLDB"
+ diff "$TMP_DIR"/"$MYSQLDBHOST"_"$MYSQLDB".mysql "$BACKUP_DIR"/"$MYSQLDBHOST"_"$MYSQLDB".mysql > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ debug "Differences found -> moving to BACKUP_DIR"
+ mv "$TMP_DIR"/"$MYSQLDBHOST"_"$MYSQLDB".mysql "$BACKUP_DIR"/"$MYSQLDBHOST"_"$MYSQLDB".mysql
+ else
+ debug "No differences found an Database $MYSQLDB"
+ fi
+ echo ""
+}
\ No newline at end of file
diff --git a/dbb-modules/mongodb b/dbb-modules/mongodb
new file mode 100644
index 0000000..59ca17f
--- /dev/null
+++ b/dbb-modules/mongodb
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+function run_mongodb_backup {
+ echo ""
+}
\ No newline at end of file
diff --git a/dbb-modules/postgresql b/dbb-modules/postgresql
new file mode 100644
index 0000000..e418c56
--- /dev/null
+++ b/dbb-modules/postgresql
@@ -0,0 +1,138 @@
+#!/bin/bash
+
+# dependencies
+
+function check_postgresql_deps {
+ if [ ! -e /usr/bin/psql ]; then
+ debug "It seems that you dont have psql installed. You may have problems to backup remote databases"
+ fi
+ numberRegex='^[0-9]+$'
+ if ! [[ $(id -u postgres 2>&1) =~ $numberRegex ]] ; then
+ debug "It seems that you dont have the user postgres on your computer. You may have problems to backup local postgres databases"
+ fi
+}
+
+# PostgreSQL local
+
+function pg_local_all {
+ # Debugoutput id DEBUG is enabled
+ debug "Dump all from Postgres local"
+ # Dump all databases in one file as user postgres (Debian)
+ sudo -H -i -u postgres pg_dumpall > "$TMP_DIR"/local_dumpall.pgsql
+ debug "Diff alldumps from Postgres local"
+ # Check if there are differences between the actual dump and the last dump
+ backup_file_handler "$TMP_DIR $BACKUP_DIR" local_dumpall.pgsql
+}
+
+function pg_local_single {
+ # Get a list with all databases on localhost. Do it as user postgres (Debian)
+ # parallelize the following
+ for DB in $(sudo -H -i -u postgres /usr/bin/psql -At -c "SELECT datname FROM pg_database WHERE NOT datistemplate AND datallowconn ORDER BY datname;" postgres)
+ do
+ debug "Dumping local database $DB"
+ # Dump each database in a single file
+ sudo -H -i -u postgres /usr/bin/pg_dump -Fp "$DB" > "$TMP_DIR"/local_"$DB".pgsql
+ backup_file_handler "$TMP_DIR" "$BACKUP_DIR" local_"$DB".pgsql
+ echo ""
+ done
+}
+
+# Do the local backupjobs
+
+function run_local_pg_backups {
+ # Test if the current backupuser has access via sudo to postgres
+ # This part has to be improved!
+ sudo -l -U "$BACKUPUSER" | grep postgres
+ if [ $? -eq 0 ];then
+ # If the user has access vi sudo to postgres and a full dump is configured, do it.
+ if [ "$POSTGRES_BACKUP_LOCAL_DUMP_ALL" == "TRUE" ]; then
+ pg_local_all
+ fi
+ # If the user has access vi sudo to postgres and dumps for each database is configured , do it.
+ if [ "$POSTGRES_BACKUP_LOCAL_SINGLE" == "TRUE" ]; then
+ pg_local_single
+ fi
+ else
+ # If the user is not permitted to acces the postgresdatabases vi sudo throw an errormessage
+ echo "" | $LOGGER
+ echo "The backupuser does not the permission to act as user postgres" | $LOGGER
+ echo "Please add the following line to your /etc/sudoers:" | $LOGGER
+ echo "backupuser ALL=(postgres) NOPASSWD: /usr/bin/psql,/usr/bin/pg_dump" | $LOGGER
+ echo "" | $LOGGER
+ fi
+}
+
+################################################################################
+
+# Postgres remote
+#
+# All databases on remotehosts defined in the ~/.pgpass file will be backuped.
+# So the ~/.pgpass is the configurationfile for this part!
+
+function dump_remote_pgdb {
+ # Translate params ;-)
+ TRGTHOST=$1
+ TRGTPORT=$2
+ TRGTDB=$3
+ TRGTBDUSER=$4
+ # If debug is enabled, check the translated params
+ debug "PostgreSQL:"
+ debug " Host: $TRGTHOST"
+ debug " Port: $TRGTPORT"
+ debug " Database: $TRGTDB"
+ debug " User: $TRGTBDUSER"
+ debug "Testing TLS-Connection"
+ # Check if the connection to the postgres-server are encryptet (here we force with sslmode=require)
+ psql -U "$TRGTBDUSER" postgresql://"$TRGTHOST":"$TRGTPORT"/"$TRGTDB"?sslmode=require -c '\conninfo' | grep TLS > /dev/null 2>&1
+ if [ "$?" -eq "0" ]; then
+ debug "Dumping remote database $TRGTHOST-$TRGTDB"
+ # If we successfuly testet the encrypted connection to the postgres-server we try to force the sslmode
+ # I don't know if the following statement really effect to pg_dump :-(
+ export PGSSLMODE=require
+ # Dump the databases which are defined in the params
+ /usr/bin/pg_dump -U "$TRGTBDUSER" -h "$TRGTHOST" -p "$TRGTPORT" "$TRGTDB" > "$TMP_DIR"/"$TRGTHOST"-"$TRGTDB".pgql
+ backup_file_handler "$TMP_DIR" "$BACKUP_DIR" "$TRGTHOST"-"$TRGTDB".pgql
+ else
+ # If no encrypted connection to the postgres-server can be established throw an errormessage
+ echo "" | $LOGGER
+ echo "Could not establish a TLS encrypted connection the the databasehost." | $LOGGER
+ echo "Please configure the connections with hostssl in pg_hba.conf." | $LOGGER
+ echo "" | $LOGGER
+ fi
+ echo ""
+}
+
+function run_remote_pg_backups {
+ # Check if the remoebackup for postgres is configured
+ if [ "$POSTGRES_BACKUP_REMOTE" = "TRUE" ]; then
+ # If yes the check for the ~/.pgpass-file. Here are the remotedatabases specified
+ if [ -r ~/.pgpass ]; then
+ # parallelize the following
+ while read -r LINE; do
+ # For each entry do the backup
+ debug "run dump with params $LINE"
+ # CAUTION: No doublequotes in the following line. The var $LINE has to be splittet!
+ dump_remote_pgdb $LINE
+ # To get the params for the function the .pgpass-file is striped from the comments,
+ # the ":" are replaces against whitespaces and only the first four coloums are used
+ # so we give "host port database user" to the function
+ done <<< "$(cat ~/.pgpass | grep -v '#' | tr ":" " " | cut -d " " -f1,2,3,4)"
+ else
+ # If the ~/.pgpass-file is missig, throw an errormessage
+ echo "" | $LOGGER
+ echo "The ~/.pgpass file is missing, no remote postgres databases will be backuped." | $LOGGER
+ echo "If you want do backup postgres reomte databases, please create a ~/.pgpass file in the homedirectory of your backupuser (https://wiki.postgresql.org/wiki/Pgpass)." | $LOGGER
+ echo "" | $LOGGER
+ fi
+ fi
+ echo ""
+}
+
+function postgres_main {
+ if [ "$POSTGRES_BACKUP_LOCAL" = "TRUE" ]; then
+ run_local_pg_backups
+ fi
+ if [ "$POSTGRES_BACKUP_REMOTE" = "TRUE" ]; then
+ run_remote_pg_backups
+ fi
+}
\ No newline at end of file
diff --git a/install.sh b/install.sh
new file mode 100644
index 0000000..e53672a
--- /dev/null
+++ b/install.sh
@@ -0,0 +1,11 @@
+#/bin/bash
+
+# ToDo
+#
+# 1. Set installationpath (e.g. /usr/ or /usr/local/) => INSTPATH
+# 2. Generate directories
+# - $INSTPATH/lib/dbb
+# 3. Check if it is an local user installation odr a global system installation
+# 4. If it is a global installation mkdit /etc/dbb.cfg.d an cop dbb.cf to /etc
+# If it is an local user installation create ~/.dbb.cfg.d an cop dbb.cfg to ~/.ddb.cfg
+# 5. Copy dbb to $INSTALLPATH/bin/dbb and create symlink from $INSTALLPATH/bin/dbb to $INSTALLPATH/bin/dbbi
\ No newline at end of file
--
Gitblit v1.10.0