1 | #!/bin/bash |
---|
2 | |
---|
3 | # Update the dev site with the latest data from the live site |
---|
4 | # which is backed up to /home/live/new-live-data/ |
---|
5 | |
---|
6 | LIVE_ROOT=/home/live/quince |
---|
7 | LIVE_LATEST_MYSQL_DUMP=`ls -at $LIVE_ROOT/var/backups/mysql/* | head -1` |
---|
8 | WORKING_DIR=/tmp/live2dev-$$ |
---|
9 | DEV_DOMAIN=dev.transitionnetwork.org |
---|
10 | TEST_DOMAIN=test.transitionnetwork.org |
---|
11 | DEV_WORKSPACES_DB=devworkspace |
---|
12 | TEST_WORKSPACES_DB=test_workspaces |
---|
13 | |
---|
14 | # Make sure only root can run our script |
---|
15 | if [ "$(id -u)" != "0" ]; then |
---|
16 | echo "This script must be run as root" 1>&2 |
---|
17 | exit 1 |
---|
18 | fi |
---|
19 | if [[ $HOME != "/root" ]]; then |
---|
20 | echo "This script must be run as root user not via sudo" 1>&2 |
---|
21 | exit 1 |
---|
22 | fi |
---|
23 | |
---|
24 | printf "Have you run /usr/local/bin/backup2kiwi on quince.webarch.net? (y): " |
---|
25 | read REMOTE_SCRIPT_RUN |
---|
26 | if [[ "$REMOTE_SCRIPT_RUN" = "y" ]]; then |
---|
27 | |
---|
28 | # create a working directory |
---|
29 | if [[ -d $WORKING_DIR ]]; then |
---|
30 | echo "Oops $WORKING_DIR already exists" |
---|
31 | exit |
---|
32 | else |
---|
33 | mkdir $WORKING_DIR |
---|
34 | fi |
---|
35 | |
---|
36 | # check if the site to update has been passed on the command line |
---|
37 | if [[ $1 ]]; then |
---|
38 | if [[ $1 = "dev" || $1 = "test" ]]; then |
---|
39 | SITE=$1 |
---|
40 | echo "Updating the $1 site" |
---|
41 | else |
---|
42 | echo "You need to specify either dev or test as the first argument" |
---|
43 | exit |
---|
44 | fi |
---|
45 | fi |
---|
46 | |
---|
47 | # ask the user which site to update |
---|
48 | if [[ -z $1 ]]; then |
---|
49 | printf "Which site would you like to update, dev or test? (dev|test)?" |
---|
50 | read SITE |
---|
51 | if [[ $SITE = "dev" || $SITE = "test" ]]; then |
---|
52 | echo "Updating the $SITE site" |
---|
53 | else |
---|
54 | echo "You need to type dev or test" |
---|
55 | exit |
---|
56 | fi |
---|
57 | fi |
---|
58 | |
---|
59 | # set the domain vairable |
---|
60 | if [[ $SITE = "dev" ]]; then |
---|
61 | DOMAIN=$DEV_DOMAIN |
---|
62 | fi |
---|
63 | if [[ $SITE = "test" ]]; then |
---|
64 | DOMAIN=$TEST_DOMAIN |
---|
65 | fi |
---|
66 | |
---|
67 | |
---|
68 | # get the latest backup for the live server |
---|
69 | if [[ -f $LIVE_LATEST_MYSQL_DUMP ]]; then |
---|
70 | echo "Unzipping $LIVE_LATEST_MYSQL_DUMP to $WORKING_DIR" |
---|
71 | # change to the working directory and unzip the live sql tar ball |
---|
72 | cd $WORKING_DIR |
---|
73 | tar -zxvf $LIVE_LATEST_MYSQL_DUMP |
---|
74 | # change to the dir with the sql files in |
---|
75 | DB_DUMP=`echo $LIVE_LATEST_MYSQL_DUMP | sed -e 's/\/home\/live\/quince\/var\/backups\/mysql\///' | sed -e 's/_\.tar\.gz//'` |
---|
76 | cd $DB_DUMP |
---|
77 | else |
---|
78 | echo "There was a problem finding the live MySQL dump file" |
---|
79 | exit 1 |
---|
80 | fi |
---|
81 | |
---|
82 | # update the databases, the root users passwd is in /root/.my.cnf |
---|
83 | echo " " |
---|
84 | echo "Now updating the $SITE database, this will take some time..." |
---|
85 | LIVE_LATEST_MYSQL_FILES=`ls *_live* | grep -v workspaces` |
---|
86 | |
---|
87 | #echo $LIVE_LATEST_MYSQL_FILES > sqlfiles.list |
---|
88 | #echo "check $WORKING_DIR/$DB_DUMP/sqlfiles.list" |
---|
89 | |
---|
90 | cat $LIVE_LATEST_MYSQL_FILES | mysql $SITE |
---|
91 | |
---|
92 | #exit 1 |
---|
93 | |
---|
94 | # apply some fixes for running it as a dev server |
---|
95 | echo "UPDATE system SET status=0 WHERE name LIKE '%messag%' OR name LIKE '%notif%' OR name LIKE '%mailchimp%';" | mysql $SITE |
---|
96 | echo "UPDATE users SET mail=\"transition-$SITE@webarchitects.co.uk\";" | mysql $SITE |
---|
97 | echo "UPDATE users SET mail=\"edmitchell@transitionnetwork.org\" WHERE users.name=\"Ed Mitchell\";" | mysql $SITE |
---|
98 | echo "UPDATE users SET mail=\"jim@i-jk.co.uk\" WHERE users.name=\"Jim Kirkpatrick\";" | mysql $SITE |
---|
99 | echo "UPDATE users SET mail=\"john_mcgeechan@yahoo.co.uk\" WHERE users.name=\"John McGeechan\";" | mysql $SITE |
---|
100 | echo "UPDATE users SET mail=\"laura@popokatea.co.uk\" WHERE users.name=\"Laura Whitehead\";" | mysql $SITE |
---|
101 | echo "UPDATE users SET mail=\"chris@webarchitects.co.uk\" WHERE users.name=\"Chris Croome\";" | mysql $SITE |
---|
102 | echo "UPDATE variable SET value=`/usr/local/bin/serialize.sh http://$DOMAIN` where name=\"securepages_basepath\";" | mysql $SITE |
---|
103 | echo "UPDATE variable SET value=`/usr/local/bin/serialize.sh https://$DOMAIN` where name=\"securepages_basepath_ssl\";" | mysql $SITE |
---|
104 | echo "UPDATE variable SET value=`/usr/local/bin/serialize.sh /tmp` where name=\"file_directory_temp\";" | mysql $SITE |
---|
105 | echo "UPDATE variable SET value=`/usr/local/bin/serialize.sh sites/default/files` where name=\"file_directory_path\";" | mysql $SITE |
---|
106 | |
---|
107 | # update workspaces database |
---|
108 | LIVE_WORKSPACES_LATEST_MYSQL_FILES=`ls *_live_workspaces*` |
---|
109 | |
---|
110 | if [[ $SITE = "dev" ]]; then |
---|
111 | cat $LIVE_WORKSPACES_LATEST_MYSQL_FILES | mysql $DEV_WORKSPACES_DB |
---|
112 | echo "UPDATE system SET status=0 WHERE name LIKE '%messag%' OR name LIKE '%notif%' OR name LIKE '%mailchimp%';" | mysql $DEV_WORKSPACES_DB |
---|
113 | echo "UPDATE variable SET value=`/usr/local/bin/serialize.sh /tmp` where name=\"file_directory_temp\";" | mysql $DEV_WORKSPACES_DB |
---|
114 | echo "UPDATE variable SET value=`/usr/local/bin/serialize.sh sites/workspaces.$DOMAIN/files` where name=\"file_directory_path\";" | mysql $DEV_WORKSPACES_DB |
---|
115 | fi |
---|
116 | if [[ $SITE = "test" ]]; then |
---|
117 | cat $LIVE_WORKSPACES_LATEST_MYSQL_FILES | mysql $TEST_WORKSPACES_DB |
---|
118 | echo "UPDATE system SET status=0 WHERE name LIKE '%messag%' OR name LIKE '%notif%' OR name LIKE '%mailchimp%';" | mysql $TEST_WORKSPACES_DB |
---|
119 | echo "UPDATE variable SET value=`/usr/local/bin/serialize.sh /tmp` where name=\"file_directory_temp\";" | mysql $TEST_WORKSPACES_DB |
---|
120 | echo "UPDATE variable SET value=`/usr/local/bin/serialize.sh sites/workspaces.$DOMAIN/files` where name=\"file_directory_path\";" | mysql $TEST_WORKSPACES_DB |
---|
121 | fi |
---|
122 | |
---|
123 | # copy the files across |
---|
124 | echo "Updating the uploaded files" |
---|
125 | if [[ -d $LIVE_ROOT/web/transitionnetwork.org/www/sites/default/files/ ]]; then |
---|
126 | rsync -qv --exclude=cache --exclude=filecache --exclude=imagecache \ |
---|
127 | $LIVE_ROOT/web/transitionnetwork.org/www/sites/default/files/ \ |
---|
128 | /web/$SITE.transitionnetwork.org.webarch.net/www/sites/default/files/ |
---|
129 | chown -R www-data:www-data /web/$SITE.transitionnetwork.org.webarch.net/www/sites/default/files/ |
---|
130 | else |
---|
131 | echo "The source directory doesn't exist, $LIVE_ROOT/web/transitionnetwork.org/www/sites/default/files/" |
---|
132 | fi |
---|
133 | |
---|
134 | if [[ -d $LIVE_ROOT/web/transitionnetwork.org/www/sites/workspaces.transitionnetwork.org/files/ ]]; then |
---|
135 | rsync -qv --exclude=cache --exclude=filecache --exclude=imagecache \ |
---|
136 | $LIVE_ROOT/web/transitionnetwork.org/www/sites/workspaces.transitionnetwork.org/files/ \ |
---|
137 | /web/$SITE.transitionnetwork.org.webarch.net/www/sites/workspaces.$SITE.transitionnetwork.org.webarch.net/files/ |
---|
138 | chown -R www-data:www-data /web/$SITE.transitionnetwork.org.webarch.net/www/sites/workspaces.$SITE.transitionnetwork.org.webarch.net/files/ |
---|
139 | else |
---|
140 | echo "The source directory doesn't exist, $LIVE_ROOT/web/transitionnetwork.org/www/sites/workspaces.transitionnetwork.org/files/" |
---|
141 | fi |
---|
142 | |
---|
143 | echo "Cleaning up $WORKING_DIR directory" |
---|
144 | rm -rf $WORKING_DIR |
---|
145 | |
---|
146 | else |
---|
147 | exit 1 |
---|
148 | fi |
---|
149 | |
---|