annotate scripts/backup-container.sh @ 406:3508fd2d323a production 2.14.0

flow: Merged <release> '2.14.0' to <master> ('production').
author Jason Klinger <klinger@nwoca.org>
date Fri, 20 May 2022 20:14:22 +0100
parents 2cb1093f9aef
children
rev   line source
54
334d65dac778 add hash bangs to specify bash shell
smith@nwoca.org
parents: 28
diff changeset
1 #!/bin/bash
159
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
2 # Executes a database backup for the specifed database container.
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
3 # The current directory is expected to contaion a project configured
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
4 # as with SSDT conventions for an application database.
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
5 #
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
6 # When successful, the output file will be in ./backup with the
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
7 # container name and timestamp in the file. The format of the output
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
8 # is a compressed pg_dump (sql) format.
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
9 #
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
10 container=${1?Must provide container name to backup}
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
11
188
2f5f41d237e7 DEP-12: fix backup script.
smith@nwoca.org
parents: 186
diff changeset
12 projectDir=${2:-$PWD}
2f5f41d237e7 DEP-12: fix backup script.
smith@nwoca.org
parents: 186
diff changeset
13
2f5f41d237e7 DEP-12: fix backup script.
smith@nwoca.org
parents: 186
diff changeset
14 cd $projectDir
2f5f41d237e7 DEP-12: fix backup script.
smith@nwoca.org
parents: 186
diff changeset
15
159
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
16 source "${SSDT_SCRIPTS:-$(dirname "${BASH_SOURCE[0]}")}/.functions.sh"
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
17
287
4cc087cde1d0 backup script additions and changes
aldrich@nwoca.org
parents: 280
diff changeset
18 project=$(composeGetProject)
4cc087cde1d0 backup script additions and changes
aldrich@nwoca.org
parents: 280
diff changeset
19
321
2cb1093f9aef making changes to remote backup scripts to account for no IRN
aldrich@ssdt-ohio.org
parents: 320
diff changeset
20 #If the project is empty, we want to stop the process because this is being run from the wrong directory
2cb1093f9aef making changes to remote backup scripts to account for no IRN
aldrich@ssdt-ohio.org
parents: 320
diff changeset
21
2cb1093f9aef making changes to remote backup scripts to account for no IRN
aldrich@ssdt-ohio.org
parents: 320
diff changeset
22 if [ "$project" == "" ]; then
2cb1093f9aef making changes to remote backup scripts to account for no IRN
aldrich@ssdt-ohio.org
parents: 320
diff changeset
23 echo "no project available"
2cb1093f9aef making changes to remote backup scripts to account for no IRN
aldrich@ssdt-ohio.org
parents: 320
diff changeset
24 exit 1
2cb1093f9aef making changes to remote backup scripts to account for no IRN
aldrich@ssdt-ohio.org
parents: 320
diff changeset
25 fi
2cb1093f9aef making changes to remote backup scripts to account for no IRN
aldrich@ssdt-ohio.org
parents: 320
diff changeset
26
159
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
27 set -o pipefail
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
28 mkdir -p ./backup
314
d78b45c28205 backup script adding IRN to name
aldrich@ssdt-ohio.org
parents: 287
diff changeset
29 ##
320
58c49a386a11 making changes to remote backup scripts to create directory
aldrich@ssdt-ohio.org
parents: 314
diff changeset
30 ##This one puts a space before the IRN
314
d78b45c28205 backup script adding IRN to name
aldrich@ssdt-ohio.org
parents: 287
diff changeset
31 IRN=$(docker-compose exec -T $container psql --username=postgres --dbname=$container -t -c 'select irn from organization')
d78b45c28205 backup script adding IRN to name
aldrich@ssdt-ohio.org
parents: 287
diff changeset
32 ##Trim function in postgres didn't work - so take out the extra space this way.
d78b45c28205 backup script adding IRN to name
aldrich@ssdt-ohio.org
parents: 287
diff changeset
33 IRN=`echo $IRN | sed -e 's/^[[:space:]]*//'`
159
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
34
320
58c49a386a11 making changes to remote backup scripts to create directory
aldrich@ssdt-ohio.org
parents: 314
diff changeset
35 ## if database is empty, it will put IRN 000000
58c49a386a11 making changes to remote backup scripts to create directory
aldrich@ssdt-ohio.org
parents: 314
diff changeset
36 if [ "$IRN" == "" ]; then
58c49a386a11 making changes to remote backup scripts to create directory
aldrich@ssdt-ohio.org
parents: 314
diff changeset
37 echo "no IRN set,using 000000"
58c49a386a11 making changes to remote backup scripts to create directory
aldrich@ssdt-ohio.org
parents: 314
diff changeset
38 IRN=000000
58c49a386a11 making changes to remote backup scripts to create directory
aldrich@ssdt-ohio.org
parents: 314
diff changeset
39 fi
58c49a386a11 making changes to remote backup scripts to create directory
aldrich@ssdt-ohio.org
parents: 314
diff changeset
40
314
d78b45c28205 backup script adding IRN to name
aldrich@ssdt-ohio.org
parents: 287
diff changeset
41 backupFile=./backup/${IRN}${project}-${container}.$(date +%Y-%m-%d-%H-%M-%S).backup
320
58c49a386a11 making changes to remote backup scripts to create directory
aldrich@ssdt-ohio.org
parents: 314
diff changeset
42
321
2cb1093f9aef making changes to remote backup scripts to account for no IRN
aldrich@ssdt-ohio.org
parents: 320
diff changeset
43 echo "Project is $project"
2cb1093f9aef making changes to remote backup scripts to account for no IRN
aldrich@ssdt-ohio.org
parents: 320
diff changeset
44 echo "Container is $container"
2cb1093f9aef making changes to remote backup scripts to account for no IRN
aldrich@ssdt-ohio.org
parents: 320
diff changeset
45 echo "IRN is $IRN"
314
d78b45c28205 backup script adding IRN to name
aldrich@ssdt-ohio.org
parents: 287
diff changeset
46
d78b45c28205 backup script adding IRN to name
aldrich@ssdt-ohio.org
parents: 287
diff changeset
47 echo "backup file ${backupFile}"
274
7723b18b112b add debuging logic for omeresa
smith@nwoca.org
parents: 267
diff changeset
48 echo "preparing to backup ${container} on current project at ${projectDir}:"
7723b18b112b add debuging logic for omeresa
smith@nwoca.org
parents: 267
diff changeset
49 echo " "
7723b18b112b add debuging logic for omeresa
smith@nwoca.org
parents: 267
diff changeset
50
159
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
51
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
52
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
53 echo "starting backup of $container for $project"
188
2f5f41d237e7 DEP-12: fix backup script.
smith@nwoca.org
parents: 186
diff changeset
54 docker-compose exec -T $container sh -c "gosu postgres pg_dump -Cc --if-exists --dbname=$container ; (exit $?) " > ${backupFile}
159
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
55
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
56 if [[ $( grep --count "CREATE TABLE" ${backupFile} ) -lt 200 || $( grep --count "PostgreSQL database dump complete" ${backupFile} ) -eq 0 ]]; then
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
57 echo "ERROR: backup verification FAILED"
320
58c49a386a11 making changes to remote backup scripts to create directory
aldrich@ssdt-ohio.org
parents: 314
diff changeset
58 echo "Error: empty database"
267
fcee81af7e71 simplify method of getting project name
smith@nwoca.org
parents: 188
diff changeset
59 echo "ERROR: $(tail ${backupFile})"
320
58c49a386a11 making changes to remote backup scripts to create directory
aldrich@ssdt-ohio.org
parents: 314
diff changeset
60 # We want the process to continue even if the db is blank
58c49a386a11 making changes to remote backup scripts to create directory
aldrich@ssdt-ohio.org
parents: 314
diff changeset
61 # exit 1
159
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
62 fi
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
63
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
64 gzip ${backupFile}
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
65
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
66
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
67 echo "completed backup of $container for $project to ${backupFile}"
303259c08b7d DEP-12: update backup scripts
smith@nwoca.org
parents: 54
diff changeset
68