-
Notifications
You must be signed in to change notification settings - Fork 0
/
psql.sh
127 lines (108 loc) · 3.18 KB
/
psql.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
122
123
124
125
126
127
#!/bin/bash
# For PostgreSQL
# Configuration #
DBNAME=testdb
USERNAME=testuser
HOST=localhost
SQL_FILENAME=db_backup.sql
JSON_FILENAME=db_backup.json
APP_DIR=/var/www/vhost/test.unicrow.com # Do not use slash at the end
#################
# FIRST STEP #
echo -e -n """\033[0;96m
|| || || || || |||||||| |||||| |||||| || || ||
|| || |||| || || || || || || || || |||| ||
|| || || |||| || || ||||| || || |||| ||||
|||||||| || || || |||||||| || || |||||| || ||
\033[0;97m"""
echo -en "\nControl File"
BACKUP_ERROR=false
BACKUP_NAME=$(date +"%d.%m.%Y")
BACKUP_LOGFILE=$APP_DIR/backup/uncompressed/$BACKUP_NAME/backup.log
{
cd $APP_DIR >/dev/null 2>&1
} || {
echo -en "\n* \033[0;31m$APP_DIR not found!\033[0;97m"
BACKUP_ERROR=true
}
if [ $BACKUP_ERROR == false ]; then
{
mkdir backup >/dev/null 2>&1 && echo -en "\n* Create: \033[0;32m`pwd`/backup\033[0;97m"
} || {
echo -en "\n* Already exist: \033[0;32m`pwd`/backup\033[0;97m"
}
cd backup
{
mkdir compressed >/dev/null 2>&1 && echo -en "\n* Create: \033[0;32m`pwd`/compressed\033[0;97m"
} || {
echo -en "\n* Already exist: \033[0;32m`pwd`/compressed\033[0;97m"
}
{
mkdir uncompressed >/dev/null 2>&1 && echo -en "\n* Create: \033[0;32m`pwd`/uncompressed\033[0;97m"
} || {
echo -en "\n* Already exist: \033[0;32m`pwd`/uncompressed\033[0;97m"
}
cd uncompressed
rm -r $BACKUP_NAME >/dev/null 2>&1
mkdir $BACKUP_NAME
cd $BACKUP_NAME
touch $BACKUP_LOGFILE
fi
##############
# BACKUP #
if [ $BACKUP_ERROR == false ]; then
echo -en "\n\nBackup"
fi
# SQL
if [ $BACKUP_ERROR == false ]; then
{
export LC_ALL="en_US.UTF-8"
pg_dump -U $USERNAME -w -h $HOST -d $DBNAME -f $SQL_FILENAME >> $BACKUP_LOGFILE && echo -en "\n* \033[0;32msql\033[0;97m"
} || {
echo -en "\n* \033[0;31msql\033[0;97m"
BACKUP_ERROR=true
}
fi
# JSON
if [ $BACKUP_ERROR == false ]; then
{
source $APP_DIR/web/env/bin/activate >> $BACKUP_LOGFILE &&
$APP_DIR/web/source/manage.py dumpdata -e contenttypes > $JSON_FILENAME &&
deactivate >> $BACKUP_LOGFILE && echo -en "\n* \033[0;32mjson\033[0;97m"
} || {
echo -en "\n* \033[0;31mjson\033[0;97m"
BACKUP_ERROR=true
}
fi
# MEDIA
if [ $BACKUP_ERROR == false ]; then
{
cp -R $APP_DIR/web/source/media/ . >> $BACKUP_LOGFILE && echo -en "\n* \033[0;32mmedia\033[0;97m"
} || {
echo -en "\n* \033[0;31mmedia\033[0;97m"
BACKUP_ERROR=true
}
fi
##############
# COMPRESS #
if [ $BACKUP_ERROR == false ]; then
echo -en "\n\nCompress"
{
cd $APP_DIR/backup/uncompressed/ >> $BACKUP_LOGFILE &&
zip -r ../compressed/$BACKUP_NAME.zip $BACKUP_NAME/ >> $BACKUP_LOGFILE &&
echo -en "\n* \033[0;32mcompleted\033[0;97m"
} || {
echo -en "\n* \033[0;32merror\033[0;97m"
BACKUP_ERROR=true
}
fi
##############
if [ $BACKUP_ERROR == false ]; then
echo -en "\n\n\033[0;32mEnd of Backup\033[0;97m\n\n"
else
echo -en "\n\n\033[0;31mBackup Error!\033[0;97m"
echo -en "\n\033[0;33mNote: Check Configuration\033[0;97m\n\n"
cd $APP_DIR/backup >/dev/null 2>&1
rm -r uncompressed/$BACKUP_NAME >/dev/null 2>&1
rm -r compressed/$BACKUP_NAME.zip >/dev/null 2>&1
fi