aboutsummaryrefslogtreecommitdiff
path: root/handlers/pgsql.helper.in
blob: 80246167dcfc174b37bbc6088ddf7923a95a5250 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# -*- mode: sh; sh-basic-offset: 3; indent-tabs-mode: nil; -*-

HELPERS="$HELPERS pgsql:postgresql_database_backup"

do_pgsql_vserver() {
   choose_one_vserver "$pgsql_title"
   [ $? = 0 ] || return 1
   pgsql_vsname="vsname = $REPLY"
}

do_pgsql_databases() {
   REPLY=
   while [ -z "$REPLY" ]; do
      formBegin "$pgsql_title: databases"
         formItem "Database:"
	 formItem "Database:"
	 formItem "Database:"
	 formItem "Database:"
	 formItem "Database:"
	 formItem "Database:"
	 formItem "Database:"
	 formItem "Database:"
	 formItem "Database:"
	 formItem "Database:"
      formDisplay
      [ $? = 0 ] || return 1
      pgsql_databases="databases = "
      for i in $REPLY; do
	 [ -n "$i" ] && pgsql_databases="$pgsql_databases $i"
      done
   done
}

pgsql_wizard() {

    # constants
   pgsql_title="PostgreSQL action wizard"

   # backup the host system or a Vserver?
   choose_host_or_one_vserver "$pgsql_title"
   [ $? = 0 ] || return 1
   if [ $host_or_vservers == vservers ]; then
      do_pgsql_vserver
      [ $? = 0 ] || return 1
   fi

   # backupdir
   inputBox "$pgsql_title" "Directory where to store the backups:`[ -z \"$pgsql_vsname\" ] || echo \"\n(In respect to chosen vserver's root directory)\"`" "/var/backups/postgres"
   [ $? = 1 ] && return
   pgsql_backupdir="backupdir = $REPLY"

   # databases
   booleanBox "$pgsql_title" "Do you want to backup the whole cluster? If not, you'll be offered to choose the databases to backup."
   if [ $? = 0 ]; then
      pgsql_databases="databases = all"
   else
      do_pgsql_databases
      [ $? = 0 ] || return 1
   fi

   # compress
   booleanBox "$pgsql_title" "Do you want to compress the backups?"
   if [ $? = 0 ]; then
      pgsql_compress="compress = yes"
   else
      pgsql_compress="compress = no"
   fi

   # write config file
   get_next_filename $configdirectory/20.pgsql
   cat >> $next_filename <<EOF
### backupninja PostgreSQL config file ###

# vsname = <vserver> (no default)
# what vserver to operate on, only used if vserver = yes in /etc/backupninja.conf
# if you do not specify a vsname the host will be operated on
# Note: if operating on a vserver, $VROOTDIR will be prepended to backupdir.
EOF
   if [ $host_or_vservers == vservers ]; then
      echo -e "$pgsql_vsname\n" >> $next_filename
   fi

   cat >> $next_filename <<EOF
# backupdir = <dir> (default: /var/backups/postgres)
# where to dump the backups
$pgsql_backupdir

# databases = < all | db1 db2 db3 > (default = all)
# which databases to backup. should either be the word 'all' or a 
# space separated list of database names.
# Note: when using 'all', pg_dumpall is used instead of pg_dump, which means
# that cluster-wide data (such as users and groups) are saved.
$pgsql_databases

# compress = < yes | no > (default = yes)
# if yes, compress the pg_dump/pg_dumpall output. 
$pgsql_compress

### You can also set the following variables in backupninja.conf:
# PGSQLDUMP: pg_dump path (default: /usr/bin/pg_dump)
# PGSQLDUMPALL: pg_dumpall path (default: /usr/bin/pg_dumpall)
# PGSQLUSER: user running PostgreSQL (default: postgres)

EOF
   chmod 600 $next_filename

}