Browse Source

Consolidate drive mount/unmount functions

Bob Mottram 8 years ago
parent
commit
c6fe64ad7c
3 changed files with 117 additions and 116 deletions
  1. 2
    1
      src/freedombone-backup-local
  2. 110
    113
      src/freedombone-restore-local
  3. 5
    2
      src/freedombone-utils-backup

+ 2
- 1
src/freedombone-backup-local View File

36
 export TEXTDOMAIN=${PROJECT_NAME}-backup-local
36
 export TEXTDOMAIN=${PROJECT_NAME}-backup-local
37
 export TEXTDOMAINDIR="/usr/share/locale"
37
 export TEXTDOMAINDIR="/usr/share/locale"
38
 
38
 
39
-# include utils which allow function_check
39
+# include utils which allow function_check and drive mount
40
 UTILS_FILES=/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-*
40
 UTILS_FILES=/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-*
41
 for f in $UTILS_FILES
41
 for f in $UTILS_FILES
42
 do
42
 do
426
 backup_mariadb
426
 backup_mariadb
427
 backup_extra_directories
427
 backup_extra_directories
428
 backup_unmount_drive $USB_DRIVE $USB_MOUNT
428
 backup_unmount_drive $USB_DRIVE $USB_MOUNT
429
+echo $"Backup to USB drive is complete. You can now unplug it."
429
 
430
 
430
 exit 0
431
 exit 0

+ 110
- 113
src/freedombone-restore-local View File

38
 export TEXTDOMAIN=${PROJECT_NAME}-restore-local
38
 export TEXTDOMAIN=${PROJECT_NAME}-restore-local
39
 export TEXTDOMAINDIR="/usr/share/locale"
39
 export TEXTDOMAINDIR="/usr/share/locale"
40
 
40
 
41
+# include utils which allow function_check and drive mount
42
+UTILS_FILES=/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-*
43
+for f in $UTILS_FILES
44
+do
45
+  source $f
46
+done
47
+
41
 USB_DRIVE=/dev/sdb1
48
 USB_DRIVE=/dev/sdb1
42
 USB_MOUNT=/mnt/usb
49
 USB_MOUNT=/mnt/usb
43
 
50
 
53
 GO_VERSION=$(cat /usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-go | grep 'GO_VERSION=' | head -n 1 | awk -F '=' '{print $2}')
60
 GO_VERSION=$(cat /usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-go | grep 'GO_VERSION=' | head -n 1 | awk -F '=' '{print $2}')
54
 GVM_HOME=$(cat /usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-go | grep 'GVM_HOME=' | head -n 1 | awk -F '=' '{print $2}')
61
 GVM_HOME=$(cat /usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-go | grep 'GVM_HOME=' | head -n 1 | awk -F '=' '{print $2}')
55
 
62
 
56
-ADMIN_USERNAME=
63
+ADMIN_USERNAME=''
57
 ADMIN_NAME=
64
 ADMIN_NAME=
65
+if [ -f $COMPLETION_FILE ]; then
66
+	ADMIN_USERNAME=$(cat $COMPLETION_FILE | grep "Admin user" | awk -F ':' '{print $2}')
67
+fi
58
 
68
 
59
 # MariaDB password
69
 # MariaDB password
60
 DATABASE_PASSWORD=$(cat /root/dbpass)
70
 DATABASE_PASSWORD=$(cat /root/dbpass)
66
 WIKI_DOMAIN_NAME=
76
 WIKI_DOMAIN_NAME=
67
 FULLBLOG_DOMAIN_NAME=
77
 FULLBLOG_DOMAIN_NAME=
68
 
78
 
69
-function mount_drive {
70
-	if [ $1 ]; then
71
-		USB_DRIVE=/dev/${1}1
72
-	fi
73
-
74
-	if [ $2 ]; then
75
-		RESTORE_APP=$2
76
-	fi
77
-
78
-	# get the admin user
79
-	ADMIN_USERNAME=$(cat $COMPLETION_FILE | grep "Admin user" | awk -F ':' '{print $2}')
80
-	if [ $3 ]; then
81
-		ADMIN_USERNAME=$3
82
-	fi
83
-	ADMIN_NAME=$(getent passwd $ADMIN_USERNAME | cut -d: -f5 | cut -d, -f1)
84
-
85
-	# check that the backup destination is available
86
-	if [ ! -b $USB_DRIVE ]; then
87
-		echo $"Please attach a USB drive"
88
-		exit 1
89
-	fi
90
-
91
-	# unmount if already mounted
92
-	umount -f $USB_MOUNT
93
-	if [ ! -d $USB_MOUNT ]; then
94
-		mkdir $USB_MOUNT
95
-	fi
96
-	if [ -f /dev/mapper/encrypted_usb ]; then
97
-		rm -rf /dev/mapper/encrypted_usb
98
-	fi
99
-	cryptsetup luksClose encrypted_usb
100
-
101
-	# mount the encrypted backup drive
102
-	cryptsetup luksOpen $USB_DRIVE encrypted_usb
103
-	if [ "$?" = "0" ]; then
104
-		USB_DRIVE=/dev/mapper/encrypted_usb
105
-	fi
106
-	mount $USB_DRIVE $USB_MOUNT
107
-	if [ ! "$?" = "0" ]; then
108
-		echo $"There was a problem mounting the USB drive to $USB_MOUNT"
109
-		rm -rf $USB_MOUNT
110
-		exit 2
111
-	fi
112
-}
113
-
114
-function unmount_drive {
115
-	sync
116
-	umount $USB_MOUNT
117
-	if [ ! "$?" = "0" ]; then
118
-		echo $"Unable to unmount the drive. This means that the backup did not work"
119
-		rm -rf $USB_MOUNT
120
-		exit 9
121
-	fi
122
-	rm -rf $USB_MOUNT
123
-
79
+# after user files have been restored permissions may need to be set
80
+function set_user_permissions {
124
 	echo $"Setting permissions"
81
 	echo $"Setting permissions"
125
 	for d in /home/*/ ; do
82
 	for d in /home/*/ ; do
126
 		USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
83
 		USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
128
 			chown -R $USERNAME:$USERNAME /home/$USERNAME
85
 			chown -R $USERNAME:$USERNAME /home/$USERNAME
129
 		fi
86
 		fi
130
 	done
87
 	done
131
-
132
-	if [[ $USB_DRIVE == /dev/mapper/encrypted_usb ]]; then
133
-		echo $"Unmount encrypted USB"
134
-		cryptsetup luksClose encrypted_usb
135
-	fi
136
-	if [ -f /dev/mapper/encrypted_usb ]; then
137
-		rm -rf /dev/mapper/encrypted_usb
138
-	fi
139
 }
88
 }
