Browse Source

Restore from usb

Bob Mottram 10 years ago
parent
commit
80d9fdf23c
1 changed files with 75 additions and 7 deletions
  1. 75
    7
      install-freedombone.sh

+ 75
- 7
install-freedombone.sh View File

@@ -301,11 +301,12 @@ function check_hwrng {
301 301
   fi
302 302
 }
303 303
 
304
-function create_backup_script {
305
-  if grep -Fxq "create_backup_script" $COMPLETION_FILE; then
306
-      return
304
+function import_gpg_key_to_root {
305
+  if [ ! $MY_GPG_PUBLIC_KEY ]; then
306
+      MY_GPG_PUBLIC_KEY=/tmp/public_key.gpg
307 307
   fi
308
-  apt-get -y --force-yes install duplicity gnupg
308
+
309
+  apt-get -y --force-yes install gnupg
309 310
 
310 311
   if [ ! $MY_GPG_PUBLIC_KEY_ID ]; then
311 312
       MY_GPG_PUBLIC_KEY_ID=$(su -c "gpg --list-keys $MY_USERNAME@$DOMAIN_NAME | grep 'pub '" - $MY_USERNAME | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}')
@@ -313,9 +314,6 @@ function create_backup_script {
313 314
 
314 315
   # make sure that the root user has access to your gpg public key
315 316
   if [ $MY_GPG_PUBLIC_KEY_ID ]; then
316
-      if [ ! $MY_GPG_PUBLIC_KEY ]; then
317
-          MY_GPG_PUBLIC_KEY=/tmp/public_key.gpg
318
-      fi
319 317
       # This is a compromise. backup needs access to things which the user
320 318
       # doesn't have access to, but also needs to be able to encrypt as the user
321 319
       # Perhaps there is some better way to do this.
@@ -329,6 +327,15 @@ function create_backup_script {
329 327
       shred -zu /home/$MY_USERNAME/temp_private_key.txt
330 328
       shred -zu /home/$MY_USERNAME/temp_trust.txt
331 329
   fi
330
+}
331
+
332
+function create_backup_script {
333
+  if grep -Fxq "create_backup_script" $COMPLETION_FILE; then
334
+      return
335
+  fi
336
+  apt-get -y --force-yes install duplicity
337
+
338
+  import_gpg_key_to_root
332 339
 
333 340
   echo '#!/bin/bash' > /usr/bin/$BACKUP_SCRIPT_NAME
334 341
   echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
@@ -466,6 +473,67 @@ function create_restore_script {
466 473
       return
467 474
   fi
468 475
   apt-get -y --force-yes install duplicity
476
+
477
+  import_gpg_key_to_root
478
+
479
+  echo '#!/bin/bash' > /usr/bin/$RESTORE_SCRIPT_NAME
480
+  echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
481
+  echo 'GPG_KEY=$1' >> /usr/bin/$RESTORE_SCRIPT_NAME
482
+  echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
483
+  echo 'if [ ! $GPG_KEY ]; then' >> /usr/bin/$RESTORE_SCRIPT_NAME
484
+  echo "  if [ ! $MY_GPG_PUBLIC_KEY_ID ]; then" >> /usr/bin/$RESTORE_SCRIPT_NAME
485
+  echo '    echo "You need to specify a GPG key ID with which to restore from backup"' >> /usr/bin/$RESTORE_SCRIPT_NAME
486
+  echo '    exit 1' >> /usr/bin/$RESTORE_SCRIPT_NAME
487
+  echo '  fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
488
+  echo "  GPG_KEY='$MY_GPG_PUBLIC_KEY_ID'" >> /usr/bin/$RESTORE_SCRIPT_NAME
489
+  echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
490
+  echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
491
+  echo "if [ ! -b $USB_DRIVE ]; then" >> /usr/bin/$RESTORE_SCRIPT_NAME
492
+  echo '  echo "Please attach a USB drive"' >> /usr/bin/$RESTORE_SCRIPT_NAME
493
+  echo '  exit 1' >> /usr/bin/$RESTORE_SCRIPT_NAME
494
+  echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
495
+  echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
496
+  echo "if [ ! -d $USB_MOUNT ]; then" >> /usr/bin/$RESTORE_SCRIPT_NAME
497
+  echo "  mkdir $USB_MOUNT" >> /usr/bin/$RESTORE_SCRIPT_NAME
498
+  echo "  mount $USB_DRIVE $USB_MOUNT" >> /usr/bin/$RESTORE_SCRIPT_NAME
499
+  echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
500
+  echo "if [ ! -d $USB_MOUNT/backup ]; then" >> /usr/bin/$RESTORE_SCRIPT_NAME
501
+  echo '  echo "No backup directory found on the USB drive."' >> /usr/bin/$RESTORE_SCRIPT_NAME
502
+  echo '  exit 2' >> /usr/bin/$RESTORE_SCRIPT_NAME
503
+  echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
504
+  echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
505
+
506
+  echo "if [ -d $PUBLIC_MAILING_LIST_DIRECTORY ]; then" >> /usr/bin/$RESTORE_SCRIPT_NAME
507
+  echo '  echo "Restoring public mailing list"' >> /usr/bin/$RESTORE_SCRIPT_NAME
508
+  echo "  duplicity --force file://$USB_MOUNT/backup/publicmailinglist $PUBLIC_MAILING_LIST_DIRECTORY" >> /usr/bin/$RESTORE_SCRIPT_NAME
509
+  echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
510
+
511
+  echo "if [ -d $XMPP_DIRECTORY ]; then" >> /usr/bin/$RESTORE_SCRIPT_NAME
512
+  echo '  echo "Restoring XMPP settings"' >> /usr/bin/$RESTORE_SCRIPT_NAME
513
+  echo "  duplicity --force file://$USB_MOUNT/backup/xmpp $XMPP_DIRECTORY" >> /usr/bin/$RESTORE_SCRIPT_NAME
514
+  echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
515
+
516
+  echo "if [ -d /home/$MY_USERNAME/tempfiles ]; then" >> /usr/bin/$RESTORE_SCRIPT_NAME
517
+  echo '  rm -rf /home/$MY_USERNAME/tempfiles/*' >> /usr/bin/$RESTORE_SCRIPT_NAME
518
+  echo 'else' >> /usr/bin/$RESTORE_SCRIPT_NAME
519
+  echo '  mkdir /home/$MY_USERNAME/tempfiles' >> /usr/bin/$RESTORE_SCRIPT_NAME
520
+  echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
521
+  echo 'echo "Restoring web content and miscellaneous files"' >> /usr/bin/$RESTORE_SCRIPT_NAME
522
+  echo "duplicity --force file://$USB_MOUNT/backup/tempfiles /home/$MY_USERNAME/tempfiles" >> /usr/bin/$RESTORE_SCRIPT_NAME
523
+
524
+  echo "if [ -d /home/$MY_USERNAME/Maildir ]; then" >> /usr/bin/$RESTORE_SCRIPT_NAME
525
+  echo '  echo "Restoring emails"' >> /usr/bin/$RESTORE_SCRIPT_NAME
526
+  echo "  duplicity --force file://$USB_MOUNT/backup/Maildir /home/$MY_USERNAME/Maildir" >> /usr/bin/$RESTORE_SCRIPT_NAME
527
+  echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
528
+
529
+  echo "if [ -d /var/cache/minidlna ]; then" >> /usr/bin/$RESTORE_SCRIPT_NAME
530
+  echo '  echo "Restoring DLNA cache"' >> /usr/bin/$RESTORE_SCRIPT_NAME
531
+  echo "  duplicity --force file://$USB_MOUNT/backup/dlna /var/cache/minidlna" >> /usr/bin/$RESTORE_SCRIPT_NAME
532
+  echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
533
+
534
+  echo 'echo "Restore completed"' >> /usr/bin/$RESTORE_SCRIPT_NAME
535
+  echo 'exit 0' >> /usr/bin/$RESTORE_SCRIPT_NAME
536
+
469 537
   echo 'create_restore_script' >> $COMPLETION_FILE
470 538
 }
471 539