Bob Mottram 10 лет назад
Родитель
Сommit
a5dd693c84
1 измененных файлов: 312 добавлений и 185 удалений
  1. 312
    185
      install-freedombone.sh

+ 312
- 185
install-freedombone.sh Просмотреть файл

@@ -234,15 +234,15 @@ BACKUP_SCRIPT_NAME="backup"
234 234
 # Name of a script used to restore the system from usb drive
235 235
 RESTORE_SCRIPT_NAME="restore"
236 236
 
237
-# The command used for backups
238
-BACKUP_COMMAND="duplicity"
239
-
240 237
 # name of a script used to backup to friends servers
241 238
 BACKUP_TO_FRIENDS_SCRIPT_NAME="backup2friends"
242 239
 
243 240
 # name of a script used to restore backed up data from a friend
244 241
 RESTORE_FROM_FRIEND_SCRIPT_NAME="restorefromfriend"
245 242
 
243
+# Location of the certificate used to encrypt backups
244
+BACKUP_CERTIFICATE=/etc/ssl/private/backup.key
245
+
246 246
 # memory limit for php in MB
247 247
 MAX_PHP_MEMORY=64
248 248
 
@@ -362,6 +362,9 @@ function read_configuration {
362 362
       if grep -q "LOCAL_NETWORK_STATIC_IP_ADDRESS" $CONFIGURATION_FILE; then
363 363
           LOCAL_NETWORK_STATIC_IP_ADDRESS=$(grep "LOCAL_NETWORK_STATIC_IP_ADDRESS" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
364 364
       fi
365
+      if grep -q "BACKUP_CERTIFICATE" $CONFIGURATION_FILE; then
366
+          BACKUP_CERTIFICATE=$(grep "BACKUP_CERTIFICATE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
367
+      fi
365 368
       if grep -q "ROUTER_IP_ADDRESS" $CONFIGURATION_FILE; then
366 369
           ROUTER_IP_ADDRESS=$(grep "ROUTER_IP_ADDRESS" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
367 370
       fi
@@ -526,62 +529,15 @@ function check_hwrng {
526 529
   fi
527 530
 }
528 531
 
529
-function import_gpg_key_to_root {
530
-  # This is a compromise. backup needs access to things which the user
531
-  # doesn't have access to, but also needs to be able to encrypt as the user
532
-  # Perhaps there is some better way to do this.
533
-  # Maybe there should be a separate backup GPG key.  Discuss.
534
-  if [ ! $MY_GPG_PUBLIC_KEY ]; then
535
-      MY_GPG_PUBLIC_KEY=/tmp/public_key.gpg
536
-  fi
537
-
538
-  apt-get -y --force-yes install gnupg
539
-
540
-  if [ ! $MY_GPG_PUBLIC_KEY_ID ]; then
541
-      MY_GPG_PUBLIC_KEY_ID=$(su -c "gpg --list-keys $MY_EMAIL_ADDRESS | grep 'pub '" - $MY_USERNAME | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}')
542
-  fi
543
-
544
-  # if the above fails because the key has an unexpected email address
545
-  if [ ! $MY_GPG_PUBLIC_KEY_ID ]; then
546
-      # copy the whole keyring from the user
547
-      cp -r /home/$MY_USERNAME/.gnupg /root
548
-      # get the first entry, which we assume to be the imported key
549
-      MY_GPG_PUBLIC_KEY_ID=$(gpg --list-keys | grep "pub " | head -n 1 | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}')
550
-  else
551
-      # make sure that the root user has access to your gpg public key
552
-      if [ $MY_GPG_PUBLIC_KEY_ID ]; then
553
-          su -c "gpg --export-ownertrust > ~/temp_trust.txt" - $MY_USERNAME
554
-          su -c "gpg --output $MY_GPG_PUBLIC_KEY --armor --export $MY_GPG_PUBLIC_KEY_ID" - $MY_USERNAME
555
-          su -c "gpg --output ~/temp_private_key.txt --armor --export-secret-key $MY_GPG_PUBLIC_KEY_ID" - $MY_USERNAME
556
-          gpg --import-ownertrust < /home/$MY_USERNAME/temp_trust.txt
557
-          gpg --import $MY_GPG_PUBLIC_KEY
558
-          gpg --allow-secret-key-import --import /home/$MY_USERNAME/temp_private_key.txt
559
-          shred -zu /home/$MY_USERNAME/temp_private_key.txt
560
-          shred -zu /home/$MY_USERNAME/temp_trust.txt
561
-      fi
562
-  fi
563
-}
564
-
532
+# For rsyncrypto usage see http://archive09.linux.com/feature/125322
565 533
 function create_backup_script {
566 534
   if grep -Fxq "create_backup_script" $COMPLETION_FILE; then
567 535
       return
568 536
   fi
569
-  apt-get -y --force-yes install duplicity
570
-
571
-  import_gpg_key_to_root
537
+  apt-get -y --force-yes install rsyncrypto
572 538
 
573 539
   echo '#!/bin/bash' > /usr/bin/$BACKUP_SCRIPT_NAME
574 540
   echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
575
-  echo 'GPG_KEY=$1' >> /usr/bin/$BACKUP_SCRIPT_NAME
576
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
577
-  echo 'if [ ! $GPG_KEY ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
578
-  echo "  if [ ! $MY_GPG_PUBLIC_KEY_ID ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
579
-  echo '    echo "You need to specify a GPG key ID with which to create the backup"' >> /usr/bin/$BACKUP_SCRIPT_NAME
580
-  echo '    exit 1' >> /usr/bin/$BACKUP_SCRIPT_NAME
581
-  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
582
-  echo "  GPG_KEY='$MY_GPG_PUBLIC_KEY_ID'" >> /usr/bin/$BACKUP_SCRIPT_NAME
583
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
584
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
585 541
   echo "if [ ! -b $USB_DRIVE ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
586 542
   echo '  echo "Please attach a USB drive"' >> /usr/bin/$BACKUP_SCRIPT_NAME
587 543
   echo '  exit 1' >> /usr/bin/$BACKUP_SCRIPT_NAME
@@ -601,6 +557,19 @@ function create_backup_script {
601 557
   echo '  exit 27' >> /usr/bin/$BACKUP_SCRIPT_NAME
602 558
   echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
603 559
   echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
560
+  
561
+  echo "if [ ! -f $BACKUP_CERTIFICATE ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
562
+  echo '    echo "Creating backup key"' >> /usr/bin/$BACKUP_SCRIPT_NAME
563
+  echo '    makecert backup' >> /usr/bin/$BACKUP_SCRIPT_NAME
564
+  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
565
+  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
566
+
567
+  echo "if [ ! -f $BACKUP_CERTIFICATE.gpg ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
568
+  echo '  echo "GPG encrypt the backup key"' >> /usr/bin/$BACKUP_SCRIPT_NAME
569
+  echo "  gpg -c $BACKUP_CERTIFICATE" >> /usr/bin/$BACKUP_SCRIPT_NAME
570
+  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
571
+  echo "cp $BACKUP_CERTIFICATE.gpg $USB_MOUNT/backup/key.gpg" >> /usr/bin/$BACKUP_SCRIPT_NAME
572
+  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
604 573
 
605 574
   echo '# Put some files into a temporary directory so that they can be easily backed up' >> /usr/bin/$BACKUP_SCRIPT_NAME
606 575
   echo "if [ ! -d /home/$MY_USERNAME/tempfiles ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
@@ -630,76 +599,95 @@ function create_backup_script {
630 599
       echo "tar -czvf /home/$MY_USERNAME/tempfiles/blog.tar.gz /var/www/$FULLBLOG_DOMAIN_NAME/htdocs" >> /usr/bin/$BACKUP_SCRIPT_NAME
631 600
   fi
632 601
   echo 'echo "Archiving miscellaneous files"' >> /usr/bin/$BACKUP_SCRIPT_NAME
633
-  echo "tar -czvf /home/$MY_USERNAME/tempfiles/miscfiles.tar.gz /home/$MY_USERNAME/.gnupg /home/$MY_USERNAME/.muttrc /home/$MY_USERNAME/.procmailrc /home/$MY_USERNAME/.ssh /root/backupkey /var/lib/mysql/mysql /var/www /etc/nginx/sites-available /etc/ssl/private /etc/ssl/certs $GITHUB_BACKUP_DIRECTORY /home/$MY_USERNAME/projects /home/$MY_USERNAME/personal /home/$MY_USERNAME/README" >> /usr/bin/$BACKUP_SCRIPT_NAME
602
+  echo "tar -czvf /home/$MY_USERNAME/tempfiles/miscfiles.tar.gz /home/$MY_USERNAME/.gnupg /home/$MY_USERNAME/.muttrc /home/$MY_USERNAME/.procmailrc /home/$MY_USERNAME/.ssh /var/lib/mysql/mysql /etc/nginx/sites-available /home/$MY_USERNAME/README" >> /usr/bin/$BACKUP_SCRIPT_NAME
634 603
 
635 604
   echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
605
+  echo '# Backup certificates' >> /usr/bin/$BACKUP_SCRIPT_NAME
606
+  echo "if [ -d /etc/ssl ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
607
+  echo '  echo "Backing up certificates"' >> /usr/bin/$BACKUP_SCRIPT_NAME
608
+  echo "  if [ ! -d $USB_MOUNT/backup/ssl ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
609
+  echo "    mkdir -p $USB_MOUNT/backup/ssl" >> /usr/bin/$BACKUP_SCRIPT_NAME
610
+  echo "    touch $USB_MOUNT/ssl.keys" >> /usr/bin/$BACKUP_SCRIPT_NAME
611
+  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
612
+  echo "  rsyncrypto  -r /etc/ssl $USB_MOUNT/backup/ssl $USB_MOUNT/ssl.keys $BACKUP_CERTIFICATE" >> /usr/bin/$BACKUP_SCRIPT_NAME
613
+  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
614
+  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
615
+  echo '# Backup projects' >> /usr/bin/$BACKUP_SCRIPT_NAME
616
+  echo "if [ -d /home/$MY_USERNAME/projects ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
617
+  echo '  echo "Backing up projects"' >> /usr/bin/$BACKUP_SCRIPT_NAME
618
+  echo "  if [ ! -d $USB_MOUNT/backup/projects ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
619
+  echo "    mkdir -p $USB_MOUNT/backup/projects" >> /usr/bin/$BACKUP_SCRIPT_NAME
620
+  echo "    touch $USB_MOUNT/projects.keys" >> /usr/bin/$BACKUP_SCRIPT_NAME
621
+  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
622
+  echo "  rsyncrypto  -r /home/$MY_USERNAME/projects $USB_MOUNT/backup/projects $USB_MOUNT/projects.keys $BACKUP_CERTIFICATE" >> /usr/bin/$BACKUP_SCRIPT_NAME
623
+  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
624
+  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
625
+  echo '# Backup personal settings' >> /usr/bin/$BACKUP_SCRIPT_NAME
626
+  echo "if [ -d /home/$MY_USERNAME/personal ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
627
+  echo '  echo "Backing up personal settings"' >> /usr/bin/$BACKUP_SCRIPT_NAME
628
+  echo "  if [ ! -d $USB_MOUNT/backup/personal ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
629
+  echo "    mkdir -p $USB_MOUNT/backup/personal" >> /usr/bin/$BACKUP_SCRIPT_NAME
630
+  echo "    touch $USB_MOUNT/personal.keys" >> /usr/bin/$BACKUP_SCRIPT_NAME
631
+  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
632
+  echo "  rsyncrypto  -r /home/$MY_USERNAME/personal $USB_MOUNT/backup/personal $USB_MOUNT/personal.keys $BACKUP_CERTIFICATE" >> /usr/bin/$BACKUP_SCRIPT_NAME
633
+  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
634
+  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
636 635
   echo '# Backup the public mailing list' >> /usr/bin/$BACKUP_SCRIPT_NAME
637 636
   echo "if [ -d $PUBLIC_MAILING_LIST_DIRECTORY ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
638 637
   echo '  echo "Backing up the public mailing list"' >> /usr/bin/$BACKUP_SCRIPT_NAME
639
-  echo -n '  duplicity full --encrypt-key $GPG_KEY --exclude-other-filesystems ' >> /usr/bin/$BACKUP_SCRIPT_NAME
640
-  echo "$PUBLIC_MAILING_LIST_DIRECTORY file://$USB_MOUNT/backup/publicmailinglist" >> /usr/bin/$BACKUP_SCRIPT_NAME
638
+  echo "  if [ ! -d $USB_MOUNT/backup/mailinglist ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
639
+  echo "    mkdir -p $USB_MOUNT/backup/mailinglist" >> /usr/bin/$BACKUP_SCRIPT_NAME
640
+  echo "    touch $USB_MOUNT/mailinglist.keys" >> /usr/bin/$BACKUP_SCRIPT_NAME
641
+  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
642
+  echo "  rsyncrypto  -r $PUBLIC_MAILING_LIST_DIRECTORY $USB_MOUNT/backup/mailinglist $USB_MOUNT/mailinglist.keys $BACKUP_CERTIFICATE" >> /usr/bin/$BACKUP_SCRIPT_NAME
641 643
   echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
642 644
   echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
643 645
   echo '# Backup xmpp settings' >> /usr/bin/$BACKUP_SCRIPT_NAME
644 646
   echo "if [ -d $XMPP_DIRECTORY ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
645 647
   echo '  echo "Backing up the XMPP settings"' >> /usr/bin/$BACKUP_SCRIPT_NAME
646
-  echo -n '  duplicity full --encrypt-key $GPG_KEY --exclude-other-filesystems ' >> /usr/bin/$BACKUP_SCRIPT_NAME
647
-  echo "$XMPP_DIRECTORY file://$USB_MOUNT/backup/xmpp" >> /usr/bin/$BACKUP_SCRIPT_NAME
648
+  echo "  if [ ! -d $USB_MOUNT/backup/xmpp ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
649
+  echo "    mkdir -p $USB_MOUNT/backup/xmpp" >> /usr/bin/$BACKUP_SCRIPT_NAME
650
+  echo "    touch $USB_MOUNT/xmpp.keys" >> /usr/bin/$BACKUP_SCRIPT_NAME
651
+  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
652
+  echo "  rsyncrypto  -r $XMPP_DIRECTORY $USB_MOUNT/backup/xmpp $USB_MOUNT/xmpp.keys $BACKUP_CERTIFICATE" >> /usr/bin/$BACKUP_SCRIPT_NAME
648 653
   echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
649 654
   echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
650
-  echo '# Backup web content and other stuff' >> /usr/bin/$BACKUP_SCRIPT_NAME
655
+  #echo '# Backup web content' >> /usr/bin/$BACKUP_SCRIPT_NAME
656
+  #echo 'echo "Backing up web content"' >> /usr/bin/$BACKUP_SCRIPT_NAME
657
+  #echo "if [ ! -d $USB_MOUNT/backup/www ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
658
+  #echo "  mkdir -p $USB_MOUNT/backup/www" >> /usr/bin/$BACKUP_SCRIPT_NAME
659
+  #echo "  touch $USB_MOUNT/www.keys" >> /usr/bin/$BACKUP_SCRIPT_NAME
660
+  #echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
661
+  #echo "rsyncrypto  -r /var/www $USB_MOUNT/backup/www $USB_MOUNT/www.keys $BACKUP_CERTIFICATE" >> /usr/bin/$BACKUP_SCRIPT_NAME
662
+  #echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
663
+  echo '# Backup other stuff' >> /usr/bin/$BACKUP_SCRIPT_NAME
651 664
   echo "if [ -d /home/$MY_USERNAME/tempfiles ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
652
-  echo '  echo "Backing up web content and miscellaneous files"' >> /usr/bin/$BACKUP_SCRIPT_NAME
653
-  echo -n '  duplicity full --encrypt-key $GPG_KEY --exclude-other-filesystems ' >> /usr/bin/$BACKUP_SCRIPT_NAME
654
-  echo "/home/$MY_USERNAME/tempfiles file://$USB_MOUNT/backup/tempfiles" >> /usr/bin/$BACKUP_SCRIPT_NAME
665
+  echo '  echo "Backing up miscellaneous files"' >> /usr/bin/$BACKUP_SCRIPT_NAME
666
+  echo "  if [ ! -d $USB_MOUNT/backup/misc ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
667
+  echo "    mkdir -p $USB_MOUNT/backup/misc" >> /usr/bin/$BACKUP_SCRIPT_NAME
668
+  echo "    touch $USB_MOUNT/misc.keys" >> /usr/bin/$BACKUP_SCRIPT_NAME
669
+  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
670
+  echo "  rsyncrypto  -r /home/$MY_USERNAME/tempfiles $USB_MOUNT/backup/misc $USB_MOUNT/misc.keys $BACKUP_CERTIFICATE" >> /usr/bin/$BACKUP_SCRIPT_NAME
655 671
   echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
656 672
   echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
657 673
   echo '# Backup email' >> /usr/bin/$BACKUP_SCRIPT_NAME
658 674
   echo "if [ -d /home/$MY_USERNAME/Maildir ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
659 675
   echo '  echo "Backing up emails"' >> /usr/bin/$BACKUP_SCRIPT_NAME
660
-  echo -n '  duplicity full --encrypt-key $GPG_KEY --exclude-other-filesystems ' >> /usr/bin/$BACKUP_SCRIPT_NAME
661
-  echo "/home/$MY_USERNAME/Maildir file://$USB_MOUNT/backup/Maildir" >> /usr/bin/$BACKUP_SCRIPT_NAME
676
+  echo "  if [ ! -d $USB_MOUNT/backup/mail ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
677
+  echo "    mkdir -p $USB_MOUNT/backup/mail" >> /usr/bin/$BACKUP_SCRIPT_NAME
678
+  echo "    touch $USB_MOUNT/mail.keys" >> /usr/bin/$BACKUP_SCRIPT_NAME
679
+  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
680
+  echo "  rsyncrypto  -r /home/$MY_USERNAME/Maildir $USB_MOUNT/backup/mail $USB_MOUNT/mail.keys $BACKUP_CERTIFICATE" >> /usr/bin/$BACKUP_SCRIPT_NAME
662 681
   echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
663 682
   echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
664 683
   echo '# Backup DLNA cache' >> /usr/bin/$BACKUP_SCRIPT_NAME
665 684
   echo "if [ -d /var/cache/minidlna ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
666 685
   echo '  echo "Backing up DLNA cache"' >> /usr/bin/$BACKUP_SCRIPT_NAME
667
-  echo -n '  duplicity full --encrypt-key $GPG_KEY --exclude-other-filesystems ' >> /usr/bin/$BACKUP_SCRIPT_NAME
668
-  echo "/var/cache/minidlna file://$USB_MOUNT/backup/dlna" >> /usr/bin/$BACKUP_SCRIPT_NAME
669
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
670
-
671
-  echo 'echo "Cleaning up backup files"' >> /usr/bin/$BACKUP_SCRIPT_NAME
672
-  echo "if [ -d /home/$MY_USERNAME/Maildir ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
673
-  echo "  duplicity full --force cleanup file://$USB_MOUNT/backup/Maildir" >> /usr/bin/$BACKUP_SCRIPT_NAME
674
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
675
-  echo "if [ -d /home/$MY_USERNAME/tempfiles ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
676
-  echo "  duplicity full --force cleanup file://$USB_MOUNT/backup/tempfiles" >> /usr/bin/$BACKUP_SCRIPT_NAME
677
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
678
-  echo "if [ -d /var/cache/minidlna ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
679
-  echo "  duplicity full --force cleanup file://$USB_MOUNT/backup/dlna" >> /usr/bin/$BACKUP_SCRIPT_NAME
680
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
681
-  echo "if [ -d $XMPP_DIRECTORY ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
682
-  echo "  duplicity full --force cleanup file://$USB_MOUNT/backup/xmpp" >> /usr/bin/$BACKUP_SCRIPT_NAME
683
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
684
-  echo "if [ -d $PUBLIC_MAILING_LIST_DIRECTORY ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
685
-  echo "  duplicity full --force cleanup file://$USB_MOUNT/backup/publicmailinglist" >> /usr/bin/$BACKUP_SCRIPT_NAME
686
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
687
-
688
-  echo 'echo "Removing old backups"' >> /usr/bin/$BACKUP_SCRIPT_NAME
689
-  echo "if [ -d /home/$MY_USERNAME/Maildir ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
690
-  echo "  duplicity --force remove-all-but-n-full 3 file://$USB_MOUNT/backup/Maildir" >> /usr/bin/$BACKUP_SCRIPT_NAME
691
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
692
-  echo "if [ -d /home/$MY_USERNAME/tempfiles ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
693
-  echo "  duplicity --force remove-all-but-n-full 3 file://$USB_MOUNT/backup/tempfiles" >> /usr/bin/$BACKUP_SCRIPT_NAME
694
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
695
-  echo "if [ -d /var/cache/minidlna ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
696
-  echo "  duplicity --force remove-all-but-n-full 3 file://$USB_MOUNT/backup/dlna" >> /usr/bin/$BACKUP_SCRIPT_NAME
697
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
698
-  echo "if [ -d $XMPP_DIRECTORY ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
699
-  echo "  duplicity --force remove-all-but-n-full 3 file://$USB_MOUNT/backup/xmpp" >> /usr/bin/$BACKUP_SCRIPT_NAME
700
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
701
-  echo "if [ -d $PUBLIC_MAILING_LIST_DIRECTORY ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
702
-  echo "  duplicity --force remove-all-but-n-full 3 file://$USB_MOUNT/backup/publicmailinglist" >> /usr/bin/$BACKUP_SCRIPT_NAME
686
+  echo "  if [ ! -d $USB_MOUNT/backup/dlna ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
687
+  echo "    mkdir -p $USB_MOUNT/backup/dlna" >> /usr/bin/$BACKUP_SCRIPT_NAME
688
+  echo "    touch $USB_MOUNT/dlna.keys" >> /usr/bin/$BACKUP_SCRIPT_NAME
689
+  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
690
+  echo "  rsyncrypto  -r /var/cache/minidlna $USB_MOUNT/backup/dlna $USB_MOUNT/dlna.keys $BACKUP_CERTIFICATE" >> /usr/bin/$BACKUP_SCRIPT_NAME
703 691
   echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
704 692
 
705 693
   echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
@@ -723,22 +711,10 @@ function create_restore_script {
723 711
   if grep -Fxq "create_restore_script" $COMPLETION_FILE; then
724 712
       return
725 713
   fi
726
-  apt-get -y --force-yes install duplicity
727
-
728
-  import_gpg_key_to_root
714
+  apt-get -y --force-yes install rsyncrypto
729 715
 
730 716
   echo '#!/bin/bash' > /usr/bin/$RESTORE_SCRIPT_NAME
731 717
   echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
732
-  echo 'GPG_KEY=$1' >> /usr/bin/$RESTORE_SCRIPT_NAME
733
-  echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
734
-  echo 'if [ ! $GPG_KEY ]; then' >> /usr/bin/$RESTORE_SCRIPT_NAME
735
-  echo "  if [ ! $MY_GPG_PUBLIC_KEY_ID ]; then" >> /usr/bin/$RESTORE_SCRIPT_NAME
736
-  echo '    echo "You need to specify a GPG key ID with which to restore from backup"' >> /usr/bin/$RESTORE_SCRIPT_NAME
737
-  echo '    exit 1' >> /usr/bin/$RESTORE_SCRIPT_NAME
738
-  echo '  fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
739
-  echo "  GPG_KEY='$MY_GPG_PUBLIC_KEY_ID'" >> /usr/bin/$RESTORE_SCRIPT_NAME
740
-  echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
741
-  echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
742 718
   echo "if [ ! -b $USB_DRIVE ]; then" >> /usr/bin/$RESTORE_SCRIPT_NAME
743 719
   echo '  echo "Please attach a USB drive"' >> /usr/bin/$RESTORE_SCRIPT_NAME
744 720
   echo '  exit 1' >> /usr/bin/$RESTORE_SCRIPT_NAME
@@ -754,24 +730,72 @@ function create_restore_script {
754 730
   echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
755 731
   echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
756 732
 
733
+  echo "if [ -f $USB_MOUNT/backup/key.gpg ]; then" >> /usr/bin/$RESTORE_SCRIPT_NAME
734
+  echo "  if [ -f $BACKUP_CERTIFICATE.new ]; then" >> /usr/bin/$RESTORE_SCRIPT_NAME
735
+  echo "    rm $BACKUP_CERTIFICATE.new" >> /usr/bin/$RESTORE_SCRIPT_NAME
736
+  echo '  fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
737
+  echo "  gpg $USB_MOUNT/backup/key.gpg -o $BACKUP_CERTIFICATE.new" >> /usr/bin/$RESTORE_SCRIPT_NAME
738
+  echo "  if [ -f $BACKUP_CERTIFICATE.new ]; then" >> /usr/bin/$RESTORE_SCRIPT_NAME
739
+  echo '    echo "Backup key decrypted"' >> /usr/bin/$RESTORE_SCRIPT_NAME
740
+  echo "    mv $BACKUP_CERTIFICATE.new $BACKUP_CERTIFICATE" >> /usr/bin/$RESTORE_SCRIPT_NAME
741
+  echo '  else' >> /usr/bin/$RESTORE_SCRIPT_NAME
742
+  echo '    echo "Unable to decrypt the backup key"' >> /usr/bin/$RESTORE_SCRIPT_NAME
743
+  echo '    exit 735' >> /usr/bin/$RESTORE_SCRIPT_NAME
744
+  echo '  fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
745
+  echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
746
+  echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
747
+
748
+  echo "if [ ! -f $BACKUP_CERTIFICATE ]; then" >> /usr/bin/$RESTORE_SCRIPT_NAME
749
+  echo "    echo 'No backup key was found. Copy your backup key to $BACKUP_CERTIFICATE'" >> /usr/bin/$RESTORE_SCRIPT_NAME
750
+  echo '    exit 563' >> /usr/bin/$RESTORE_SCRIPT_NAME
751
+  echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
752
+  echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
753
+  
754
+  echo "if [ -d $USB_MOUNT/backup/ssl ]; then" >> /usr/bin/$RESTORE_SCRIPT_NAME
755
+  echo '  echo "Restoring certificates"' >> /usr/bin/$RESTORE_SCRIPT_NAME
756
+  echo "  rsyncrypto -d -r $USB_MOUNT/backup/ssl /etc/ssl $USB_MOUNT/ssl.keys $BACKUP_CERTIFICATE" >> /usr/bin/$RESTORE_SCRIPT_NAME
757
+  echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
758
+  echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
759
+
760
+  echo "if [ -d $USB_MOUNT/backup/projects ]; then" >> /usr/bin/$RESTORE_SCRIPT_NAME
761
+  echo '  echo "Restoring projects"' >> /usr/bin/$RESTORE_SCRIPT_NAME
762
+  echo "  rsyncrypto -d -r $USB_MOUNT/backup/projects /home/$MY_USERNAME/projects $USB_MOUNT/projects.keys $BACKUP_CERTIFICATE" >> /usr/bin/$RESTORE_SCRIPT_NAME
763
+  echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
764
+  echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
765
+
766
+  echo "if [ -d $USB_MOUNT/backup/personal ]; then" >> /usr/bin/$RESTORE_SCRIPT_NAME
767
+  echo '  echo "Restoring personal settings"' >> /usr/bin/$RESTORE_SCRIPT_NAME
768
+  echo "  rsyncrypto -d -r $USB_MOUNT/backup/personal /home/$MY_USERNAME/personal $USB_MOUNT/personal.keys $BACKUP_CERTIFICATE" >> /usr/bin/$RESTORE_SCRIPT_NAME
769
+  echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
770
+  echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
771
+
757 772
   echo "if [ -d $PUBLIC_MAILING_LIST_DIRECTORY ]; then" >> /usr/bin/$RESTORE_SCRIPT_NAME
758 773
   echo '  echo "Restoring public mailing list"' >> /usr/bin/$RESTORE_SCRIPT_NAME
759
-  echo "  duplicity --force file://$USB_MOUNT/backup/publicmailinglist $PUBLIC_MAILING_LIST_DIRECTORY" >> /usr/bin/$RESTORE_SCRIPT_NAME
774
+  echo "  rsyncrypto -d -r $USB_MOUNT/backup/mailinglist $PUBLIC_MAILING_LIST_DIRECTORY $USB_MOUNT/mailinglist.keys $BACKUP_CERTIFICATE" >> /usr/bin/$RESTORE_SCRIPT_NAME
760 775
   echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
776
+  echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
761 777
 
762 778
   echo "if [ -d $XMPP_DIRECTORY ]; then" >> /usr/bin/$RESTORE_SCRIPT_NAME
763 779
   echo '  echo "Restoring XMPP settings"' >> /usr/bin/$RESTORE_SCRIPT_NAME
764
-  echo "  duplicity --force file://$USB_MOUNT/backup/xmpp $XMPP_DIRECTORY" >> /usr/bin/$RESTORE_SCRIPT_NAME
780
+  echo "  rsyncrypto -d -r $USB_MOUNT/backup/xmpp $XMPP_DIRECTORY $USB_MOUNT/xmpp.keys $BACKUP_CERTIFICATE" >> /usr/bin/$RESTORE_SCRIPT_NAME
765 781
   echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
782
+  echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
766 783
 
767 784
   echo "if [ -d /home/$MY_USERNAME/tempfiles ]; then" >> /usr/bin/$RESTORE_SCRIPT_NAME
768 785
   echo "  rm -rf /home/$MY_USERNAME/tempfiles/*" >> /usr/bin/$RESTORE_SCRIPT_NAME
769 786
   echo 'else' >> /usr/bin/$RESTORE_SCRIPT_NAME
770
-  echo "  mkdir /home/$MY_USERNAME/tempfiles" >> /usr/bin/$RESTORE_SCRIPT_NAME
787
+  echo "  mkdir -p /home/$MY_USERNAME/tempfiles" >> /usr/bin/$RESTORE_SCRIPT_NAME
771 788
   echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
772
-  echo 'echo "Restoring web content and miscellaneous files"' >> /usr/bin/$RESTORE_SCRIPT_NAME
773
-  echo "duplicity --force file://$USB_MOUNT/backup/tempfiles /home/$MY_USERNAME/tempfiles" >> /usr/bin/$RESTORE_SCRIPT_NAME
789
+  echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
790
+
791
+  #echo 'echo "Restoring web content"' >> /usr/bin/$RESTORE_SCRIPT_NAME
792
+  #echo "rsyncrypto -d -r $USB_MOUNT/backup/www /var/www $USB_MOUNT/www.keys $BACKUP_CERTIFICATE" >> /usr/bin/$RESTORE_SCRIPT_NAME
793
+  #echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
794
+
795
+  echo 'echo "Restoring miscellaneous files"' >> /usr/bin/$RESTORE_SCRIPT_NAME
796
+  echo "rsyncrypto -d -r $USB_MOUNT/backup/misc /home/$MY_USERNAME/tempfiles $USB_MOUNT/misc.keys $BACKUP_CERTIFICATE" >> /usr/bin/$RESTORE_SCRIPT_NAME
774 797
   echo "tar -xzvf /home/$MY_USERNAME/tempfiles/miscfiles.tar.gz -C /" >> /usr/bin/$RESTORE_SCRIPT_NAME
798
+  echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
775 799
 
776 800
   if grep -Fxq "install_gnu_social" $COMPLETION_FILE; then
777 801
       echo "if [ -f /home/$MY_USERNAME/tempfiles/gnusocial.sql ]; then" >> /usr/bin/$RESTORE_SCRIPT_NAME
@@ -779,6 +803,7 @@ function create_restore_script {
779 803
       echo "  mysql -u root --password=$MARIADB_PASSWORD gnusocial -o < /home/$MY_USERNAME/tempfiles/gnusocial.sql" >> /usr/bin/$RESTORE_SCRIPT_NAME
780 804
       echo "  tar -xzvf /home/$MY_USERNAME/tempfiles/gnusocial.tar.gz -C /" >> /usr/bin/$RESTORE_SCRIPT_NAME
781 805
       echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
806
+      echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
782 807
   fi
783 808
 
784 809
   if grep -Fxq "install_redmatrix" $COMPLETION_FILE; then
@@ -787,6 +812,7 @@ function create_restore_script {
787 812
       echo "  mysql -u root --password=$MARIADB_PASSWORD redmatrix -o < /home/$MY_USERNAME/tempfiles/redmatrix.sql" >> /usr/bin/$RESTORE_SCRIPT_NAME
788 813
       echo "  tar -xzvf /home/$MY_USERNAME/tempfiles/redmatrix.tar.gz -C /" >> /usr/bin/$RESTORE_SCRIPT_NAME
789 814
       echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
815
+      echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
790 816
   fi
791 817
 
792 818
   if grep -Fxq "install_owncloud" $COMPLETION_FILE; then
@@ -796,6 +822,7 @@ function create_restore_script {
796 822
       echo '  echo "Restoring owncloud database"' >> /usr/bin/$RESTORE_SCRIPT_NAME
797 823
       echo "  mysql -u root --password=$MARIADB_PASSWORD owncloud -o < /home/$MY_USERNAME/tempfiles/owncloud.sql" >> /usr/bin/$RESTORE_SCRIPT_NAME
798 824
       echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
825
+      echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
799 826
   fi
800 827
 
801 828
   if grep -Fxq "install_wiki" $COMPLETION_FILE; then
@@ -803,6 +830,7 @@ function create_restore_script {
803 830
       echo '  echo "Restoring Wiki"' >> /usr/bin/$RESTORE_SCRIPT_NAME
804 831
       echo "  tar -xzvf /home/$MY_USERNAME/tempfiles/wiki.tar.gz -C /" >> /usr/bin/$RESTORE_SCRIPT_NAME
805 832
       echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
833
+      echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
806 834
   fi
807 835
 
808 836
   if grep -Fxq "install_blog" $COMPLETION_FILE; then
@@ -810,19 +838,23 @@ function create_restore_script {
810 838
       echo '  echo "Restoring blog"' >> /usr/bin/$RESTORE_SCRIPT_NAME
811 839
       echo "  tar -xzvf /home/$MY_USERNAME/tempfiles/blog.tar.gz -C /" >> /usr/bin/$RESTORE_SCRIPT_NAME
812 840
       echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
841
+      echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
813 842
   fi
814 843
 
815 844
   echo "rm -rf /home/$MY_USERNAME/tempfiles" >> /usr/bin/$RESTORE_SCRIPT_NAME
845
+  echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
816 846
 
817 847
   echo "if [ -d /home/$MY_USERNAME/Maildir ]; then" >> /usr/bin/$RESTORE_SCRIPT_NAME
818 848
   echo '  echo "Restoring emails"' >> /usr/bin/$RESTORE_SCRIPT_NAME
819
-  echo "  duplicity --force file://$USB_MOUNT/backup/Maildir /home/$MY_USERNAME/Maildir" >> /usr/bin/$RESTORE_SCRIPT_NAME
849
+  echo "  rsyncrypto -d -r $USB_MOUNT/backup/mail /home/$MY_USERNAME/Maildir $USB_MOUNT/mail.keys $BACKUP_CERTIFICATE" >> /usr/bin/$RESTORE_SCRIPT_NAME
820 850
   echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
851
+  echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
821 852
 
822 853
   echo "if [ -d /var/cache/minidlna ]; then" >> /usr/bin/$RESTORE_SCRIPT_NAME
823 854
   echo '  echo "Restoring DLNA cache"' >> /usr/bin/$RESTORE_SCRIPT_NAME
824
-  echo "  duplicity --force file://$USB_MOUNT/backup/dlna /var/cache/minidlna" >> /usr/bin/$RESTORE_SCRIPT_NAME
855
+  echo "  rsyncrypto -d -r $USB_MOUNT/backup/dlna /var/cache/minidlna $USB_MOUNT/dlna.keys $BACKUP_CERTIFICATE" >> /usr/bin/$RESTORE_SCRIPT_NAME
825 856
   echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
857
+  echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
826 858
 
827 859
   echo 'sync' >> /usr/bin/$RESTORE_SCRIPT_NAME
828 860
   echo "umount $USB_MOUNT" >> /usr/bin/$RESTORE_SCRIPT_NAME
@@ -865,20 +897,12 @@ function backup_to_friends_servers {
865 897
   echo '#!/bin/bash' > /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
866 898
   echo '' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
867 899
 
868
-  echo '# Generate an ssh key used for encrypting backups' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
869
-  echo "if [ ! -f /root/backupkey ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
870
-  echo '  ssh-keygen -t rsa -f /root/backupkey -q -N ""' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
871
-  echo '  sed -i "s/-----BEGIN RSA PRIVATE KEY-----//g" /root/backupkey' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
872
-  echo '  sed -i "s/-----END RSA PRIVATE KEY-----//g" /root/backupkey' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
873
-  echo '  sed -i "s/==//g" /root/backupkey' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
874
-  echo '  chmod 400 /root/backupkey' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
875
-  echo '  rm /root/backupkey.pub' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
900
+  echo "if [ ! -f $BACKUP_CERTIFICATE ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
901
+  echo '    echo "Creating backup key"' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
902
+  echo '    makecert backup' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
876 903
   echo 'fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
877 904
   echo '' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
878 905
 
879
-  echo '# Passphrase is the ssh private key' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
880
-  echo 'PASSPHRASE=$(</root/backupkey)' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
881
-  echo '' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
882 906
   echo "if [ ! -f $FRIENDS_SERVERS_LIST ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
883 907
   echo '    exit 1' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
884 908
   echo 'fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
@@ -913,7 +937,7 @@ function backup_to_friends_servers {
913 937
   if grep -Fxq "install_blog" $COMPLETION_FILE; then
914 938
       echo "tar -czvf /home/$MY_USERNAME/tempfiles/blog.tar.gz /var/www/$FULLBLOG_DOMAIN_NAME/htdocs/data" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
915 939
   fi
916
-  echo "tar -czvf /home/$MY_USERNAME/tempfiles/miscfiles.tar.gz /home/$MY_USERNAME/.gnupg /home/$MY_USERNAME/.muttrc /home/$MY_USERNAME/.procmailrc /home/$MY_USERNAME/.ssh /root/backupkey /var/lib/mysql/mysql /var/www /etc/nginx/sites-available /etc/ssl/private /etc/ssl/certs $GITHUB_BACKUP_DIRECTORY /home/$MY_USERNAME/projects /home/$MY_USERNAME/personal /home/$MY_USERNAME/README" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
940
+  echo "tar -czvf /home/$MY_USERNAME/tempfiles/miscfiles.tar.gz /home/$MY_USERNAME/.gnupg /home/$MY_USERNAME/.muttrc /home/$MY_USERNAME/.procmailrc /home/$MY_USERNAME/.ssh /var/lib/mysql/mysql /var/www /etc/nginx/sites-available /home/$MY_USERNAME/README" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
917 941
 
918 942
   echo '' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
919 943
   echo 'while read remote_server' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
@@ -922,70 +946,103 @@ function backup_to_friends_servers {
922 946
   echo '  SERVER="scp://${* %%remote_server}"' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
923 947
   echo '  FTP_PASSWORD="${remote_server%% *}"' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
924 948
   echo '' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
949
+
950
+  echo '  # Backup certificates' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
951
+  echo "  if [ -d /etc/ssl ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
952
+  echo '    echo "Backing up certificates"' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
953
+  echo "    if [ ! -d $SEVER/backup/ssl ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
954
+  echo "      mkdir -p $SERVER/backup/certs" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
955
+  echo "      mkdir -p $SERVER/keys/certs" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
956
+  echo '    fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
957
+  echo "    rsyncrypto  -r /etc/ssl $SERVER/backup/ssl $SERVER/keys/ssl $BACKUP_CERTIFICATE" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
958
+  echo '  fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
959
+  echo '' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
960
+
961
+  echo '  # Backup projects' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
962
+  echo   "if [ -d /home/$MY_USERNAME/projects ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
963
+  echo '    echo "Backing up projects"' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
964
+  echo "    if [ ! -d $SERVER/backup/projects ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
965
+  echo "      mkdir -p $SERVER/backup/projects" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
966
+  echo "      mkdir -p $SERVER/keys/projects" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
967
+  echo '    fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
968
+  echo "    rsyncrypto  -r /home/$MY_USERNAME/projects $SERVER/backup/projects $SERVER/keys/projects $BACKUP_CERTIFICATE" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
969
+  echo '  fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
970
+  echo '' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
971
+
972
+  echo '  # Backup personal settings' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
973
+  echo "  if [ -d /home/$MY_USERNAME/personal ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
974
+  echo '    echo "Backing up personal settings"' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
975
+  echo "    if [ ! -d $SERVER/backup/personal ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
976
+  echo "      mkdir -p $SERVER/backup/personal" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
977
+  echo "      mkdir -p $SERVER/keys/personal" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
978
+  echo '    fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
979
+  echo "    rsyncrypto  -r /home/$MY_USERNAME/personal $SERVER/backup/personal $SERVER/keys/personal $BACKUP_CERTIFICATE" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
980
+  echo '  fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
981
+  echo '' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
982
+
925 983
   echo '  # Backup the public mailing list' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
926 984
   echo "  if [ -d $PUBLIC_MAILING_LIST_DIRECTORY ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
927
-  echo -n '    duplicity full --ssh-askpass --exclude-other-filesystems ' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
928
-  echo "$PUBLIC_MAILING_LIST_DIRECTORY $SERVER/publicmailinglist" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
985
+  echo '    echo "Backing up the public mailing list"' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
986
+  echo "    if [ ! -d $SERVER/backup/mailinglist ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
987
+  echo "      mkdir -p $SERVER/backup/mailinglist" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
988
+  echo "      mkdir -p $SERVER/keys/mailinglist" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
989
+  echo '    fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
990
+  echo "    rsyncrypto  -r $PUBLIC_MAILING_LIST_DIRECTORY $SERVER/backup/mailinglist $SERVER/keys/mailinglist $BACKUP_CERTIFICATE" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
929 991
   echo '  fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
930 992
   echo '' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
993
+
931 994
   echo '  # Backup xmpp settings' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
932 995
   echo "  if [ -d $XMPP_DIRECTORY ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
933
-  echo -n '    duplicity full --ssh-askpass --exclude-other-filesystems ' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
934
-  echo "$XMPP_DIRECTORY $SERVER/xmpp" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
996
+  echo '    echo "Backing up the XMPP settings"' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
997
+  echo "    if [ ! -d $SERVER/backup/xmpp ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
998
+  echo "      mkdir -p $SERVER/backup/xmpp" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
999
+  echo "      mkdir -p $SERVER/keys/xmpp" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1000
+  echo '    fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1001
+  echo "    rsyncrypto  -r $XMPP_DIRECTORY $SERVER/backup/xmpp $SERVER/keys/xmpp $BACKUP_CERTIFICATE" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
935 1002
   echo '  fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
936 1003
   echo '' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
937
-  echo '  # Backup web content and other stuff' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1004
+
1005
+  #echo '# Backup web content' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1006
+  #echo '  echo "Backing up web content"' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1007
+  #echo "  if [ ! -d $SERVER/backup/www ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1008
+  #echo "    mkdir -p $SERVER/backup/www" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1009
+  #echo "    mkdir -p $SERVER/keys/www" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1010
+  #echo '  fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1011
+  #echo "  rsyncrypto  -r /var/www $SERVER/backup/www $SERVER/keys/www $BACKUP_CERTIFICATE" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1012
+  #echo '' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1013
+
1014
+  echo '  # Backup miscellaneous stuff' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
938 1015
   echo "  if [ -d /home/$MY_USERNAME/tempfiles ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
939
-  echo -n '    duplicity full --ssh-askpass --exclude-other-filesystems ' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
940
-  echo "/home/$MY_USERNAME/tempfiles $SERVER/tempfiles" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1016
+  echo '    echo "Backing up miscellaneous files"' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1017
+  echo "    if [ ! -d $SERVER/backup/misc ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1018
+  echo "      mkdir -p $SERVER/backup/misc" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1019
+  echo "      mkdir -p $SERVER/keys/misc" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1020
+  echo '    fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1021
+  echo "    rsyncrypto  -r /home/$MY_USERNAME/tempfiles $SERVER/backup/misc $SERVER/keys/misc $BACKUP_CERTIFICATE" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
941 1022
   echo '  fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
942 1023
   echo '' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1024
+
943 1025
   echo '  # Backup email' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
944 1026
   echo "  if [ -d /home/$MY_USERNAME/Maildir ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
945
-  echo -n '    duplicity full --ssh-askpass $GPG_KEY --exclude-other-filesystems ' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
946
-  echo "/home/$MY_USERNAME/Maildir $SERVER/Maildir" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1027
+  echo '    echo "Backing up emails"' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1028
+  echo "    if [ ! -d $SERVER/backup/mail ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1029
+  echo "      mkdir -p $SERVER/backup/mail" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1030
+  echo "      mkdir -p $SERVER/keys/mail" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1031
+  echo '    fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1032
+  echo "    rsyncrypto  -r /home/$MY_USERNAME/Maildir $SERVER/backup/mail $SERVER/keys/mail $BACKUP_CERTIFICATE" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
947 1033
   echo '  fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
948 1034
   echo '' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1035
+
949 1036
   echo '  # Backup DLNA cache' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
950 1037
   echo "  if [ -d /var/cache/minidlna ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
951
-  echo -n '    duplicity full --ssh-askpass --exclude-other-filesystems ' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
952
-  echo "/var/cache/minidlna $SERVER/dlna" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
953
-  echo '  fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
954
-  echo '' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
955
-  echo '  echo "Cleaning up backup files"' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
956
-  echo "  if [ -d /home/$MY_USERNAME/Maildir ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
957
-  echo "    duplicity full --ssh-askpass --force cleanup $SERVER/Maildir" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
958
-  echo '  fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
959
-  echo "  if [ -d /home/$MY_USERNAME/tempfiles ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
960
-  echo "    duplicity full --ssh-askpass --force cleanup $SERVER/tempfiles" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
961
-  echo '  fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
962
-  echo "  if [ -d /var/cache/minidlna ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
963
-  echo "    duplicity full --ssh-askpass --force cleanup $SERVER/dlna" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
964
-  echo '  fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
965
-  echo "  if [ -d $XMPP_DIRECTORY ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
966
-  echo "    duplicity full --ssh-askpass --force cleanup $SERVER/xmpp" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
967
-  echo '  fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
968
-  echo "  if [ -d $PUBLIC_MAILING_LIST_DIRECTORY ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
969
-  echo "    duplicity full --ssh-askpass --force cleanup $SERVER/publicmailinglist" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
970
-  echo '  fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
971
-  echo '' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
972
-  echo '  echo "Removing old backups"' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
973
-  echo "  if [ -d /home/$MY_USERNAME/Maildir ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
974
-  echo "    duplicity --ssh-askpass --force remove-all-but-n-full 3 $SERVER/Maildir" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
975
-  echo '  fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
976
-  echo "  if [ -d /home/$MY_USERNAME/tempfiles ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
977
-  echo "    duplicity --ssh-askpass --force remove-all-but-n-full 3
978
-3 $SERVER/tempfiles" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
979
-  echo '  fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
980
-  echo "  if [ -d /var/cache/minidlna ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
981
-  echo "    duplicity --ssh-askpass --force remove-all-but-n-full 3 $SERVER/dlna" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
982
-  echo '  fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
983
-  echo "  if [ -d $XMPP_DIRECTORY ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
984
-  echo "    duplicity --ssh-askpass --force remove-all-but-n-full 3 $SERVER/xmpp" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
985
-  echo '  fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
986
-  echo "  if [ -d $PUBLIC_MAILING_LIST_DIRECTORY ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
987
-  echo "    duplicity --ssh-askpass --force remove-all-but-n-full 3 $SERVER/publicmailinglist" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1038
+  echo '    echo "Backing up DLNA cache"' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1039
+  echo "    if [ ! -d $SERVER/backup/dlna ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1040
+  echo "      mkdir -p $SERVER/backup/dlna" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1041
+  echo "      mkdir -p $SERVER/keys/dlna" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1042
+  echo '    fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1043
+  echo "    rsyncrypto  -r /var/cache/minidlna $SERVER/backup/dlna $SERVER/keys/dlna $BACKUP_CERTIFICATE" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
988 1044
   echo '  fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
1045
+
989 1046
   echo '' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
990 1047
   echo "done < $FRIENDS_SERVERS_LIST" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
991 1048
   echo '' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
@@ -1057,24 +1114,45 @@ function restore_from_friend {
1057 1114
   echo "$FRIENDS_SERVERS_LIST | awk -F ' ' '{print $2}')" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1058 1115
   echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1059 1116
 
1117
+  echo 'echo "Restoring certificates"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1118
+  echo "rsyncrypto -d -r scp://$SERVER/backup/ssl /etc/ssl scp://$SERVER/keys/ssl $BACKUP_CERTIFICATE" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1119
+  echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1120
+
1121
+  echo 'echo "Restoring projects"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1122
+  echo "rsyncrypto -d -r scp://$SERVER/backup/projects /home/$MY_USERNAME/projects scp://$SERVER/keys/projects $BACKUP_CERTIFICATE" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1123
+  echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1124
+
1125
+  echo 'echo "Restoring personal settings"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1126
+  echo "rsyncrypto -d -r scp://$SERVER/backup/personal /home/$MY_USERNAME/personal scp://$SERVER/keys/personal $BACKUP_CERTIFICATE" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1127
+  echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1128
+
1060 1129
   echo "if [ -d $PUBLIC_MAILING_LIST_DIRECTORY ]; then" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1061 1130
   echo '  echo "Restoring public mailing list"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1062
-  echo "  duplicity --force scp://$SERVER/publicmailinglist $PUBLIC_MAILING_LIST_DIRECTORY" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1131
+  echo "  rsyncrypto -d -r scp://$SERVER/backup/mailinglist $PUBLIC_MAILING_LIST_DIRECTORY scp://$SERVER/keys/mailinglist $BACKUP_CERTIFICATE" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1063 1132
   echo 'fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1133
+  echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1064 1134
 
1065 1135
   echo "if [ -d $XMPP_DIRECTORY ]; then" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1066 1136
   echo '  echo "Restoring XMPP settings"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1067
-  echo "  duplicity --force scp://$SERVER/xmpp $XMPP_DIRECTORY" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1137
+  echo "  rsyncrypto -d -r scp://$SERVER/backup/xmpp $XMPP_DIRECTORY scp://$SERVER/keys/xmpp $BACKUP_CERTIFICATE" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1068 1138
   echo 'fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1139
+  echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1069 1140
 
1070 1141
   echo "if [ -d /home/$MY_USERNAME/tempfiles ]; then" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1071 1142
   echo "  rm -rf /home/$MY_USERNAME/tempfiles/*" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1072 1143
   echo 'else' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1073
-  echo "  mkdir /home/$MY_USERNAME/tempfiles" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1144
+  echo "  mkdir -p /home/$MY_USERNAME/tempfiles" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1074 1145
   echo 'fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1075
-  echo 'echo "Restoring web content and miscellaneous files"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1076
-  echo "duplicity --force scp://$SERVER/tempfiles /home/$MY_USERNAME/tempfiles" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1146
+  echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1147
+
1148
+  #echo 'echo "Restoring web content"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1149
+  #echo "rsyncrypto -d -r scp://$SERVER/backup/www /var/www scp://$SERVER/keys/www $BACKUP_CERTIFICATE" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1150
+  #echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1151
+
1152
+  echo 'echo "Restoring miscellaneous files"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1153
+  echo "rsyncrypto -d -r scp://$SERVER/backup/misc /home/$MY_USERNAME/tempfiles scp://$SERVER/keys/misc $BACKUP_CERTIFICATE" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1077 1154
   echo "tar -xzvf /home/$MY_USERNAME/tempfiles/miscfiles.tar.gz -C /" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1155
+  echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1078 1156
 
1079 1157
   if grep -Fxq "install_gnu_social" $COMPLETION_FILE; then
1080 1158
       echo "if [ -f /home/$MY_USERNAME/tempfiles/gnusocial.sql ]; then" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
@@ -1082,6 +1160,7 @@ function restore_from_friend {
1082 1160
       echo "  mysql -u root --password=$MARIADB_PASSWORD gnusocial -o < /home/$MY_USERNAME/tempfiles/gnusocial.sql" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1083 1161
       echo "  tar -xzvf /home/$MY_USERNAME/tempfiles/gnusocial.tar.gz -C /" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1084 1162
       echo 'fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1163
+      echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1085 1164
   fi
1086 1165
 
1087 1166
   if grep -Fxq "install_redmatrix" $COMPLETION_FILE; then
@@ -1090,6 +1169,7 @@ function restore_from_friend {
1090 1169
       echo "  mysql -u root --password=$MARIADB_PASSWORD redmatrix -o < /home/$MY_USERNAME/tempfiles/redmatrix.sql" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1091 1170
       echo "  tar -xzvf /home/$MY_USERNAME/tempfiles/redmatrix.tar.gz -C /" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1092 1171
       echo 'fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1172
+      echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1093 1173
   fi
1094 1174
 
1095 1175
   if grep -Fxq "install_owncloud" $COMPLETION_FILE; then
@@ -1099,6 +1179,7 @@ function restore_from_friend {
1099 1179
       echo '  echo "Restoring owncloud database"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1100 1180
       echo "  mysql -u root --password=$MARIADB_PASSWORD owncloud -o < /home/$MY_USERNAME/tempfiles/owncloud.sql" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1101 1181
       echo 'fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1182
+      echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1102 1183
   fi
1103 1184
 
1104 1185
   if grep -Fxq "install_wiki" $COMPLETION_FILE; then
@@ -1106,26 +1187,72 @@ function restore_from_friend {
1106 1187
       echo '  echo "Restoring Wiki"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1107 1188
       echo "  tar -xzvf /home/$MY_USERNAME/tempfiles/wiki.tar.gz -C /" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1108 1189
       echo 'fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1190
+      echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1109 1191
   fi
1110 1192
 
1111 1193
   if grep -Fxq "install_blog" $COMPLETION_FILE; then
1112 1194
       echo "if [ -f /home/$MY_USERNAME/tempfiles/blog.tar.gz ]; then" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1113
-      echo '  echo "Restoring Blog"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1195
+      echo '  echo "Restoring blog"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1114 1196
       echo "  tar -xzvf /home/$MY_USERNAME/tempfiles/blog.tar.gz -C /" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1115 1197
       echo 'fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1198
+      echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1116 1199
   fi
1117 1200
 
1118 1201
   echo "rm -rf /home/$MY_USERNAME/tempfiles" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1202
+  echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1119 1203
 
1120 1204
   echo "if [ -d /home/$MY_USERNAME/Maildir ]; then" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1121 1205
   echo '  echo "Restoring emails"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1122
-  echo "  duplicity --force scp://$SERVER/Maildir /home/$MY_USERNAME/Maildir" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1206
+  echo "  rsyncrypto -d -r scp://$SERVER/backup/mail /home/$MY_USERNAME/Maildir scp://$SERVER/keys/mail $BACKUP_CERTIFICATE" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1123 1207
   echo 'fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1208
+  echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1124 1209
 
1125 1210
   echo "if [ -d /var/cache/minidlna ]; then" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1126 1211
   echo '  echo "Restoring DLNA cache"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1127
-  echo "  duplicity --force scp://$SERVER/dlna /var/cache/minidlna" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1212
+  echo "  rsyncrypto -d -r scp://$SERVER/backup/dlna /var/cache/minidlna scp://$SERVER/keys/dlna $BACKUP_CERTIFICATE" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1128 1213
   echo 'fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1214
+  echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1215
+
1216
+  if grep -Fxq "install_gnu_social" $COMPLETION_FILE; then
1217
+      echo "if [ -f /home/$MY_USERNAME/tempfiles/gnusocial.sql ]; then" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1218
+      echo '  echo "Restoring microblog database"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1219
+      echo "  mysql -u root --password=$MARIADB_PASSWORD gnusocial -o < /home/$MY_USERNAME/tempfiles/gnusocial.sql" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1220
+      echo "  tar -xzvf /home/$MY_USERNAME/tempfiles/gnusocial.tar.gz -C /" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1221
+      echo 'fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1222
+  fi
1223
+
1224
+  if grep -Fxq "install_redmatrix" $COMPLETION_FILE; then
1225
+      echo "if [ -f /home/$MY_USERNAME/tempfiles/redmatrix.sql ]; then" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1226
+      echo '  echo "Restoring Red Matrix database"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1227
+      echo "  mysql -u root --password=$MARIADB_PASSWORD redmatrix -o < /home/$MY_USERNAME/tempfiles/redmatrix.sql" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1228
+      echo "  tar -xzvf /home/$MY_USERNAME/tempfiles/redmatrix.tar.gz -C /" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1229
+      echo 'fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1230
+  fi
1231
+
1232
+  if grep -Fxq "install_owncloud" $COMPLETION_FILE; then
1233
+      echo "if [ -f /home/$MY_USERNAME/tempfiles/owncloud.tar.gz ]; then" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1234
+      echo '  echo "Restoring Owncloud"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1235
+      echo "  tar -xzvf /home/$MY_USERNAME/tempfiles/owncloud.tar.gz -C /" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1236
+      echo '  echo "Restoring owncloud database"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1237
+      echo "  mysql -u root --password=$MARIADB_PASSWORD owncloud -o < /home/$MY_USERNAME/tempfiles/owncloud.sql" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1238
+      echo 'fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1239
+  fi
1240
+
1241
+  if grep -Fxq "install_wiki" $COMPLETION_FILE; then
1242
+      echo "if [ -f /home/$MY_USERNAME/tempfiles/wiki.tar.gz ]; then" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1243
+      echo '  echo "Restoring Wiki"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1244
+      echo "  tar -xzvf /home/$MY_USERNAME/tempfiles/wiki.tar.gz -C /" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1245
+      echo 'fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1246
+  fi
1247
+
1248
+  if grep -Fxq "install_blog" $COMPLETION_FILE; then
1249
+      echo "if [ -f /home/$MY_USERNAME/tempfiles/blog.tar.gz ]; then" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1250
+      echo '  echo "Restoring Blog"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1251
+      echo "  tar -xzvf /home/$MY_USERNAME/tempfiles/blog.tar.gz -C /" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1252
+      echo 'fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1253
+  fi
1254
+
1255
+  echo "rm -rf /home/$MY_USERNAME/tempfiles" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1129 1256
 
1130 1257
   echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
1131 1258
   echo 'exit 0' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME