-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathostrestore.sh
153 lines (132 loc) · 3.66 KB
/
ostrestore.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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#!/bin/bash
#
# Bash script for restoring backups of OSticket.
# Usage: ./ostrestore.sh <BackupName> (e.g. ./ostrestore.sh 20170910_132703)
#
# Based upon https://github.com/DecaTec/Nextcloud-Backup-Restore
#
# IMPORTANT
# You have to customize this script (directories, users, etc.) for your actual environment.
# All entries which need to be customized are tagged with "TODO".
#
# Variables
# TODO: The directory where you store the OSticket backups
mainBackupDir="/mnt/share/OSticketBackups/"
restore=$1
currentRestoreDir="${mainBackupDir}/${restore}"
# TODO: The directory of your OSticket installation (this is a directory under your web root)
osticketFileDir="/var/www/osticket"
# TODO: If you have a separate attachment directory uncomment this line as well as the section to restore this directory below
#osticketDataDir="/var/OSattachments"
# TODO: The service name of the web server. Used to start/stop web server (e.g. 'service <webserverServiceName> start')
webserverServiceName="apache2"
# TODO: Your OSticket database name
osticketDatabase="osticketdb"
# TODO: Your OSticket database user
dbUser="osticket"
# TODO: The password of the OSticket database user
dbPassword="PaSSw0rd"
# TODO: Your web server user
webserverUser="www-data"
# File names for backup files
# If you prefer other file names, you'll also have to change the ostbackup.sh script.
fileNameBackupFileDir="OSticket-filedir.tar.gz"
fileNameBackupDataDir="OSticket-datadir.tar.gz"
fileNameBackupDb="OSticket-db.sql"
# Function for error messages
errorecho() { cat <<< "$@" 1>&2; }
#
# Check if parameter given
#
if [ $# != "1" ]
then
errorecho "ERROR: No backup name to restore given!"
errorecho "Usage: ./ostrestore.sh 'BackupDate'"
exit 1
fi
#
# Check for root
#
if [ "$(id -u)" != "0" ]
then
errorecho "ERROR: This script has to be run as root!"
exit 1
fi
#
# Check if backup dir exists
#
if [ ! -d "${currentRestoreDir}" ]
then
errorecho "ERROR: Backup ${restore} not found!"
exit 1
fi
#
# Stop web server
#
echo "Stopping web server..."
service "${webserverServiceName}" stop
echo "Done"
echo
#
# Delete old OSticket direcories
#
echo "Deleting old OSticket file directory..."
rm -r "${osticketFileDir}"
mkdir -p "${osticketFileDir}"
echo "Done"
echo
#
#uncomment this section if you have separate attachement directory
#
echo "Deleting old OSticket data directory..."
rm -r "${osticketDataDir}"
mkdir -p "${osticketDataDir}"
echo "Done"
echo
#
# Restore file and data directory
#
echo "Restoring OSticket file directory..."
tar -xpzf "${currentRestoreDir}/${fileNameBackupFileDir}" -C "${osticketFileDir}"
echo "Done"
echo
#
#uncomment this section if you have separate attachement directory
#
echo "Restoring OSticket data directory..."
tar -xpzf "${currentRestoreDir}/${fileNameBackupDataDir}" -C "${osticketDataDir}"
echo "Done"
echo
#
# Restore database
#
echo "Dropping old OSticket DB..."
mysql -h localhost -u "${dbUser}" -p"${dbPassword}" -e "DROP DATABASE ${osticketDatabase}"
echo "Done"
echo
echo "Creating new DB for osticket..."
mysql -h localhost -u "${dbUser}" -p"${dbPassword}" -e "CREATE DATABASE ${osticketDatabase}"
echo "Done"
echo
echo "Restoring backup DB..."
mysql -h localhost -u "${dbUser}" -p"${dbPassword}" "${osticketDatabase}" < "${currentRestoreDir}/${fileNameBackupDb}"
echo "Done"
echo
#
# Start web server
#
echo "Starting web server..."
service "${webserverServiceName}" start
echo "Done"
echo
#
# Set directory permissions
#
echo "Setting directory permissions..."
chown -R "${webserverUser}":"${webserverUser}" "${osticketFileDir}"
chown -R "${webserverUser}":"${webserverUser}" "${osticketDataDir}"
echo "Done"
echo
echo
echo "DONE!"
echo "Backup ${restore} successfully restored."