Browse Source

Backup email

Bob Mottram 10 years ago
parent
commit
3a922ad8c8
1 changed files with 100 additions and 62 deletions
  1. 100
    62
      install-freedombone.sh

+ 100
- 62
install-freedombone.sh View File

159
 # device name for an attached usb drive
159
 # device name for an attached usb drive
160
 USB_DRIVE=/dev/sda1
160
 USB_DRIVE=/dev/sda1
161
 
161
 
162
+# Location where the USB drive is mounted to
163
+USB_MOUNT=/media/usb
164
+
165
+# Name of a script used to create a backup of the system
166
+BACKUP_SCRIPT_NAME="backup"
167
+
162
 # memory limit for php in MB
168
 # memory limit for php in MB
163
 MAX_PHP_MEMORY=32
169
 MAX_PHP_MEMORY=32
164
 
170
 
306
       return
312
       return
307
   fi
313
   fi
308
   if [ -b $USB_DRIVE ]; then
314
   if [ -b $USB_DRIVE ]; then
309
-      if [ ! -d /media/usb ]; then
315
+      if [ ! -d $USB_MOUNT ]; then
310
           echo 'Mounting USB drive'
316
           echo 'Mounting USB drive'
311
-          mkdir /media/usb
312
-          mount $USB_DRIVE /media/usb
317
+          mkdir $USB_MOUNT
318
+          mount $USB_DRIVE $USB_MOUNT
313
       fi
319
       fi