140
 
89
 
141
 function check_backup_exists {
90
 function check_backup_exists {
142
 	if [ ! -d $USB_MOUNT/backup ]; then
91
 	if [ ! -d $USB_MOUNT/backup ]; then
143
 		echo $"No backup directory found on the USB drive."
92
 		echo $"No backup directory found on the USB drive."
144
-		unmount_drive
93
+		set_user_permissions
94
+		backup_unmount_drive
145
 		exit 2
95
 		exit 2
146
 	fi
96
 	fi
147
 }
97
 }
150
 	echo $"Checking that admin user exists"
100
 	echo $"Checking that admin user exists"
151
 	if [ ! -d /home/$ADMIN_USERNAME ]; then
101
 	if [ ! -d /home/$ADMIN_USERNAME ]; then
152
 		echo $"Username $ADMIN_USERNAME not found. Reinstall ${PROJECT_NAME} with this username."
102
 		echo $"Username $ADMIN_USERNAME not found. Reinstall ${PROJECT_NAME} with this username."
153
-		unmount_drive
103
+		set_user_permissions
104
+		backup_unmount_drive
154
 		exit 295
105
 		exit 295
155
 	fi
106
 	fi
156
 }
107
 }
176
 		if [ ! -f /root/temp${1}data/${RESTORE_SUBDIR}/temp${1}data/${1}.sql ]; then
127
 		if [ ! -f /root/temp${1}data/${RESTORE_SUBDIR}/temp${1}data/${1}.sql ]; then
177
 			echo $"Unable to restore ${1} database"
128
 			echo $"Unable to restore ${1} database"
178
 			rm -rf /root/temp${1}data
129
 			rm -rf /root/temp${1}data
179
-			unmount_drive
130
+			set_user_permissions
131
+			backup_unmount_drive
180
 			exit 503
132
 			exit 503
181
 		fi
133
 		fi
182
 		mysqlsuccess=$(mysql -u root --password=$DATABASE_PASSWORD ${1} -o < /root/temp${1}data/${RESTORE_SUBDIR}/temp${1}data/${1}.sql)
134
 		mysqlsuccess=$(mysql -u root --password=$DATABASE_PASSWORD ${1} -o < /root/temp${1}data/${RESTORE_SUBDIR}/temp${1}data/${1}.sql)
183
 		if [ ! "$?" = "0" ]; then
135
 		if [ ! "$?" = "0" ]; then
184
 			echo "$mysqlsuccess"
136
 			echo "$mysqlsuccess"
185
-			unmount_drive
137
+			set_user_permissions
138
+			backup_unmount_drive
186
 			exit 964
139
 			exit 964
187
 		fi
140
 		fi
