-
Notifications
You must be signed in to change notification settings - Fork 1
/
postgresql-backup.sh
121 lines (102 loc) · 3.05 KB
/
postgresql-backup.sh
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#!/bin/bash
#
# Backup Tool 0.3
#
# Programm von Netstack GbR written by Andreas Pfeiffer
#
# Dieses Programm wurde für PostgreSQL Datenbank backups mehrerer Datenbanken vorgesehen!
#
################# CONFIG #####################
backupdir=/path/to/backupdir # Verzeichniss wo die Backups abgelegt werden, es werden automatisch unterordner "mysql" und "files" erstellt.
datenbank=(db1 db2 db3) # Datenbanken welche gesichert werden sollen
date1=$(date +%u) # Datumsformat welches an die Dateien angehangen wird
hostname=$(hostname -f) # Hostname
mailsubject="Postgres-Backup - $hostname" # Mail Betreff
mailtext=/tmp/mailtext.txt # Mailtext zum Versand
email=email@example.com # Empfaenger der Status Mails
date2=$(date +%A" "%d.%m.%Y) # Datum für E-Mail
################# CONFIG END #################
#Clear mailtext
echo " " > $mailtext;
#Aktuelles Datum
echo "#############################################################" >> $mailtext
echo "Postgres Backup Script from $hostname - "$date2 >> $mailtext
echo "#############################################################" >> $mailtext
echo "" >> $mailtext
# Check Backupdir
if test -d $backupdir
then
echo "";
else
echo -n "Create Backupdirectory ... " >> $mailtext
mkdir $backupdir
if test -d $backupdir
then
echo -n "done" >> $mailtext
echo "\n" >> $mailtext
else
echo -n "Error - Cant create backupdirectory" >> $mailtext
exit 1;
fi
fi
# Check Backupdir for postgresql
if test -d $backupdir/postgresql
then
echo "";
else
echo -n "Create Backupdirectory for postgresql ... " >> $mailtext
mkdir $backupdir/postgresql
if test -d $backupdir/postgresql
then
echo -n "done" >> $mailtext
echo "\n" >> $mailtext
else
echo -n "Error - Cant create backupdirectory for postgresql" >> $mailtext
exit 1;
fi
fi
###########################
# Start PostgreSQL Backup #
###########################
#count databaeses from config
count=${#datenbank[*]};
for (( i=0; i<$count; i++ ))
do
#reset Error Variable
dumperror="0";
db=${datenbank[$i]}
echo " ";
# Dump PostgreSQL DB
echo -n "create dump for db: \"$db\" ... " >> $mailtext
pg_dump -Fc $db > $backupdir/postgresql/$db'_'$date1.sql
if [ $? == "0" ]
then
echo -n " done " >> $mailtext
sqlfile=$backupdir/postgresql/$db'_'$date1.sql
echo " " >> $mailtext
else
echo -n " Error " >> $mailtext
dumperror="1";
echo " " >> $mailtext
fi
# Gzip MYSQL Dump
echo -n "gzip dump for db: \"$db\" ... " >> $mailtext
if [ $dumperror == "0" ]
then
gzip -f -9 $sqlfile
if [ $? == "0" ]
then
echo -n " done " >> $mailtext
echo " " >> $mailtext
else
echo -n " Error " >> $mailtext
echo " " >> $mailtext
fi
else
echo -n " Error " >> $mailtext
echo " " >> $mailtext
fi
done
# Mailversand
cat $mailtext | mail -a "From: SERVERNAME <example@example.com>" -s "$mailsubject" $email
exit 0;