瀏覽代碼

Backup email

Bob Mottram 10 年之前
父節點
當前提交
3a922ad8c8
共有 1 個檔案被更改,包括 100 行新增62 行删除
  1. 100
    62
      install-freedombone.sh

+ 100
- 62
install-freedombone.sh 查看文件

@@ -159,6 +159,12 @@ INSTALL_DIR=$HOME/build
159 159
 # device name for an attached usb drive
160 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 168
 # memory limit for php in MB
163 169
 MAX_PHP_MEMORY=32
164 170
 
@@ -306,74 +312,74 @@ function search_for_attached_usb_drive {
306 312
       return
307 313
   fi
308 314
   if [ -b $USB_DRIVE ]; then
309
-      if [ ! -d /media/usb ]; then
315
+      if [ ! -d $USB_MOUNT ]; then
310 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 319
       fi
314 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 322
               echo 'Maildir found on USB drive'
317
-              IMPORT_MAILDIR=/media/usb/Maildir
323
+              IMPORT_MAILDIR=$USB_MOUNT/Maildir
318 324
           fi
319
-          if [ -d /media/usb/.gnupg ]; then
325
+          if [ -d $USB_MOUNT/.gnupg ]; then
320 326
               echo 'Importing GPG keyring'
321
-              cp -r /media/usb/.gnupg /home/$MY_USERNAME
327
+              cp -r $USB_MOUNT/.gnupg /home/$MY_USERNAME
322 328
               chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.gnupg
323 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 334
               else
329 335
                   echo 'GPG files did not copy'
330 336
                   exit 7
331 337
               fi
332 338
           fi
333 339
 
334
-          if [ -f /media/usb/private_key.gpg ]; then
340
+          if [ -f $USB_MOUNT/private_key.gpg ]; then
335 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 343
           fi
338
-          if [ -f /media/usb/public_key.gpg ]; then
344
+          if [ -f $USB_MOUNT/public_key.gpg ]; then
339 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 347
           fi
342 348
       fi
343
-      if [ -d /media/usb/.ssh ]; then
349
+      if [ -d $USB_MOUNT/.ssh ]; then
344 350
           echo 'Importing ssh keys'
345
-          cp -r /media/usb/.ssh /home/$MY_USERNAME
351
+          cp -r $USB_MOUNT/.ssh /home/$MY_USERNAME
346 352
           chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.ssh
347 353
           # for security delete the ssh keys from the usb drive
348 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 359
           else
354 360
               echo 'ssh files did not copy'
355 361
               exit 8
356 362
           fi
357 363
       fi
358
-      if [ -f /media/usb/.emacs ]; then
364
+      if [ -f $USB_MOUNT/.emacs ]; then
359 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 367
           chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.emacs
362 368
       fi
363
-      if [ -d /media/usb/.emacs.d ]; then
369
+      if [ -d $USB_MOUNT/.emacs.d ]; then
364 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 372
           chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.emacs.d
367 373
       fi
368
-      if [ -d /media/usb/personal ]; then
374
+      if [ -d $USB_MOUNT/personal ]; then
369 375
           echo 'Importing personal directory'
370
-          cp -r /media/usb/personal /home/$MY_USERNAME
376
+          cp -r $USB_MOUNT/personal /home/$MY_USERNAME
371 377
           chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/personal
372 378
       fi
373 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 383
       fi
378 384
       echo 'No USB drive attached'
379 385
   fi
@@ -1528,9 +1534,9 @@ function import_email {
1528 1534
   if grep -Fxq "import_email" $COMPLETION_FILE; then
1529 1535
       if [[ $SYSTEM_TYPE == "$VARIANT_MAILBOX" ]]; then
1530 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 1540
               echo '            You can now remove the USB drive'
1535 1541
           fi
1536 1542
           exit 0
@@ -1554,9 +1560,9 @@ function import_email {
1554 1560
       echo ''
1555 1561
       echo $EMAIL_COMPLETE_MSG
1556 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 1566
           echo '            You can now remove the USB drive'
1561 1567
       fi
1562 1568
       exit 0
@@ -1606,9 +1612,9 @@ function install_owncloud {
1606 1612
   if grep -Fxq "install_owncloud" $COMPLETION_FILE; then
1607 1613
       if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" ]]; then
1608 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 1618
           fi
1613 1619
           echo ''
1614 1620
           echo $OWNCLOUD_COMPLETION_MSG1
@@ -1778,9 +1784,9 @@ function install_owncloud {
1778 1784
 
1779 1785
   if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" ]]; then
1780 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 1790
       fi
1785 1791
       echo ''
1786 1792
       echo $OWNCLOUD_COMPLETION_MSG1
@@ -2711,15 +2717,15 @@ function script_for_attaching_usb_drive {
2711 2717
       return
2712 2718
   fi
2713 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 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 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 2729
   echo 'minidlnad -R' >> /usr/bin/attach-music
2724 2730
   chmod +x /usr/bin/attach-music
2725 2731
   ln -s /usr/bin/attach-music /usr/bin/attach-usb
@@ -2728,9 +2734,9 @@ function script_for_attaching_usb_drive {
2728 2734
   ln -s /usr/bin/attach-music /usr/bin/attach-media
2729 2735
 
2730 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 2740
   echo 'fi' >> /usr/bin/remove-music
2735 2741
   chmod +x /usr/bin/remove-music
2736 2742
   ln -s /usr/bin/remove-music /usr/bin/detach-music
@@ -2759,16 +2765,16 @@ function install_dlna_server {
2759 2765
     echo "media_dir=P,/home/$MY_USERNAME/Pictures" >> /etc/minidlna.conf
2760 2766
   fi
2761 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 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 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 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 2778
   fi
2773 2779
   sed -i 's/#root_container=./root_container=B/g' /etc/minidlna.conf
2774 2780
   sed -i 's/#network_interface=/network_interface=eth0/g' /etc/minidlna.conf
@@ -2981,14 +2987,46 @@ function install_mediagoblin {
2981 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 3022
 function install_final {
2985 3023
   if grep -Fxq "install_final" $COMPLETION_FILE; then
2986 3024
       return
2987 3025
   fi
2988 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 3030
   fi
2993 3031
   apt-get -y --force-yes autoremove
2994 3032
   echo 'install_final' >> $COMPLETION_FILE