瀏覽代碼

Move remote gnusocial backup to app script

Bob Mottram 8 年之前
父節點
當前提交
d27a518bca
共有 3 個文件被更改,包括 115 次插入93 次删除
  1. 22
    2
      src/freedombone-app-gnusocial
  2. 11
    91
      src/freedombone-backup-remote
  3. 82
    0
      src/freedombone-utils-backup

+ 22
- 2
src/freedombone-app-gnusocial 查看文件

@@ -69,7 +69,7 @@ function gnusocial_running_script {
69 69
 }
70 70
 
71 71
 function reconfigure_gnusocial {
72
-    echo -n ''
72
+	echo -n ''
73 73
 }
74 74
 
75 75
 function upgrade_gnusocial {
@@ -139,7 +139,27 @@ function restore_local_gnusocial {
139 139
 }
140 140
 
141 141
 function backup_remote_gnusocial {
142
-	echo -n ''
142
+	if grep -q "GNU Social domain" $COMPLETION_FILE; then
143
+		MICROBLOG_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "GNU Social domain" | awk -F ':' '{print $2}')
144
+		temp_backup_dir=/var/www/${MICROBLOG_DOMAIN_NAME}/htdocs
145
+		if [ -d $temp_backup_dir ]; then
146
+			function_check suspend_site
147
+			suspend_site ${MICROBLOG_DOMAIN_NAME}
148
+
149
+			function_check backup_database_to_friend
150
+			backup_database_to_friend gnusocial
151
+
152
+			echo $"Backing up GNU social installation"
153
+
154
+			function_check backup_directory_to_friend
155
+			backup_directory_to_friend $temp_backup_dir gnusocial
156
+
157
+			function_check restart_site
158
+			restart_site
159
+		else
160
+			echo $"GNU Social domain specified but not found in ${temp_backup_dir}"
161
+		fi
162
+	fi
143 163
 }
144 164
 