314
       if ! [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
320
       if ! [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
315
-          if [ -d /media/usb/Maildir ]; then
321
+          if [ -d $USB_MOUNT/Maildir ]; then
316
               echo 'Maildir found on USB drive'
322
               echo 'Maildir found on USB drive'
317
-              IMPORT_MAILDIR=/media/usb/Maildir
323
+              IMPORT_MAILDIR=$USB_MOUNT/Maildir
318
           fi
324
           fi
319
-          if [ -d /media/usb/.gnupg ]; then
325
+          if [ -d $USB_MOUNT/.gnupg ]; then
320
               echo 'Importing GPG keyring'
326
               echo 'Importing GPG keyring'
321
-              cp -r /media/usb/.gnupg /home/$MY_USERNAME
327
+              cp -r $USB_MOUNT/.gnupg /home/$MY_USERNAME
322
               chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.gnupg
328
               chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.gnupg
323
               if [ -f /home/$MY_USERNAME/.gnupg/secring.gpg ]; then
329
               if [ -f /home/$MY_USERNAME/.gnupg/secring.gpg ]; then
324
-                  shred -zu /media/usb/.gnupg/secring.gpg
325
-                  shred -zu /media/usb/.gnupg/random_seed
326
-                  shred -zu /media/usb/.gnupg/trustdb.gpg
327
-                  rm -rf /media/usb/.gnupg
330
+                  shred -zu $USB_MOUNT/.gnupg/secring.gpg
331
+                  shred -zu $USB_MOUNT/.gnupg/random_seed
332
+                  shred -zu $USB_MOUNT/.gnupg/trustdb.gpg
333
+                  rm -rf $USB_MOUNT/.gnupg
328
               else
334
               else
329
                   echo 'GPG files did not copy'
335
                   echo 'GPG files did not copy'
330
                   exit 7
336
                   exit 7
331
               fi
337
               fi
332
           fi
338
           fi
333
 
339
 
334
-          if [ -f /media/usb/private_key.gpg ]; then
340
+          if [ -f $USB_MOUNT/private_key.gpg ]; then
335
               echo 'GPG private key found on USB drive'
341
               echo 'GPG private key found on USB drive'
336
-              MY_GPG_PRIVATE_KEY=/media/usb/private_key.gpg
342
+              MY_GPG_PRIVATE_KEY=$USB_MOUNT/private_key.gpg
337
           fi
343
           fi
338
-          if [ -f /media/usb/public_key.gpg ]; then
344
+          if [ -f $USB_MOUNT/public_key.gpg ]; then
339
               echo 'GPG public key found on USB drive'
345
               echo 'GPG public key found on USB drive'
340
-              MY_GPG_PUBLIC_KEY=/media/usb/public_key.gpg
346
+              MY_GPG_PUBLIC_KEY=$USB_MOUNT/public_key.gpg
341
           fi
347
           fi
342
       fi
348
       fi
343
-      if [ -d /media/usb/.ssh ]; then
349
+      if [ -d $USB_MOUNT/.ssh ]; then
344
           echo 'Importing ssh keys'
350
           echo 'Importing ssh keys'
345
-          cp -r /media/usb/.ssh /home/$MY_USERNAME
351
+          cp -r $USB_MOUNT/.ssh /home/$MY_USERNAME
346
           chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.ssh
352
           chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.ssh
347
           # for security delete the ssh keys from the usb drive
353
           # for security delete the ssh keys from the usb drive
348
           if [ -f /home/$MY_USERNAME/.ssh/id_rsa ]; then
354
           if [ -f /home/$MY_USERNAME/.ssh/id_rsa ]; then
349
-              shred -zu /media/usb/.ssh/id_rsa
350
-              shred -zu /media/usb/.ssh/id_rsa.pub
351
-              shred -zu /media/usb/.ssh/known_hosts
352
-              rm -rf /media/usb/.ssh
355
+              shred -zu $USB_MOUNT/.ssh/id_rsa
356
+              shred -zu $USB_MOUNT/.ssh/id_rsa.pub
357
+              shred -zu $USB_MOUNT/.ssh/known_hosts
358
+              rm -rf $USB_MOUNT/.ssh
353
           else
359
           else
354
               echo 'ssh files did not copy'
360
               echo 'ssh files did not copy'
355
               exit 8
361
               exit 8
356
           fi
362
           fi
357
       fi
363
       fi
358
-      if [ -f /media/usb/.emacs ]; then
364
+      if [ -f $USB_MOUNT/.emacs ]; then
359
           echo 'Importing .emacs file'
365
           echo 'Importing .emacs file'
360
-          cp -f /media/usb/.emacs /home/$MY_USERNAME/.emacs
366
+          cp -f $USB_MOUNT/.emacs /home/$MY_USERNAME/.emacs
361
           chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.emacs
367
           chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.emacs
362
       fi
368
       fi
363
-      if [ -d /media/usb/.emacs.d ]; then
369
+      if [ -d $USB_MOUNT/.emacs.d ]; then
364
           echo 'Importing .emacs.d directory'
370
           echo 'Importing .emacs.d directory'
365
-          cp -r /media/usb/.emacs.d /home/$MY_USERNAME
371
+          cp -r $USB_MOUNT/.emacs.d /home/$MY_USERNAME
366
           chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.emacs.d
372
           chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.emacs.d
367
       fi
373
       fi
368
-      if [ -d /media/usb/personal ]; then
374
+      if [ -d $USB_MOUNT/personal ]; then
369
           echo 'Importing personal directory'
375
           echo 'Importing personal directory'
370
-          cp -r /media/usb/personal /home/$MY_USERNAME
376
+          cp -r $USB_MOUNT/personal /home/$MY_USERNAME
371
           chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/personal
377
           chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/personal
372
       fi
378
       fi
373
   else
379
   else
374
-      if [ -d /media/usb ]; then
375
-          umount /media/usb
376
-          rm -rf /media/usb
380
+      if [ -d $USB_MOUNT ]; then
381
+          umount $USB_MOUNT
382
+          rm -rf $USB_MOUNT
377
       fi
383
       fi
378
       echo 'No USB drive attached'
384
       echo 'No USB drive attached'
379
   fi
385
   fi
1528
   if grep -Fxq "import_email" $COMPLETION_FILE; then
1534
   if grep -Fxq "import_email" $COMPLETION_FILE; then
1529
       if [[ $SYSTEM_TYPE == "$VARIANT_MAILBOX" ]]; then
1535
       if [[ $SYSTEM_TYPE == "$VARIANT_MAILBOX" ]]; then
1530
           echo $EMAIL_COMPLETE_MSG
1536
           echo $EMAIL_COMPLETE_MSG
1531
-          if [ -d /media/usb ]; then
1532
-              umount /media/usb
1533
-              rm -rf /media/usb
1537
+          if [ -d $USB_MOUNT ]; then
1538
+              umount $USB_MOUNT
1539
+              rm -rf $USB_MOUNT
1534
               echo '            You can now remove the USB drive'
1540
               echo '            You can now remove the USB drive'
1535
           fi
1541
           fi
1536
           exit 0
1542
           exit 0
1554
       echo ''
1560
       echo ''
1555
       echo $EMAIL_COMPLETE_MSG
1561
       echo $EMAIL_COMPLETE_MSG
1556
       echo ''
1562
       echo ''
1557
-      if [ -d /media/usb ]; then
1558
-          umount /media/usb
1559
-          rm -rf /media/usb
1563
+      if [ -d $USB_MOUNT ]; then
1564
+          umount $USB_MOUNT
1565
+          rm -rf $USB_MOUNT
1560
           echo '            You can now remove the USB drive'
1566
           echo '            You can now remove the USB drive'
1561
       fi
1567
       fi
1562
       exit 0
1568
       exit 0
1606
   if grep -Fxq "install_owncloud" $COMPLETION_FILE; then
1612
   if grep -Fxq "install_owncloud" $COMPLETION_FILE; then
1607
       if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" ]]; then
1613
       if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" ]]; then
1608
           # unmount any attached usb drive
1614
           # unmount any attached usb drive
1609
-          if [ -d /media/usb ]; then
1610
-              umount /media/usb
1611
-              rm -rf /media/usb
1615
+          if [ -d $USB_MOUNT ]; then
1616
+              umount $USB_MOUNT
1617
+              rm -rf $USB_MOUNT
1612
           fi
1618
           fi
1613
           echo ''
1619
           echo ''
1614
           echo $OWNCLOUD_COMPLETION_MSG1
1620
           echo $OWNCLOUD_COMPLETION_MSG1
1778
 
1784
 
1779
   if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" ]]; then
1785
   if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" ]]; then
1780
       # unmount any attached usb drive
1786
       # unmount any attached usb drive
1781
-      if [ -d /media/usb ]; then
1782
-          umount /media/usb
1783
-          rm -rf /media/usb
1787
+      if [ -d $USB_MOUNT ]; then
1788
+          umount $USB_MOUNT
1789
+          rm -rf $USB_MOUNT
1784
       fi
1790
       fi
1785
       echo ''
1791
       echo ''
1786
       echo $OWNCLOUD_COMPLETION_MSG1
1792
       echo $OWNCLOUD_COMPLETION_MSG1
2711
       return
2717
       return
2712
   fi
2718
   fi
2713
   echo '#!/bin/bash' > /usr/bin/attach-music
2719
   echo '#!/bin/bash' > /usr/bin/attach-music
2714
-  echo 'if [ -d /var/media ]; then' >> /usr/bin/attach-music
2715
-  echo '  umount /var/media' >> /usr/bin/attach-music
2720
+  echo "if [ -d $USB_MOUNT ]; then" >> /usr/bin/attach-music
2721
+  echo "  umount $USB_MOUNT" >> /usr/bin/attach-music
2716
   echo 'fi' >> /usr/bin/attach-music
2722
   echo 'fi' >> /usr/bin/attach-music
2717
-  echo 'if [ ! -d /var/media ]; then' >> /usr/bin/attach-music
2718
-  echo '  mkdir /var/media' >> /usr/bin/attach-music
2723
+  echo "if [ ! -d $USB_MOUNT ]; then" >> /usr/bin/attach-music
2724
+  echo "  mkdir $USB_MOUNT" >> /usr/bin/attach-music
2719
   echo 'fi' >> /usr/bin/attach-music
2725
   echo 'fi' >> /usr/bin/attach-music
2720
-  echo 'mount /dev/sda1 /var/media' >> /usr/bin/attach-music
2721
-  echo 'chown root:root /var/media' >> /usr/bin/attach-music
2722
-  echo 'chown -R minidlna:minidlna /var/media/*' >> /usr/bin/attach-music
2726
+  echo "mount /dev/sda1 $USB_MOUNT" >> /usr/bin/attach-music
2727
+  echo "chown root:root $USB_MOUNT" >> /usr/bin/attach-music
2728
+  echo "chown -R minidlna:minidlna $USB_MOUNT/*" >> /usr/bin/attach-music
2723
   echo 'minidlnad -R' >> /usr/bin/attach-music
2729
   echo 'minidlnad -R' >> /usr/bin/attach-music
2724
   chmod +x /usr/bin/attach-music
2730
   chmod +x /usr/bin/attach-music
2725
   ln -s /usr/bin/attach-music /usr/bin/attach-usb
2731
   ln -s /usr/bin/attach-music /usr/bin/attach-usb
2728
   ln -s /usr/bin/attach-music /usr/bin/attach-media
2734
   ln -s /usr/bin/attach-music /usr/bin/attach-media
2729
 
2735
 
2730
   echo '#!/bin/bash' > /usr/bin/remove-music
2736
   echo '#!/bin/bash' > /usr/bin/remove-music
2731
-  echo 'if [ -d /var/media ]; then' >> /usr/bin/remove-music
2732
-  echo '  umount /var/media' >> /usr/bin/remove-music
2733
-  echo '  rm -rf /var/media' >> /usr/bin/remove-music
2737
+  echo "if [ -d $USB_MOUNT ]; then" >> /usr/bin/remove-music
2738
+  echo "  umount $USB_MOUNT" >> /usr/bin/remove-music
2739
+  echo "  rm -rf $USB_MOUNT" >> /usr/bin/remove-music
2734
   echo 'fi' >> /usr/bin/remove-music
2740
   echo 'fi' >> /usr/bin/remove-music
2735
   chmod +x /usr/bin/remove-music
2741
   chmod +x /usr/bin/remove-music
2736
   ln -s /usr/bin/remove-music /usr/bin/detach-music
2742
   ln -s /usr/bin/remove-music /usr/bin/detach-music
2759
     echo "media_dir=P,/home/$MY_USERNAME/Pictures" >> /etc/minidlna.conf
2765
     echo "media_dir=P,/home/$MY_USERNAME/Pictures" >> /etc/minidlna.conf
2760
   fi
2766
   fi
2761
   if ! grep -q "/home/$MY_USERNAME/Videos" /etc/minidlna.conf; then
2767
   if ! grep -q "/home/$MY_USERNAME/Videos" /etc/minidlna.conf; then
2762
-	  echo "media_dir=V,/home/$MY_USERNAME/Videos" >> /etc/minidlna.conf
2768
+      echo "media_dir=V,/home/$MY_USERNAME/Videos" >> /etc/minidlna.conf
2763
   fi
2769
   fi
2764
-  if ! grep -q "/var/media/Music" /etc/minidlna.conf; then
2765
-	  echo "media_dir=A,/var/media/Music" >> /etc/minidlna.conf
2770
+  if ! grep -q "$USB_MOUNT/Music" /etc/minidlna.conf; then
2771
+      echo "media_dir=A,$USB_MOUNT/Music" >> /etc/minidlna.conf
2766
   fi
2772
   fi
2767
-  if ! grep -q "/var/media/Pictures" /etc/minidlna.conf; then
2768
-	  echo "media_dir=P,/var/media/Pictures" >> /etc/minidlna.conf
2773
+  if ! grep -q "$USB_MOUNT/Pictures" /etc/minidlna.conf; then
2774
+      echo "media_dir=P,$USB_MOUNT/Pictures" >> /etc/minidlna.conf
2769
   fi
2775
   fi
2770
-  if ! grep -q "/var/media/Videos" /etc/minidlna.conf; then
2771
-	  echo "media_dir=V,/var/media/Videos" >> /etc/minidlna.conf
2776
+  if ! grep -q "$USB_MOUNT/Videos" /etc/minidlna.conf; then
2777
+      echo "media_dir=V,$USB_MOUNT/Videos" >> /etc/minidlna.conf
2772
   fi
2778
   fi
2773
   sed -i 's/#root_container=./root_container=B/g' /etc/minidlna.conf
2779
   sed -i 's/#root_container=./root_container=B/g' /etc/minidlna.conf
2774
   sed -i 's/#network_interface=/network_interface=eth0/g' /etc/minidlna.conf
2780
   sed -i 's/#network_interface=/network_interface=eth0/g' /etc/minidlna.conf
2981
   echo 'install_mediagoblin' >> $COMPLETION_FILE
2987
   echo 'install_mediagoblin' >> $COMPLETION_FILE
2982
 }
2988
 }
