Browse Source

Create directories if needed

Bob Mottram 9 years ago
parent
commit
10f1272645
2 changed files with 45 additions and 114 deletions
  1. 3
    3
      src/freedombone-backup-local
  2. 42
    111
      src/freedombone-backup-remote

+ 3
- 3
src/freedombone-backup-local View File

@@ -137,9 +137,9 @@ function backup_directory_to_usb {
137 137
             exit 6
138 138
         fi
139 139
         MY_BACKUP_KEY_ID=$(gpg --list-keys "$ADMIN_NAME (backup key)" | grep 'pub ' | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}')
140
-		if [ ! -d $USB_MOUNT/backup/${2} ]; then
141
-			mkdir -p $USB_MOUNT/backup/${2}
142
-		fi
140
+        if [ ! -d $USB_MOUNT/backup/${2} ]; then
141
+            mkdir -p $USB_MOUNT/backup/${2}
142
+        fi
143 143
         obnam force-lock -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID ${1}
144 144
         obnam backup -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID ${1}
145 145
         obnam forget --keep=30d -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID

+ 42
- 111
src/freedombone-backup-remote View File

@@ -71,6 +71,9 @@ function backup_directory_to_friend {
71 71
         exit 43382
72 72
     fi
73 73
     ADMIN_BACKUP_KEY_ID=$(gpg --list-keys "$ADMIN_NAME (backup key)" | grep 'pub ' | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}')
74
+    if [ ! -d $SERVER_DIRECTORY/backup/${2} ]; then
75
+        mkdir -p $SERVER_DIRECTORY/backup/${2}
76
+    fi
74 77
     obnam force-lock -r $SERVER_DIRECTORY/backup/${2} --encrypt-with $ADMIN_BACKUP_KEY_ID ${1}
75 78
     obnam backup -r $SERVER_DIRECTORY/backup/${2} --encrypt-with $ADMIN_BACKUP_KEY_ID ${1}
76 79
     obnam forget --keep=30d -r $SERVER_DIRECTORY/backup/${2} --encrypt-with $ADMIN_BACKUP_KEY_ID
@@ -123,36 +126,24 @@ for d in /home/*/ ; do
123 126
         # personal settings
124 127
         if [ -d /home/$USERNAME/personal ]; then
125 128
             echo $"Backing up personal settings for $USERNAME"
126
-            if [ ! -d $SERVER_DIRECTORY/backup/personal/$USERNAME ]; then
127
-                mkdir -p $SERVER_DIRECTORY/backup/personal/$USERNAME
128
-            fi
129 129
             backup_directory_to_friend /home/$USERNAME/personal personal/$USERNAME
130 130
         fi
131 131
 
132 132
         # gpg keys
133 133
         if [ -d /home/$USERNAME/.gnupg ]; then
134 134
             echo $"Backing up gpg keys for $USERNAME"
135
-            if [ ! -d $SERVER_DIRECTORY/backup/gnupg/$USERNAME ]; then
136
-                mkdir -p $SERVER_DIRECTORY/backup/gnupg/$USERNAME
137
-            fi
138 135
             backup_directory_to_friend /home/$USERNAME/.gnupg gnupg/$USERNAME
139 136
         fi
140 137
 
141 138
         # ssh keys
142 139
         if [ -d /home/$USERNAME/.ssh ]; then
143 140
             echo $"Backing up ssh keys for $USERNAME"
144
-            if [ ! -d $SERVER_DIRECTORY/backup/ssh/$USERNAME ]; then
145
-                mkdir -p $SERVER_DIRECTORY/backup/ssh/$USERNAME
146
-            fi
147 141
             backup_directory_to_friend /home/$USERNAME/.ssh ssh/$USERNAME
148 142
         fi
149 143
 
150 144
         # config files
151 145
         if [ -d /home/$USERNAME/.config ]; then
152 146
             echo $"Backing up config files for $USERNAME"
153
-            if [ ! -d $SERVER_DIRECTORY/backup/config/$USERNAME ]; then
154
-                mkdir -p $SERVER_DIRECTORY/backup/config/$USERNAME
155
-            fi
156 147
             backup_directory_to_friend /home/$USERNAME/.config config/$USERNAME
157 148
         fi
158 149
 
@@ -166,9 +157,6 @@ for d in /home/*/ ; do
166 157
             if [ -f /etc/Muttrc ]; then
167 158
                 cp /etc/Muttrc /home/$USERNAME/tempbackup
168 159
             fi
169
-            if [ ! -d $SERVER_DIRECTORY/backup/mutt/$USERNAME ]; then
170
-                mkdir -p $SERVER_DIRECTORY/backup/mutt/$USERNAME
171
-            fi
172 160
             backup_directory_to_friend /home/$USERNAME/tempbackup mutt/$USERNAME
173 161
         fi
174 162
 
@@ -179,18 +167,12 @@ for d in /home/*/ ; do
179 167
                 mkdir -p /home/$USERNAME/tempbackup
180 168
             fi
181 169
             cp /home/$USERNAME/.procmailrc /home/$USERNAME/tempbackup
182
-            if [ ! -d $SERVER_DIRECTORY/backup/procmail/$USERNAME ]; then
183
-                mkdir -p $SERVER_DIRECTORY/backup/procmail/$USERNAME
184
-            fi
185 170
             backup_directory_to_friend /home/$USERNAME/tempbackup procmail/$USERNAME
186 171
         fi
187 172
 
188 173
         # spamassassin settings
189 174
         if [ -d /home/$USERNAME/.spamassassin ]; then
190 175
             echo $"Backing up spamassassin settings for $USERNAME"
191
-            if [ ! -d $SERVER_DIRECTORY/backup/spamassassin/$USERNAME ]; then
192
-                mkdir -p $SERVER_DIRECTORY/backup/spamassassin/$USERNAME
193
-            fi
194 176
             backup_directory_to_friend /home/$USERNAME/.spamassassin spamassassin/$USERNAME
195 177
         fi
196 178
 
@@ -202,9 +184,6 @@ for d in /home/*/ ; do
202 184
             fi
203 185
             tar -czvf /root/backupemail/$USERNAME/maildir.tar.gz /home/$USERNAME/Maildir
204 186
             echo $"Backing up emails for $USERNAME"
205
-            if [ ! -d $SERVER_DIRECTORY/backup/mail/$USERNAME ]; then
206
-                mkdir -p $SERVER_DIRECTORY/backup/mail/$USERNAME
207
-            fi
208 187
             backup_directory_to_friend /root/backupemail/$USERNAME mail/$USERNAME
209 188
         fi
210 189
     fi
@@ -246,9 +225,6 @@ fi
246 225
 
247 226
 # backup owncloud
248 227
 if [ -d /etc/owncloud ]; then
249
-    if [ ! -d $SERVER_DIRECTORY/backup/owncloud2 ]; then
250
-        mkdir -p $SERVER_DIRECTORY/backup/owncloud2
251
-    fi
252 228
     backup_database_to_friend owncloud
253 229
     backup_directory_to_friend /root/tempownclouddata ownclouddata
254 230
     echo $"Backing up Owncloud data"
@@ -258,12 +234,6 @@ fi
258 234
 
259 235
 # backup gogs
260 236
 if [ -d /home/git/go/src/github.com/gogits ]; then
261
-    if [ ! -d $SERVER_DIRECTORY/backup/gogsrepos ]; then
262
-        mkdir -p $SERVER_DIRECTORY/backup/gogsrepos
263
-    fi
264
-    if [ ! -d $SERVER_DIRECTORY/backup/gogsssh ]; then
265
-        mkdir -p $SERVER_DIRECTORY/backup/gogsssh
266
-    fi
267 237
     backup_database_to_friend gogs
268 238
     backup_directory_to_friend /root/tempgogsdata gogsdata
269 239
     echo $"Obtaining Gogs settings backup"
@@ -276,12 +246,6 @@ if [ -d /home/git/go/src/github.com/gogits ]; then
276 246
 fi
277 247
 
278 248
 if [ -d /etc/dokuwiki ]; then
279
-    if [ ! -d $SERVER_DIRECTORY/backup/wiki ]; then
280
-        mkdir -p $SERVER_DIRECTORY/backup/wiki
281
-    fi
282
-    if [ ! -d $SERVER_DIRECTORY/backup/wiki2 ]; then
283
-        mkdir -p $SERVER_DIRECTORY/backup/wiki2
284
-    fi
285 249
     echo $"Backing up wiki"
286 250
     backup_directory_to_friend /var/lib/dokuwiki wiki
287 251
     backup_directory_to_friend /etc/dokuwiki wiki2
@@ -291,9 +255,6 @@ fi
291 255
 if grep -q "Blog domain" $COMPLETION_FILE; then
292 256
     FULLBLOG_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Blog domain" | awk -F ':' '{print $2}')
293 257
     if [ -d /var/www/${FULLBLOG_DOMAIN_NAME} ]; then
294
-        if [ ! -d $SERVER_DIRECTORY/backup/blog ]; then
295
-            mkdir -p $SERVER_DIRECTORY/backup/blog
296
-        fi
297 258
         echo $"Backing up blog"
298 259
         backup_directory_to_friend /var/www/${FULLBLOG_DOMAIN_NAME}/htdocs blog
299 260
     else
@@ -305,45 +266,30 @@ fi
305 266
 # Backup certificates
306 267
 if [ -d /etc/ssl ]; then
307 268
     echo $"Backing up certificates"
308
-    if [ ! -d $SERVER_DIRECTORY/backup/ssl ]; then
309
-        mkdir -p $SERVER_DIRECTORY/backup/ssl
310
-    fi
311 269
     backup_directory_to_friend /etc/ssl ssl
312 270
 fi
313 271
 
314 272
 # Backup the public mailing list
315 273
 if [ -d /var/spool/mlmmj ]; then
316 274
     echo $"Backing up the public mailing list"
317
-    if [ ! -d $SERVER_DIRECTORY/backup/mailinglist ]; then
318
-        mkdir -p $SERVER_DIRECTORY/backup/mailinglist
319
-    fi
320 275
     backup_directory_to_friend /var/spool/mlmmj mailinglist
321 276
 fi
322 277
 
323 278
 # Backup xmpp settings
324 279
 if [ -d /var/lib/prosody ]; then
325 280
     echo $"Backing up the XMPP settings"
326
-    if [ ! -d $SERVER_DIRECTORY/backup/xmpp ]; then
327
-        mkdir -p $SERVER_DIRECTORY/backup/xmpp
328
-    fi
329 281
     backup_directory_to_friend /var/lib/prosody xmpp
330 282
 fi
331 283
 
332 284
 # Backup web sites
333 285
 if [ -d /etc/nginx ]; then
334 286
     echo $"Backing up web settings"
335
-    if [ ! -d $SERVER_DIRECTORY/backup/web ]; then
336
-        mkdir -p $SERVER_DIRECTORY/backup/web
337
-    fi
338 287
     backup_directory_to_friend /etc/nginx/sites-available web
339 288
 fi
340 289
 
341 290
 # Backup admin user README file
342 291
 if [ -f /home/$ADMIN_USERNAME/README ]; then
343 292
     echo $"Backing up README"
344
-    if [ ! -d $SERVER_DIRECTORY/backup/readme ]; then
345
-        mkdir -p $SERVER_DIRECTORY/backup/readme
346
-    fi
347 293
     if [ ! -d /home/$ADMIN_USERNAME/tempbackup ]; then
348 294
         mkdir -p /home/$ADMIN_USERNAME/tempbackup
349 295
     fi
@@ -354,18 +300,12 @@ fi
354 300
 # Backup IPFS
355 301
 if [ -d /home/$ADMIN_USERNAME/.ipfs ]; then
356 302
     echo $"Backing up IPFS"
357
-    if [ ! -d $SERVER_DIRECTORY/backup/ipfs ]; then
358
-        mkdir -p $SERVER_DIRECTORY/backup/ipfs
359
-    fi
360 303
     backup_directory_to_friend /home/$ADMIN_USERNAME/.ipfs ipfs
361 304
 fi
362 305
 
363 306
 # Backup DLNA cache
364 307
 if [ -d /var/cache/minidlna ]; then
365 308
     echo $"Backing up DLNA cache"
366
-    if [ ! -d $SERVER_DIRECTORY/backup/dlna ]; then
367
-        mkdir -p $SERVER_DIRECTORY/backup/dlna
368
-    fi
369 309
     backup_directory_to_friend /var/cache/minidlna dlna
370 310
 fi
371 311
 
@@ -378,18 +318,12 @@ if [ -f /etc/mumble-server.ini ]; then
378 318
     cp -f /etc/mumble-server.ini /root/tempvoipbackup
379 319
     cp -f /var/lib/mumble-server/mumble-server.sqlite /root/tempvoipbackup
380 320
     cp -f /etc/sipwitch.conf /root/tempvoipbackup
381
-    if [ ! -d $SERVER_DIRECTORY/backup/voip ]; then
382
-        mkdir -p $SERVER_DIRECTORY/backup/voip
383
-    fi
384 321
     backup_directory_to_friend /root/tempvoipbackup voip
385 322
 fi
386 323
 
387 324
 # Backup Tox node settings
388 325
 if [ -d /var/lib/tox-bootstrapd ]; then
389 326
     echo "Backing up Tox node settings"
390
-    if [ ! -d $SERVER_DIRECTORY/backup/tox ]; then
391
-        mkdir -p $SERVER_DIRECTORY/backup/tox
392
-    fi
393 327
     if [ -d /var/lib/tox-bootstrapd/Maildir ]; then
394 328
         rm -rf /var/lib/tox-bootstrapd/Maildir
395 329
     fi
@@ -399,9 +333,6 @@ fi
399 333
 
400 334
 # MariaDB settings
401 335
 if [ ${#DATABASE_PASSWORD} -gt 1 ]; then
402
-    if [ ! -d $SERVER_DIRECTORY/backup/mariadb ]; then
403
-        mkdir -p $SERVER_DIRECTORY/backup/mariadb
404
-    fi
405 336
     if [ ! -d /root/tempmariadb ]; then
406 337
         mkdir /root/tempmariadb
407 338
     fi
@@ -434,45 +365,45 @@ do
434 365
         echo "$NOW Starting backup to $REMOTE_SERVER" >> /var/log/remotebackups.log
435 366
 
436 367
         # Social key management
437
-		for d in /home/*/ ; do
438
-			USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
439
-			if [[ $USERNAME != "git" ]]; then
440
-				if [ -d /home/$USERNAME/.gnupg_fragments ]; then
441
-					if [ $REMOTE_DOMAIN ]; then
442
-						cd /home/$USERNAME/.gnupg_fragments
443
-						no_of_shares=$(ls -afq keyshare.asc.* | wc -l)
444
-						if (( no_of_shares > 0 )); then
445
-							# Pick a share index based on the domain name
446
-							# This ensures that the same share is always given to the same domain
447
-							sharenumstr=$(md5sum <<< "$REMOTE_DOMAIN")
448
-							share_index=$(echo $((0x${sharenumstr%% *} % ${no_of_shares})) | tr -d -)
449
-
450
-							# get the share filename
451
-							share_files=(/home/$USERNAME/.gnupg_fragments/keyshare.asc.*)
452
-							share_filename=${share_files[share_index]}
453
-
454
-							# create a temp directory containing the share
455
-							mkdir -p /home/$USERNAME/tempkey/.gnupg_fragments_$USERNAME
456
-							cp $share_filename /home/$USERNAME/tempkey/.gnupg_fragments_$USERNAME/
457
-
458
-							# copy the fragments directory to the remote server
459
-							/usr/bin/sshpass -p $REMOTE_PASSWORD scp -r -P $REMOTE_SSH_PORT /home/$USERNAME/tempkey/.gnupg_fragments_$USERNAME $REMOTE_SERVER
460
-							if [ ! "$?" = "0" ]; then
461
-								# Send a warning email
462
-								echo "Key share to $REMOTE_SERVER failed" | mail -s "${PROJECT_NAME} social key management" $MY_EMAIL_ADDRESS
463
-							fi
464
-
465
-							# remove the temp file/directory
466
-							shred -zu /home/$USERNAME/tempkey/.gnupg_fragments_$USERNAME/*
467
-							rm -rf /home/$USERNAME/tempkey
468
-
469
-							# Send a confirmation email
470
-							echo "Key shared to $REMOTE_SERVER" | mail -s "${PROJECT_NAME} social key management" $MY_EMAIL_ADDRESS
471
-						fi
472
-					fi
473
-				fi
474
-			fi
475
-		done
368
+        for d in /home/*/ ; do
369
+            USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
370
+            if [[ $USERNAME != "git" ]]; then
371
+                if [ -d /home/$USERNAME/.gnupg_fragments ]; then
372
+                    if [ $REMOTE_DOMAIN ]; then
373
+                        cd /home/$USERNAME/.gnupg_fragments
374
+                        no_of_shares=$(ls -afq keyshare.asc.* | wc -l)
375
+                        if (( no_of_shares > 0 )); then
376
+                            # Pick a share index based on the domain name
377
+                            # This ensures that the same share is always given to the same domain
378
+                            sharenumstr=$(md5sum <<< "$REMOTE_DOMAIN")
379
+                            share_index=$(echo $((0x${sharenumstr%% *} % ${no_of_shares})) | tr -d -)
380
+
381
+                            # get the share filename
382
+                            share_files=(/home/$USERNAME/.gnupg_fragments/keyshare.asc.*)
383
+                            share_filename=${share_files[share_index]}
384
+
385
+                            # create a temp directory containing the share
386
+                            mkdir -p /home/$USERNAME/tempkey/.gnupg_fragments_$USERNAME
387
+                            cp $share_filename /home/$USERNAME/tempkey/.gnupg_fragments_$USERNAME/
388
+
389
+                            # copy the fragments directory to the remote server
390
+                            /usr/bin/sshpass -p $REMOTE_PASSWORD scp -r -P $REMOTE_SSH_PORT /home/$USERNAME/tempkey/.gnupg_fragments_$USERNAME $REMOTE_SERVER
391
+                            if [ ! "$?" = "0" ]; then
392
+                                # Send a warning email
393
+                                echo "Key share to $REMOTE_SERVER failed" | mail -s "${PROJECT_NAME} social key management" $MY_EMAIL_ADDRESS
394
+                            fi
395
+
396
+                            # remove the temp file/directory
397
+                            shred -zu /home/$USERNAME/tempkey/.gnupg_fragments_$USERNAME/*
398
+                            rm -rf /home/$USERNAME/tempkey
399
+
400
+                            # Send a confirmation email
401
+                            echo "Key shared to $REMOTE_SERVER" | mail -s "${PROJECT_NAME} social key management" $MY_EMAIL_ADDRESS
402
+                        fi
403
+                    fi
404
+                fi
405
+            fi
406
+        done
476 407
 
477 408
         rsync -ratlzv --rsh="/usr/bin/sshpass -p $REMOTE_PASSWORD ssh -p $REMOTE_SSH_PORT -o StrictHostKeyChecking=no" $SERVER_DIRECTORY/backup $REMOTE_SERVER
478 409
         if [ ! "$?" = "0" ]; then