188
 		shred -zu /root/temp${1}data/${RESTORE_SUBDIR}/temp${1}data/*
141
 		shred -zu /root/temp${1}data/${RESTORE_SUBDIR}/temp${1}data/*
201
 						rm -rf /etc/share/tt-rss
154
 						rm -rf /etc/share/tt-rss
202
 						mv /root/temp${1}/etc/share/tt-rss /etc/share/
155
 						mv /root/temp${1}/etc/share/tt-rss /etc/share/
203
 						if [ ! "$?" = "0" ]; then
156
 						if [ ! "$?" = "0" ]; then
204
-							unmount_drive
157
+							set_user_permissions
158
+							backup_unmount_drive
205
 							exit 528
159
 							exit 528
206
 						fi
160
 						fi
207
 						if [ -d /etc/letsencrypt/live/${2} ]; then
161
 						if [ -d /etc/letsencrypt/live/${2} ]; then
222
 					rm -rf /var/www/${2}/htdocs
176
 					rm -rf /var/www/${2}/htdocs
223
 					mv /root/temp${1}/${RESTORE_SUBDIR}/www/${2}/htdocs /var/www/${2}/
177
 					mv /root/temp${1}/${RESTORE_SUBDIR}/www/${2}/htdocs /var/www/${2}/
224
 					if [ ! "$?" = "0" ]; then
178
 					if [ ! "$?" = "0" ]; then
225
-						unmount_drive
179
+						set_user_permissions
180
+						backup_unmount_drive
226
 						exit 683
181
 						exit 683
227
 					fi
182
 					fi
228
 					if [ -d /etc/letsencrypt/live/${2} ]; then
183
 					if [ -d /etc/letsencrypt/live/${2} ]; then
278
 
233
 
279
 		cp -f /root/tempconfig/root/${PROJECT_NAME}.cfg $CONFIG_FILE
234
 		cp -f /root/tempconfig/root/${PROJECT_NAME}.cfg $CONFIG_FILE
280
 		if [ ! "$?" = "0" ]; then
235
 		if [ ! "$?" = "0" ]; then
281
-			unmount_drive
236
+			set_user_permissions
237
+			backup_unmount_drive
282
 			rm -rf /root/tempconfig
238
 			rm -rf /root/tempconfig
283
 			exit 5294
239
 			exit 5294
284
 		fi
240
 		fi
289
 
245
 
290
 		cp -f /root/tempconfig/root/${PROJECT_NAME}-completed.txt $COMPLETION_FILE
246
 		cp -f /root/tempconfig/root/${PROJECT_NAME}-completed.txt $COMPLETION_FILE
291
 		if [ ! "$?" = "0" ]; then
247
 		if [ ! "$?" = "0" ]; then
292
-			unmount_drive
248
+			set_user_permissions
249
+			backup_unmount_drive
293
 			rm -rf /root/tempconfig
250
 			rm -rf /root/tempconfig
294
 			exit 6382
251
 			exit 6382
295
 		fi
252
 		fi
297
 		if [ -f /root/tempconfig${BACKUP_EXTRA_DIRECTORIES} ]; then
254
 		if [ -f /root/tempconfig${BACKUP_EXTRA_DIRECTORIES} ]; then
298
 			cp -f /root/tempconfig${BACKUP_EXTRA_DIRECTORIES} ${BACKUP_EXTRA_DIRECTORIES}
255
 			cp -f /root/tempconfig${BACKUP_EXTRA_DIRECTORIES} ${BACKUP_EXTRA_DIRECTORIES}
299
 			if [ ! "$?" = "0" ]; then
256
 			if [ ! "$?" = "0" ]; then
300
-				unmount_drive
257
+				set_user_permissions
258
+				backup_unmount_drive
301
 				rm -rf /root/tempconfig
259
 				rm -rf /root/tempconfig
302
 				exit 62121
260
 				exit 62121
303
 			fi
261
 			fi
316
 	PREV_ADMIN_USERNAME=$(cat $COMPLETION_FILE | grep "Admin user" | awk -F ':' '{print $2}')
274
 	PREV_ADMIN_USERNAME=$(cat $COMPLETION_FILE | grep "Admin user" | awk -F ':' '{print $2}')
317
 	if [[ "$PREV_ADMIN_USERNAME" != "$ADMIN_USERNAME" ]]; then
275
 	if [[ "$PREV_ADMIN_USERNAME" != "$ADMIN_USERNAME" ]]; then
318
 		echo $"The admin username has changed from $PREV_ADMIN_USERNAME to $ADMIN_USERNAME. To restore you will first need to install a new ${PROJECT_NAME} system with an initial admin user named $PREV_ADMIN_USERNAME"
276
 		echo $"The admin username has changed from $PREV_ADMIN_USERNAME to $ADMIN_USERNAME. To restore you will first need to install a new ${PROJECT_NAME} system with an initial admin user named $PREV_ADMIN_USERNAME"
319
-		unmount_drive
277
+		set_user_permissions
278
+		backup_unmount_drive
320
 		exit 73265
279
 		exit 73265
321
 	fi
280
 	fi
322
 }
281
 }
345
 			fi
304
 			fi
346
 			if [ ! "$?" = "0" ]; then
305
 			if [ ! "$?" = "0" ]; then
347
 				echo "$mysqlsuccess"
306
 				echo "$mysqlsuccess"
348
-				unmount_drive
307
+				set_user_permissions
308
+				backup_unmount_drive
349
 				exit 962
309
 				exit 962
350
 			fi
310
 			fi
351
 			echo $"Restarting database"
311
 			echo $"Restarting database"
409
 				fi
369
 				fi
410
 				if [ ! "$?" = "0" ]; then
370
 				if [ ! "$?" = "0" ]; then
411
 					rm -rf /root/tempmutt
371
 					rm -rf /root/tempmutt
412
-					unmount_drive
372
+					set_user_permissions
373
+					backup_unmount_drive
413
 					exit 276
374
 					exit 276
414
 				fi
375
 				fi
415
 				rm -rf /root/tempmutt
376
 				rm -rf /root/tempmutt
436
 				cp -r /root/tempgnupg/home/$USERNAME/.gnupg /home/$USERNAME/
397
 				cp -r /root/tempgnupg/home/$USERNAME/.gnupg /home/$USERNAME/
437
 				if [ ! "$?" = "0" ]; then
398
 				if [ ! "$?" = "0" ]; then
438
 					rm -rf /root/tempgnupg
399
 					rm -rf /root/tempgnupg
439
-					unmount_drive
400
+					set_user_permissions
401
+					backup_unmount_drive
440
 					exit 276
402
 					exit 276
441
 				fi
403
 				fi
442
 				rm -rf /root/tempgnupg
404
 				rm -rf /root/tempgnupg
443
 				if [[ "$USERNAME" == "$ADMIN_USERNAME" ]]; then
405
 				if [[ "$USERNAME" == "$ADMIN_USERNAME" ]]; then
444
 					cp -r /home/$USERNAME/.gnupg /root
406
 					cp -r /home/$USERNAME/.gnupg /root
445
 					if [ ! "$?" = "0" ]; then
407
 					if [ ! "$?" = "0" ]; then
446
-						unmount_drive
408
+						set_user_permissions
409
+						backup_unmount_drive
447
 						exit 283
410
 						exit 283
448
 					fi
411
 					fi
449
 				fi
412
 				fi
470
 				cp -f /root/tempprocmail/home/$USERNAME/tempbackup/.procmailrc /home/$USERNAME/
433
 				cp -f /root/tempprocmail/home/$USERNAME/tempbackup/.procmailrc /home/$USERNAME/
471
 				if [ ! "$?" = "0" ]; then
434
 				if [ ! "$?" = "0" ]; then
472
 					rm -rf /root/tempprocmail
435
 					rm -rf /root/tempprocmail
473
-					unmount_drive
436
+					set_user_permissions
437
+					backup_unmount_drive
474
 					exit 276
438
 					exit 276
475
 				fi
439
 				fi
476
 				rm -rf /root/tempprocmail
440
 				rm -rf /root/tempprocmail
498
 					cp -rf /root/tempspamassassin/home/$USERNAME/.spamassassin /home/$USERNAME/
462
 					cp -rf /root/tempspamassassin/home/$USERNAME/.spamassassin /home/$USERNAME/
499
 					if [ ! "$?" = "0" ]; then
463
 					if [ ! "$?" = "0" ]; then
500
 						rm -rf /root/tempspamassassin
464
 						rm -rf /root/tempspamassassin
501
-						unmount_drive
465
+						set_user_permissions
466
+						backup_unmount_drive
502
 						exit 276
467
 						exit 276
503
 					fi
468
 					fi
504
 					rm -rf /root/tempspamassassin
469
 					rm -rf /root/tempspamassassin
529
 		cp -f /root/tempreadme/home/$ADMIN_USERNAME/tempbackup/README /home/$ADMIN_USERNAME/
494
 		cp -f /root/tempreadme/home/$ADMIN_USERNAME/tempbackup/README /home/$ADMIN_USERNAME/
530
 		if [ ! "$?" = "0" ]; then
495
 		if [ ! "$?" = "0" ]; then
531
 			rm -rf /root/tempreadme
496
 			rm -rf /root/tempreadme
532
-			unmount_drive
497
+			set_user_permissions
498
+			backup_unmount_drive
533
 			exit 276
499
 			exit 276
534
 		fi
500
 		fi
535
 		rm -rf /root/tempreadme
501
 		rm -rf /root/tempreadme
548
 		cp -rf /root/tempipfs/home/$ADMIN_USERNAME/.ipfs/* /home/$ADMIN_USERNAME/.ipfs
514
 		cp -rf /root/tempipfs/home/$ADMIN_USERNAME/.ipfs/* /home/$ADMIN_USERNAME/.ipfs
549
 		if [ ! "$?" = "0" ]; then
515
 		if [ ! "$?" = "0" ]; then
550
 			rm -rf /root/tempipfs
516
 			rm -rf /root/tempipfs
551
-			unmount_drive
517
+			set_user_permissions
518
+			backup_unmount_drive
552
 			exit 276
519
 			exit 276
553
 		fi
520
 		fi
554
 		rm -rf /root/tempipfs
521
 		rm -rf /root/tempipfs
573
 				cp -r /root/tempssh/home/$USERNAME/.ssh /home/$USERNAME/
540
 				cp -r /root/tempssh/home/$USERNAME/.ssh /home/$USERNAME/
574
 				if [ ! "$?" = "0" ]; then
541
 				if [ ! "$?" = "0" ]; then
575
 					rm -rf /root/tempssh
542
 					rm -rf /root/tempssh
576
-					unmount_drive
543
+					set_user_permissions
544
+					backup_unmount_drive
577
 					exit 664
545
 					exit 664
578
 				fi
546
 				fi
579
 				rm -rf /root/tempssh
547
 				rm -rf /root/tempssh
600
 				cp -r /root/tempconfig/home/$USERNAME/.config /home/$USERNAME/
568
 				cp -r /root/tempconfig/home/$USERNAME/.config /home/$USERNAME/
601
 				if [ ! "$?" = "0" ]; then
569
 				if [ ! "$?" = "0" ]; then
602
 					rm -rf /root/tempconfig
570
 					rm -rf /root/tempconfig
603
-					unmount_drive
571
+					set_user_permissions
572
+					backup_unmount_drive
604
 					exit 664
573
 					exit 664
605
 				fi
574
 				fi
606
 				rm -rf /root/tempconfig
575
 				rm -rf /root/tempconfig
627
 				cp -r /root/tempemacs/home/$USERNAME/.emacs.d /home/$USERNAME/
596
 				cp -r /root/tempemacs/home/$USERNAME/.emacs.d /home/$USERNAME/
628
 				if [ ! "$?" = "0" ]; then
597
 				if [ ! "$?" = "0" ]; then
629
 					rm -rf /root/tempemacs
598
 					rm -rf /root/tempemacs
630
-					unmount_drive
599
+					set_user_permissions
600
+					backup_unmount_drive
631
 					exit 664
601
 					exit 664
632
 				fi
602
 				fi
633
 				cp -f /root/tempemacs/home/$USERNAME/.emacs.d/dotemacs /home/$USERNAME/.emacs
603
 				cp -f /root/tempemacs/home/$USERNAME/.emacs.d/dotemacs /home/$USERNAME/.emacs
667
 				cp -r /root/tempmonkeysphere/home/$USERNAME/.monkeysphere /home/$USERNAME/
637
 				cp -r /root/tempmonkeysphere/home/$USERNAME/.monkeysphere /home/$USERNAME/
668
 				if [ ! "$?" = "0" ]; then
638
 				if [ ! "$?" = "0" ]; then
669
 					rm -rf /root/tempmonkeysphere
639
 					rm -rf /root/tempmonkeysphere
670
-					unmount_drive
640
+					set_user_permissions
641
+					backup_unmount_drive
671
 					exit 664
642
 					exit 664
672
 				fi
643
 				fi
673
 				rm -rf /root/tempmonkeysphere
644
 				rm -rf /root/tempmonkeysphere
704
 				cp -r /root/tempfin/home/$USERNAME/.fin /home/$USERNAME/
675
 				cp -r /root/tempfin/home/$USERNAME/.fin /home/$USERNAME/
705
 				if [ ! "$?" = "0" ]; then
676
 				if [ ! "$?" = "0" ]; then
706
 					rm -rf /root/tempfin
677
 					rm -rf /root/tempfin
707
-					unmount_drive
678
+					set_user_permissions
679
+					backup_unmount_drive
708
 					exit 664
680
 					exit 664
709
 				fi
681
 				fi
710
 				rm -rf /root/tempfin
682
 				rm -rf /root/tempfin
731
 				cp -r /root/templocal/home/$USERNAME/.local /home/$USERNAME/
703
 				cp -r /root/templocal/home/$USERNAME/.local /home/$USERNAME/
732
 				if [ ! "$?" = "0" ]; then
704
 				if [ ! "$?" = "0" ]; then
733
 					rm -rf /root/templocal
705
 					rm -rf /root/templocal
734
-					unmount_drive
706
+					set_user_permissions
707
+					backup_unmount_drive
735
 					exit 664
708
 					exit 664
736
 				fi
709
 				fi
737
 				rm -rf /root/templocal
710
 				rm -rf /root/templocal
752
 		restore_directory_from_usb /root/tempssl ssl
725
 		restore_directory_from_usb /root/tempssl ssl
753
 		cp -r /root/tempssl/etc/ssl/* /etc/ssl
726
 		cp -r /root/tempssl/etc/ssl/* /etc/ssl
754
 		if [ ! "$?" = "0" ]; then
727
 		if [ ! "$?" = "0" ]; then
755
-			unmount_drive
728
+			set_user_permissions
729
+			backup_unmount_drive
756
 			exit 276
730
 			exit 276
757
 		fi
731
 		fi
758
 		rm -rf /root/tempssl
732
 		rm -rf /root/tempssl
804
 					fi
778
 					fi
805
 					mv /root/temppersonal/home/$USERNAME/personal /home/$USERNAME
779
 					mv /root/temppersonal/home/$USERNAME/personal /home/$USERNAME
806
 					if [ ! "$?" = "0" ]; then
780
 					if [ ! "$?" = "0" ]; then
807
-						unmount_drive
781
+						set_user_permissions
782
+						backup_unmount_drive
808
 						exit 184
783
 						exit 184
809
 					fi
784
 					fi
810
 					rm -rf /root/temppersonal
785
 					rm -rf /root/temppersonal
825
 		restore_directory_from_usb /root/tempmailinglist mailinglist
800
 		restore_directory_from_usb /root/tempmailinglist mailinglist
826
 		cp -r /root/tempmailinglist/root/spool/mlmmj/* /var/spool/mlmmj
801
 		cp -r /root/tempmailinglist/root/spool/mlmmj/* /var/spool/mlmmj
827
 		if [ ! "$?" = "0" ]; then
802
 		if [ ! "$?" = "0" ]; then
828
-			unmount_drive
803
+			set_user_permissions
804
+			backup_unmount_drive
829
 			exit 526
805
 			exit 526
830
 		fi
806
 		fi
831
 		rm -rf /root/tempmailinglist
807
 		rm -rf /root/tempmailinglist
843
 		restore_directory_from_usb /root/tempxmpp xmpp
819
 		restore_directory_from_usb /root/tempxmpp xmpp
844
 		cp -r /root/tempxmpp/var/lib/prosody/* /var/lib/prosody
820
 		cp -r /root/tempxmpp/var/lib/prosody/* /var/lib/prosody
845
 		if [ ! "$?" = "0" ]; then
821
 		if [ ! "$?" = "0" ]; then
846
-			unmount_drive
822
+			set_user_permissions
823
+			backup_unmount_drive
847
 			exit 725
824
 			exit 725
848
 		fi
825
 		fi
849
 		rm -rf /root/tempxmpp
826
 		rm -rf /root/tempxmpp
929
 		restore_directory_from_usb /root/tempsyncthingconfig syncthingconfig
906
 		restore_directory_from_usb /root/tempsyncthingconfig syncthingconfig
930
 		cp -r /root/tempsyncthingconfig/* /
907
 		cp -r /root/tempsyncthingconfig/* /
931
 		if [ ! "$?" = "0" ]; then
908
 		if [ ! "$?" = "0" ]; then
932
-			unmount_drive
909
+			set_user_permissions
910
+			backup_unmount_drive
933
 			systemctl start syncthing
911
 			systemctl start syncthing
934
 			systemctl start cron
912
 			systemctl start cron
935
 			exit 6833
913
 			exit 6833
942
 		restore_directory_from_usb /root/tempsyncthingshared syncthingshared
920
 		restore_directory_from_usb /root/tempsyncthingshared syncthingshared
943
 		cp -r /root/tempsyncthingshared/* /
921
 		cp -r /root/tempsyncthingshared/* /
944
 		if [ ! "$?" = "0" ]; then
922
 		if [ ! "$?" = "0" ]; then
945
-			unmount_drive
923
+			set_user_permissions
924
+			backup_unmount_drive
946
 			systemctl start syncthing
925
 			systemctl start syncthing
947
 			systemctl start cron
926
 			systemctl start cron
948
 			exit 37904
927
 			exit 37904
962
 				cp -r /root/tempsyncthing/home/$USERNAME/Sync /home/$USERNAME/
941
 				cp -r /root/tempsyncthing/home/$USERNAME/Sync /home/$USERNAME/
963
 				if [ ! "$?" = "0" ]; then
942
 				if [ ! "$?" = "0" ]; then
964
 					rm -rf /root/tempsyncthing
943
 					rm -rf /root/tempsyncthing
965
-					unmount_drive
944
+					set_user_permissions
945
+					backup_unmount_drive
966
 					systemctl start syncthing
946
 					systemctl start syncthing
967
 					systemctl start cron
947
 					systemctl start cron
968
 					exit 68438
948
 					exit 68438
1002
 		restore_directory_from_usb /root/tempmediagoblin mediagoblin
982
 		restore_directory_from_usb /root/tempmediagoblin mediagoblin
1003
 		cp -r /root/tempmediagoblin/* /
983
 		cp -r /root/tempmediagoblin/* /
1004
 		if [ ! "$?" = "0" ]; then
984
 		if [ ! "$?" = "0" ]; then
1005
-			unmount_drive
985
+			set_user_permissions
986
+			backup_unmount_drive
1006
 			exit 67843
987
 			exit 67843
1007
 		fi
988
 		fi
1008
 		rm -rf /root/tempmediagoblin
989
 		rm -rf /root/tempmediagoblin
1033
 			fi
1014
 			fi
1034
 			cp -r /root/tempgogs/$GOPATH/src/github.com/gogits/gogs/custom/* $GOPATH/src/github.com/gogits/gogs/custom
1015
 			cp -r /root/tempgogs/$GOPATH/src/github.com/gogits/gogs/custom/* $GOPATH/src/github.com/gogits/gogs/custom
1035
 			if [ ! "$?" = "0" ]; then
1016
 			if [ ! "$?" = "0" ]; then
1036
-				unmount_drive
1017
+				set_user_permissions
1018
+				backup_unmount_drive
1037
 				exit 981
1019
 				exit 981
1038
 			fi
1020
 			fi
1039
 			echo $"Restoring Gogs repos"
1021
 			echo $"Restoring Gogs repos"
1040
 			restore_directory_from_usb /root/tempgogsrepos gogsrepos
1022
 			restore_directory_from_usb /root/tempgogsrepos gogsrepos
1041
 			cp -r /root/tempgogsrepos/home/git/gogs-repositories/* /home/git/gogs-repositories/
1023
 			cp -r /root/tempgogsrepos/home/git/gogs-repositories/* /home/git/gogs-repositories/
1042
 			if [ ! "$?" = "0" ]; then
1024
 			if [ ! "$?" = "0" ]; then
1043
-				unmount_drive
1025
+				set_user_permissions
1026
+				backup_unmount_drive
1044
 				exit 67574
1027
 				exit 67574
1045
 			fi
1028
 			fi
1046
 			echo $"Restoring Gogs authorized_keys"
1029
 			echo $"Restoring Gogs authorized_keys"
1050
 			fi
1033
 			fi
1051
 			cp -r /root/tempgogsssh/home/git/.ssh/* /home/git/.ssh/
1034
 			cp -r /root/tempgogsssh/home/git/.ssh/* /home/git/.ssh/
1052
 			if [ ! "$?" = "0" ]; then
1035
 			if [ ! "$?" = "0" ]; then
1053
-				unmount_drive
1036
+				set_user_permissions
1037
+				backup_unmount_drive
1054
 				exit 8463
1038
 				exit 8463
1055
 			fi
1039
 			fi
1056
 			rm -rf /root/tempgogs
1040
 			rm -rf /root/tempgogs
1072
 		restore_directory_from_usb /root/tempwiki wiki
1056
 		restore_directory_from_usb /root/tempwiki wiki
1073
 		cp -r /root/tempwiki/var/lib/dokuwiki/* /var/lib/dokuwiki/
1057
 		cp -r /root/tempwiki/var/lib/dokuwiki/* /var/lib/dokuwiki/
1074
 		if [ ! "$?" = "0" ]; then
1058
 		if [ ! "$?" = "0" ]; then
1075
-			unmount_drive
1059
+			set_user_permissions
1060
+			backup_unmount_drive
1076
 			exit 868
1061
 			exit 868
1077
 		fi
1062
 		fi
1078
 		restore_directory_from_usb /root/tempwiki2 wiki2
1063
 		restore_directory_from_usb /root/tempwiki2 wiki2
1079
 		cp -r /root/tempwiki2/etc/dokuwiki/* /etc/dokuwiki/
1064
 		cp -r /root/tempwiki2/etc/dokuwiki/* /etc/dokuwiki/
1080
 		if [ ! "$?" = "0" ]; then
1065
 		if [ ! "$?" = "0" ]; then
1081
-			unmount_drive
1066
+			set_user_permissions
1067
+			backup_unmount_drive
1082
 			exit 869
1068
 			exit 869
1083
 		fi
1069
 		fi
1084
 		rm -rf /root/tempwiki
1070
 		rm -rf /root/tempwiki
1107
 		rm -rf /var/www/${FULLBLOG_DOMAIN_NAME}/htdocs
1093
 		rm -rf /var/www/${FULLBLOG_DOMAIN_NAME}/htdocs
1108
 		cp -r /root/tempblog/var/www/${FULLBLOG_DOMAIN_NAME}/htdocs /var/www/${FULLBLOG_DOMAIN_NAME}/
1094
 		cp -r /root/tempblog/var/www/${FULLBLOG_DOMAIN_NAME}/htdocs /var/www/${FULLBLOG_DOMAIN_NAME}/
1109
 		if [ ! "$?" = "0" ]; then
1095
 		if [ ! "$?" = "0" ]; then
1110
-			unmount_drive
1096
+			set_user_permissions
1097
+			backup_unmount_drive
1111
 			exit 593
1098
 			exit 593
1112
 		fi
1099
 		fi
1113
 		rm -rf /root/tempblog
1100
 		rm -rf /root/tempblog
1114
 		if [ ! -d /var/www/${FULLBLOG_DOMAIN_NAME}/htdocs/content ]; then
1101
 		if [ ! -d /var/www/${FULLBLOG_DOMAIN_NAME}/htdocs/content ]; then
1115
 			echo $"No content directory found after restoring blog"
1102
 			echo $"No content directory found after restoring blog"
1116
-			unmount_drive
1103
+			set_user_permissions
1104
+			backup_unmount_drive
1117
 			exit 287
1105
 			exit 287
1118
 		fi
1106
 		fi
1119
 		chown -R www-data:www-data /var/www/${FULLBLOG_DOMAIN_NAME}/htdocs
1107
 		chown -R www-data:www-data /var/www/${FULLBLOG_DOMAIN_NAME}/htdocs
1148
 		rm -rf /etc/cjdns
1136
 		rm -rf /etc/cjdns
1149
 		cp -r /root/tempcjdns/etc/cjdns /etc/
1137
 		cp -r /root/tempcjdns/etc/cjdns /etc/
1150
 		if [ ! "$?" = "0" ]; then
1138
 		if [ ! "$?" = "0" ]; then
1151
-			unmount_drive
1139
+			set_user_permissions
1140
+			backup_unmount_drive
1152
 			exit 8472
1141
 			exit 8472
1153
 		fi
1142
 		fi
1154
 		rm -rf /root/tempcjdns
1143
 		rm -rf /root/tempcjdns
1175
 				fi
1164
 				fi
1176
 				tar -xzvf /root/tempmail/root/tempbackupemail/$USERNAME/maildir.tar.gz -C /
1165
 				tar -xzvf /root/tempmail/root/tempbackupemail/$USERNAME/maildir.tar.gz -C /
1177
 				if [ ! "$?" = "0" ]; then
1166
 				if [ ! "$?" = "0" ]; then
1178
-					unmount_drive
1167
+					set_user_permissions
1168
+					backup_unmount_drive
1179
 					exit 927
1169
 					exit 927
1180
 				fi
1170
 				fi
1181
 				rm -rf /root/tempmail
1171
 				rm -rf /root/tempmail
1197
 			cp -r /root/tempdlna/var/cache/minidlna/* /var/cache/minidlna/
1187
 			cp -r /root/tempdlna/var/cache/minidlna/* /var/cache/minidlna/
1198
 			if [ ! "$?" = "0" ]; then
1188
 			if [ ! "$?" = "0" ]; then
1199
 				rm -rf /root/tempdlna
1189
 				rm -rf /root/tempdlna
1200
-				unmount_drive
1190
+				set_user_permissions
1191
+				backup_unmount_drive
1201
 				exit 982
1192
 				exit 982
1202
 			fi
1193
 			fi
1203
 			rm -rf /root/tempdlna
1194
 			rm -rf /root/tempdlna
1217
 		cp -f /root/tempvoip/home/$ADMIN_USERNAME/tempbackup/mumble-server.ini /etc/
1208
 		cp -f /root/tempvoip/home/$ADMIN_USERNAME/tempbackup/mumble-server.ini /etc/
1218
 		if [ ! "$?" = "0" ]; then
1209
 		if [ ! "$?" = "0" ]; then
1219
 			rm -rf /root/tempvoip
1210
 			rm -rf /root/tempvoip
1220
-			unmount_drive
1211
+			set_user_permissions
1212
+			backup_unmount_drive
1221
 			exit 3679
1213
 			exit 3679
1222
 		fi
1214
 		fi
1223
 		cp -f /root/tempvoip/home/$ADMIN_USERNAME/tempbackup/sipwitch.conf /etc/sipwitch.conf
1215
 		cp -f /root/tempvoip/home/$ADMIN_USERNAME/tempbackup/sipwitch.conf /etc/sipwitch.conf
1224
 		if [ ! "$?" = "0" ]; then
1216
 		if [ ! "$?" = "0" ]; then
1225
 			rm -rf /root/tempvoip
1217
 			rm -rf /root/tempvoip
1226
-			unmount_drive
1218
+			set_user_permissions
1219
+			backup_unmount_drive
1227
 			exit 3679
1220
 			exit 3679
1228
 		fi
1221
 		fi
1229
 		cp -f /root/tempvoip/home/$ADMIN_USERNAME/tempbackup/mumble-server.sqlite /var/lib/mumble-server/
1222
 		cp -f /root/tempvoip/home/$ADMIN_USERNAME/tempbackup/mumble-server.sqlite /var/lib/mumble-server/
1230
 		if [ ! "$?" = "0" ]; then
1223
 		if [ ! "$?" = "0" ]; then
1231
 			rm -rf /root/tempvoip
1224
 			rm -rf /root/tempvoip
1232
-			unmount_drive
1225
+			set_user_permissions
1226
+			backup_unmount_drive
1233
 			exit 276
1227
 			exit 276
1234
 		fi
1228
 		fi
1235
 		rm -rf /root/tempvoip
1229
 		rm -rf /root/tempvoip
1251
 		echo $"Restoring Tox node settings"
1245
 		echo $"Restoring Tox node settings"
1252
 		restore_directory_from_usb / tox
1246
 		restore_directory_from_usb / tox
1253
 		if [ ! "$?" = "0" ]; then
1247
 		if [ ! "$?" = "0" ]; then
1254
-			unmount_drive
1248
+			set_user_permissions
1249
+			backup_unmount_drive
1255
 			exit 6393
1250
 			exit 6393
1256
 		fi
1251
 		fi
1257
 		cp /var/lib/tox-bootstrapd/tox-bootstrapd.conf /etc/tox-bootstrapd.conf
1252
 		cp /var/lib/tox-bootstrapd/tox-bootstrapd.conf /etc/tox-bootstrapd.conf
1258
 		systemctl restart tox-bootstrapd.service
1253
 		systemctl restart tox-bootstrapd.service
1259
 		if [ ! "$?" = "0" ]; then
1254
 		if [ ! "$?" = "0" ]; then
1260
 			systemctl status tox-bootstrapd.service
1255
 			systemctl status tox-bootstrapd.service
1261
-			unmount_drive
1256
+			set_user_permissions
1257
+			backup_unmount_drive
1262
 			exit 59369
1258
 			exit 59369
1263
 		fi
1259
 		fi
1264
 	fi
1260
 	fi
1274
 }
1270
 }
1275
 
1271
 
1276
 get_restore_app ${2}
1272
 get_restore_app ${2}
1277
-mount_drive ${1} ${2}
1273
+backup_mount_drive ${1} ${ADMIN_USERNAME} ${2}
1278
 check_backup_exists
1274
 check_backup_exists
1279
 check_admin_user
1275
 check_admin_user
1280
 copy_gpg_keys
1276
 copy_gpg_keys
1313
 restore_dlna
1309
 restore_dlna
1314
 restore_voip
1310
 restore_voip
1315
 restore_tox
1311
 restore_tox
1316
-unmount_drive
1312
+set_user_permissions
1313
+backup_unmount_drive
1317
 
1314
 
1318
 echo $"Restore from USB drive is complete. You can now unplug it."
1315
 echo $"Restore from USB drive is complete. You can now unplug it."
1319
 
1316
 

+ 5
- 2
src/freedombone-utils-backup View File

128
 	fi
128
 	fi
129
 	ADMIN_NAME=$(getent passwd $ADMIN_USERNAME | cut -d: -f5 | cut -d, -f1)
129
 	ADMIN_NAME=$(getent passwd $ADMIN_USERNAME | cut -d: -f5 | cut -d, -f1)
130
 
130
 
131
+	if [ $3 ]; then
132
+		RESTORE_APP=$3
133
+	fi
134
+	
131
 	# check that the backup destination is available
135
 	# check that the backup destination is available
132
 	if [ ! -b $USB_DRIVE ]; then
136
 	if [ ! -b $USB_DRIVE ]; then
133
 		echo $"Please attach a USB drive"
137
 		echo $"Please attach a USB drive"
167
 	sync
171
 	sync
168
 	umount $USB_MOUNT
172
 	umount $USB_MOUNT
169
 	if [ ! "$?" = "0" ]; then
173
 	if [ ! "$?" = "0" ]; then
170
-		echo $"Unable to unmount the drive. This means that the backup did not work"
174
+		echo $"Unable to unmount the drive."
171
 		rm -rf $USB_MOUNT
175
 		rm -rf $USB_MOUNT
172
 		exit 9
176
 		exit 9
173
 	fi
177
 	fi
179
 	if [ -f /dev/mapper/encrypted_usb ]; then
183
 	if [ -f /dev/mapper/encrypted_usb ]; then
180
 		rm -rf /dev/mapper/encrypted_usb
184
 		rm -rf /dev/mapper/encrypted_usb
181
 	fi
185
 	fi
182
-	echo $"Backup to USB drive is complete. You can now unplug it."
183
 }
186
 }
184
 
187
 
185
 function backup_database_local {
188
 function backup_database_local {