2983
 
2989
 
2990
+function create_backup_script {
2991
+  if grep -Fxq "create_backup_script" $COMPLETION_FILE; then
2992
+      return
2993
+  fi
2994
+  apt-get -y --force-yes install obnam
2995
+  echo '#!/bin/bash' > /usr/bin/$BACKUP_SCRIPT_NAME
2996
+  echo "if [ -b $USB_DRIVE ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
2997
+  echo "  if [ ! -d $USB_MOUNT ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
2998
+  echo "    mkdir $USB_MOUNT" >> /usr/bin/$BACKUP_SCRIPT_NAME
2999
+  echo "    mount $USB_DRIVE $USB_MOUNT" >> /usr/bin/$BACKUP_SCRIPT_NAME
3000
+  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3001
+  echo "  if [ ! -d $USB_MOUNT/backup ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
3002
+  echo "    mkdir $USB_MOUNT/backup" >> /usr/bin/$BACKUP_SCRIPT_NAME
3003
+  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3004
+  # email
3005
+  if ! [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
3006
+      echo "  if [ ! -d $USB_MOUNT/backup/Maildir ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
3007
+      echo "    mkdir $USB_MOUNT/backup/Maildir" >> /usr/bin/$BACKUP_SCRIPT_NAME
3008
+      echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3009
+      echo "  obnam -r $USB_MOUNT/backup/Maildir /home/$MY_USERNAME/Maildir /home/$MY_USERNAME/.gnupg /home/$MY_USERNAME/.muttrc /home/$MY_USERNAME/.procmailrc" >> /usr/bin/$BACKUP_SCRIPT_NAME
3010
+  fi
3011
+
3012
+  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
3013
+  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
3014
+  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
3015
+  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
3016
+  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3017
+  chmod +x /usr/bin/$BACKUP_SCRIPT_NAME
3018
+
3019
+  echo 'create_backup_script' >> $COMPLETION_FILE
3020
+}
3021
+
2984
 function install_final {
3022
 function install_final {
2985
   if grep -Fxq "install_final" $COMPLETION_FILE; then
3023
   if grep -Fxq "install_final" $COMPLETION_FILE; then
2986
       return
3024
       return
2987
   fi
3025
   fi
2988
   # unmount any attached usb drive
3026
   # unmount any attached usb drive
2989
-  if [ -d /media/usb ]; then
2990
-      umount /media/usb
2991
-      rm -rf /media/usb
3027
+  if [ -d $USB_MOUNT ]; then
3028
+      umount $USB_MOUNT
3029
+      rm -rf $USB_MOUNT
2992
   fi
3030
   fi
2993
   apt-get -y --force-yes autoremove
3031
   apt-get -y --force-yes autoremove
2994
   echo 'install_final' >> $COMPLETION_FILE
3032
   echo 'install_final' >> $COMPLETION_FILE