145 165
 function restore_remote_gnusocial {

+ 11
- 91
src/freedombone-backup-remote 查看文件

@@ -37,6 +37,12 @@ ENABLE_VERIFICATION="no"
37 37
 export TEXTDOMAIN=${PROJECT_NAME}-backup-remote
38 38
 export TEXTDOMAINDIR="/usr/share/locale"
39 39
 
40
+UTILS_FILES=/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-*
41
+for f in $UTILS_FILES
42
+do
43
+  source $f
44
+done
45
+
40 46
 # Temporary location for data to be backed up to other servers
41 47
 SERVER_DIRECTORY=/root/remotebackup
42 48
 
@@ -94,77 +100,6 @@ function restart_site {
94 100
 	SUSPENDED_SITE=
95 101
 }
96 102
 
97
-function backup_directory_to_friend {
98
-	BACKUP_KEY_EXISTS=$(gpg --list-keys "$ADMIN_NAME (backup key)")
99
-	if [ ! "$?" = "0" ]; then
100
-		echo $"Backup key could not be found"
101
-		restart_site
102
-		exit 43382
103
-	fi
104
-	ADMIN_BACKUP_KEY_ID=$(gpg --list-keys "$ADMIN_NAME (backup key)" | grep 'pub ' | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}')
105
-	if [ ! -d $SERVER_DIRECTORY/backup/${2} ]; then
106
-		mkdir -p $SERVER_DIRECTORY/backup/${2}
107
-	fi
108
-	obnam force-lock -r $SERVER_DIRECTORY/backup/${2} --encrypt-with ${ADMIN_BACKUP_KEY_ID} ${1}
109
-	obnam backup -r $SERVER_DIRECTORY/backup/${2} --encrypt-with ${ADMIN_BACKUP_KEY_ID} ${1}
110
-	if [[ $ENABLE_VERIFICATION == "yes" ]]; then
111
-		obnam verify -r $SERVER_DIRECTORY/backup/${2} --encrypt-with ${ADMIN_BACKUP_KEY_ID} ${1}
112
-		if [ ! "$?" = "0" ]; then
113
-			if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
114
-				shred -zu /root/temp${2}/*
115
-				rm -rf /root/temp${2}
116
-			fi
117
-			# Send a warning email
118
-			echo "Unable to verify ${2}" | mail -s "${PROJECT_NAME} backup to friends" ${ADMIN_EMAIL_ADDRESS}
119
-			restart_site
120
-			exit 953
121
-		fi
122
-	fi
123
-	obnam forget --keep=30d -r $SERVER_DIRECTORY/backup/${2} --encrypt-with ${ADMIN_BACKUP_KEY_ID}
124
-	if [ ! "$?" = "0" ]; then
125
-		if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
126
-			shred -zu /root/temp${2}/*
127
-			rm -rf /root/temp${2}
128
-		fi
129
-		# Send a warning email
130
-		echo "Unable to backup ${2}" | mail -s "${PROJECT_NAME} backup to friends" ${ADMIN_EMAIL_ADDRESS}
131
-		restart_site
132
-		exit 853
133
-	fi
134
-	if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
135
-		shred -zu /root/temp${2}/*
136
-		rm -rf /root/temp${2}
137
-	fi
138
-}
139
-
140
-function backup_database_to_friend {
141
-	if [ ${#DATABASE_PASSWORD} -lt 2 ]; then
142
-		echo $"No MariaDB password was given"
143
-		restart_site
144
-		exit 5783
145
-	fi
146
-	if [ ! -d $SERVER_DIRECTORY/backup/${1} ]; then
147
-		mkdir -p $SERVER_DIRECTORY/backup/${1}
148
-	fi
149
-	if [ ! -d $SERVER_DIRECTORY/backup/${1}data ]; then
150
-		mkdir -p $SERVER_DIRECTORY/backup/${1}data
151
-	fi
152
-	if [ ! -d /root/temp${1}data ]; then
153
-		mkdir -p /root/temp${1}data
154
-	fi
155
-	echo "Obtaining ${1} database backup"
156
-	mysqldump --password=$DATABASE_PASSWORD ${1} > /root/temp${1}data/${1}.sql
157
-	if [ ! -s /root/temp${1}data/${1}.sql ]; then
158
-		echo $"${1} database could not be saved"
159
-		shred -zu /root/temp${1}data/*
160
-		rm -rf /root/temp${1}data
161
-		# Send a warning email
162
-		echo $"Unable to export ${1} database" | mail -s $"${PROJECT_NAME} backup to friends" $ADMIN_EMAIL_ADDRESS
163
-		restart_site
164
-		exit 5738
165
-	fi
166
-}
167
-
168 103
 function backup_configuration {
169 104
 	echo $"Backing up ${PROJECT_NAME} configuration files"
170 105
 	if [ ! -d /root/tempbackupconfig ]; then
@@ -325,22 +260,6 @@ function backup_rss {
325 260
 	fi
326 261
 }
327 262
 
328
-function backup_gnusocial {
329
-	if grep -q "GNU Social domain" $COMPLETION_FILE; then
330
-		MICROBLOG_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "GNU Social domain" | awk -F ':' '{print $2}')
331
-		if [ -d /var/www/${MICROBLOG_DOMAIN_NAME}/htdocs ]; then
332
-			suspend_site ${MICROBLOG_DOMAIN_NAME}
333
-			backup_database_to_friend gnusocial
334
-			backup_directory_to_friend /root/tempgnusocialdata gnusocialdata
335
-			echo $"Backing up GNU social installation"
336
-			backup_directory_to_friend /var/www/${MICROBLOG_DOMAIN_NAME}/htdocs gnusocial
337
-			restart_site
338
-		else
339
-			echo $"GNU Social domain specified but not found in /var/www/${MICROBLOG_DOMAIN_NAME}"
340
-		fi
341
-	fi
342
-}
343
-
344 263
 function backup_hubzilla {
345 264
 	if grep -q "Hubzilla domain" $COMPLETION_FILE; then
346 265
 		HUBZILLA_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Hubzilla domain" | awk -F ':' '{print $2}')
@@ -645,7 +564,10 @@ if [[ $TEST_MODE == "no" ]]; then
645 564
 	backup_users
646 565
 	backup_letsencrypt
647 566
 	backup_tor
648
-	backup_gnusocial
567
+	backup_web_server
568
+	backup_admin_readme
569
+	backup_mariadb
570
+
649 571
 	backup_rss
650 572
 	backup_hubzilla
651 573
 	backup_syncthing
@@ -656,13 +578,11 @@ if [[ $TEST_MODE == "no" ]]; then
656 578
 	backup_certs
657 579
 	backup_mailing_list
658 580
 	backup_xmpp
659
-	backup_web_server
660
-	backup_admin_readme
661 581
 	backup_ipfs
662 582
 	backup_dlna
663 583
 	backup_voip
664 584
 	backup_tox
665
-	backup_mariadb
585
+
666 586
 	backup_extra_directories
667 587
 fi
668 588
 

+ 82
- 0
src/freedombone-utils-backup 查看文件

@@ -281,4 +281,86 @@ function set_user_permissions {
281 281
 	done
282 282
 }
283 283
 
284
+function backup_directory_to_friend {
285
+	BACKUP_KEY_EXISTS=$(gpg --list-keys "$ADMIN_NAME (backup key)")
286
+	if [ ! "$?" = "0" ]; then
287
+		echo $"Backup key could not be found"
288
+		function_check restart_site
289
+		restart_site
290
+		exit 43382
291
+	fi
292
+	ADMIN_BACKUP_KEY_ID=$(gpg --list-keys "$ADMIN_NAME (backup key)" | grep 'pub ' | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}')
293
+	if [ ! -d $SERVER_DIRECTORY/backup/${2} ]; then
294
+		mkdir -p $SERVER_DIRECTORY/backup/${2}
295
+	fi
296
+	obnam force-lock -r $SERVER_DIRECTORY/backup/${2} --encrypt-with ${ADMIN_BACKUP_KEY_ID} ${1}
297
+	obnam backup -r $SERVER_DIRECTORY/backup/${2} --encrypt-with ${ADMIN_BACKUP_KEY_ID} ${1}
298
+	if [[ $ENABLE_VERIFICATION == "yes" ]]; then
299
+		obnam verify -r $SERVER_DIRECTORY/backup/${2} --encrypt-with ${ADMIN_BACKUP_KEY_ID} ${1}
300
+		if [ ! "$?" = "0" ]; then
301
+			if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
302
+				shred -zu /root/temp${2}/*
303
+				rm -rf /root/temp${2}
304
+			fi
305
+			# Send a warning email
306
+			echo "Unable to verify ${2}" | mail -s "${PROJECT_NAME} backup to friends" ${ADMIN_EMAIL_ADDRESS}
307
+			function_check restart_site
308
+			restart_site
309
+			exit 953
310
+		fi
311
+	fi
312
+	obnam forget --keep=30d -r $SERVER_DIRECTORY/backup/${2} --encrypt-with ${ADMIN_BACKUP_KEY_ID}
313
+	if [ ! "$?" = "0" ]; then
314
+		if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
315
+			shred -zu /root/temp${2}/*
316
+			rm -rf /root/temp${2}
317
+		fi
318
+		# Send a warning email
319
+		echo "Unable to backup ${2}" | mail -s "${PROJECT_NAME} backup to friends" ${ADMIN_EMAIL_ADDRESS}
320
+		function_check restart_site
321
+		restart_site
322
+		exit 853
323
+	fi
324
+	if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
325
+		shred -zu /root/temp${2}/*
326
+		rm -rf /root/temp${2}
327
+	fi
328
+}
329
+
330
+function backup_database_remote {
331
+	if [ ${#DATABASE_PASSWORD} -lt 2 ]; then
332
+		echo $"No MariaDB password was given"
333
+		function_check restart_site
334
+		restart_site
335
+		exit 5783
336
+	fi
337
+	if [ ! -d $SERVER_DIRECTORY/backup/${1} ]; then
338
+		mkdir -p $SERVER_DIRECTORY/backup/${1}
339
+	fi
340
+	if [ ! -d $SERVER_DIRECTORY/backup/${1}data ]; then
341
+		mkdir -p $SERVER_DIRECTORY/backup/${1}data
342
+	fi
343
+	if [ ! -d /root/temp${1}data ]; then
344
+		mkdir -p /root/temp${1}data
345
+	fi
346
+	echo "Obtaining ${1} database backup"
347
+	mysqldump --password=$DATABASE_PASSWORD ${1} > /root/temp${1}data/${1}.sql
348
+	if [ ! -s /root/temp${1}data/${1}.sql ]; then
349
+		echo $"${1} database could not be saved"
350
+		shred -zu /root/temp${1}data/*
351
+		rm -rf /root/temp${1}data
352
+		# Send a warning email
353
+		echo $"Unable to export ${1} database" | mail -s $"${PROJECT_NAME} backup to friends" $ADMIN_EMAIL_ADDRESS
354
+		function_check restart_site
355
+		restart_site
356
+		exit 5738
357
+	fi
358
+}
359
+
360
+function backup_database_to_friend {
361
+	database_name=$1
362
+	backup_database_remote $database_name
363
+	backup_directory_to_friend /root/temp${database_name}data ${database_name}data
364
+}
365
+
284 366
 # NOTE: deliberately no exit 0