Przeglądaj źródła

Backup is a separate command

Bob Mottram 9 lat temu
rodzic
commit
002fdbaaa2
4 zmienionych plików z 485 dodań i 502 usunięć
  1. 2
    0
      Makefile
  2. BIN
      man/freedombone-backup-local.1.gz
  3. 2
    502
      src/freedombone
  4. 481
    0
      src/freedombone-backup-local

+ 2
- 0
Makefile Wyświetl plik

@@ -19,6 +19,7 @@ install:
19 19
 	install -m 755 src/* ${DESTDIR}${PREFIX}/bin
20 20
 	install -m 755 src/${APP}-meshweb ${DESTDIR}${PREFIX}/bin/meshweb
21 21
 	install -m 755 src/${APP}-controlpanel ${DESTDIR}${PREFIX}/bin/control
22
+	install -m 755 src/${APP}-backup-local ${DESTDIR}${PREFIX}/bin/backup
22 23
 	mkdir -m 755 -p ${DESTDIR}${PREFIX}/share/man/man1
23 24
 	install -m 644 man/*.1.gz ${DESTDIR}${PREFIX}/share/man/man1
24 25
 	bash -c "./translate install"
@@ -28,6 +29,7 @@ uninstall:
28 29
 	rm -f ${PREFIX}/bin/${APP}*
29 30
 	rm -f ${PREFIX}/bin/zeronetavahi
30 31
 	rm -f ${PREFIX}/bin/mesh
32
+	rm -f ${PREFIX}/bin/backup
31 33
 	rm -f ${PREFIX}/bin/meshweb
32 34
 	rm -rf /etc/freedombone
33 35
 	bash -c "./translate uninstall"

BIN
man/freedombone-backup-local.1.gz Wyświetl plik


+ 2
- 502
src/freedombone Wyświetl plik

@@ -2808,503 +2808,6 @@ function backup_database {
2808 2808
   echo '}' >> /usr/bin/$BACKUP_SCRIPT_NAME
2809 2809
 }
2810 2810
 
2811
-function create_backup_script {
2812
-  if grep -Fxq "create_backup_script" $COMPLETION_FILE; then
2813
-      return
2814
-  fi
2815
-  apt-get -y install rsyncrypto cryptsetup libgfshare-bin obnam
2816
-
2817
-  get_mariadb_password
2818
-  get_mariadb_gnusocial_admin_password
2819
-  get_mariadb_hubzilla_admin_password
2820
-  get_mariadb_owncloud_admin_password
2821
-  get_mariadb_git_admin_password
2822
-
2823
-  echo '#!/bin/bash' > /usr/bin/$BACKUP_SCRIPT_NAME
2824
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
2825
-  echo "COMPLETION_FILE=$COMPLETION_FILE" >> /usr/bin/$BACKUP_SCRIPT_NAME
2826
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
2827
-  echo "USB_DRIVE=$USB_DRIVE" >> /usr/bin/$BACKUP_SCRIPT_NAME
2828
-  echo 'if [ $1 ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
2829
-  echo '  USB_DRIVE=/dev/${1}1' >> /usr/bin/$BACKUP_SCRIPT_NAME
2830
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
2831
-  echo "USB_MOUNT=$USB_MOUNT" >> /usr/bin/$BACKUP_SCRIPT_NAME
2832
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
2833
-  echo -n 'ADMIN_USERNAME=$(cat $COMPLETION_FILE | grep "Admin user" | ' >> /usr/bin/$BACKUP_SCRIPT_NAME
2834
-  echo -n "awk -F ':' '{print " >> /usr/bin/$BACKUP_SCRIPT_NAME
2835
-  echo -n '$2' >> /usr/bin/$BACKUP_SCRIPT_NAME
2836
-  echo "}')" >> /usr/bin/$BACKUP_SCRIPT_NAME
2837
-  echo 'MY_USERNAME=$ADMIN_USERNAME' >> /usr/bin/$BACKUP_SCRIPT_NAME
2838
-  echo 'if [ $2 ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
2839
-  echo '  MY_USERNAME=$2' >> /usr/bin/$BACKUP_SCRIPT_NAME
2840
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
2841
-  echo 'MY_NAME=$(getent passwd $MY_USERNAME | cut -d: -f5 | cut -d, -f1)' >> /usr/bin/$BACKUP_SCRIPT_NAME
2842
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
2843
-  echo 'if [ ! -b $USB_DRIVE ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
2844
-  echo '  echo "Please attach a USB drive"' >> /usr/bin/$BACKUP_SCRIPT_NAME
2845
-  echo '  exit 1' >> /usr/bin/$BACKUP_SCRIPT_NAME
2846
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
2847
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
2848
-  echo 'umount -f $USB_MOUNT' >> /usr/bin/$BACKUP_SCRIPT_NAME
2849
-  echo 'if [ ! -d $USB_MOUNT ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
2850
-  echo '  mkdir $USB_MOUNT' >> /usr/bin/$BACKUP_SCRIPT_NAME
2851
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
2852
-  echo 'if [ -f /dev/mapper/encrypted_usb ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
2853
-  echo '  rm -rf /dev/mapper/encrypted_usb' >> /usr/bin/$BACKUP_SCRIPT_NAME
2854
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
2855
-  echo 'cryptsetup luksClose encrypted_usb' >> /usr/bin/$BACKUP_SCRIPT_NAME
2856
-  echo 'cryptsetup luksOpen $USB_DRIVE encrypted_usb' >> /usr/bin/$BACKUP_SCRIPT_NAME
2857
-  echo 'if [ "$?" = "0" ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
2858
-  echo '  USB_DRIVE=/dev/mapper/encrypted_usb' >> /usr/bin/$BACKUP_SCRIPT_NAME
2859
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
2860
-  echo -n 'mount $USB_DRIVE ' >> /usr/bin/$BACKUP_SCRIPT_NAME
2861
-  echo '$USB_MOUNT' >> /usr/bin/$BACKUP_SCRIPT_NAME
2862
-  echo 'if [ ! "$?" = "0" ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
2863
-  echo '  echo "There was a problem mounting the USB drive to $USB_MOUNT"' >> /usr/bin/$BACKUP_SCRIPT_NAME
2864
-  echo '  rm -rf $USB_MOUNT' >> /usr/bin/$BACKUP_SCRIPT_NAME
2865
-  echo '  exit 6392' >> /usr/bin/$BACKUP_SCRIPT_NAME
2866
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
2867
-  echo 'if [ ! -d $USB_MOUNT/backup ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
2868
-  echo '  mkdir $USB_MOUNT/backup' >> /usr/bin/$BACKUP_SCRIPT_NAME
2869
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
2870
-  echo 'if [ ! -d $USB_MOUNT/backup ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
2871
-  echo '  echo "There was a problem making the directory $USB_MOUNT/backup."' >> /usr/bin/$BACKUP_SCRIPT_NAME
2872
-  echo '  umount $USB_MOUNT' >> /usr/bin/$BACKUP_SCRIPT_NAME
2873
-  echo '  rm -rf $USB_MOUNT' >> /usr/bin/$BACKUP_SCRIPT_NAME
2874
-  echo '  exit 27' >> /usr/bin/$BACKUP_SCRIPT_NAME
2875
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
2876
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
2877
-
2878
-  echo -n 'used_percent=$(df -k $USB_MOUNT | tail -n 1 | ' >> /usr/bin/$BACKUP_SCRIPT_NAME
2879
-  echo -n "awk -F ' ' '{print " >> /usr/bin/$BACKUP_SCRIPT_NAME
2880
-  echo -n '$5' >> /usr/bin/$BACKUP_SCRIPT_NAME
2881
-  echo -n "}' | " >> /usr/bin/$BACKUP_SCRIPT_NAME
2882
-  echo -n "awk -F '%' '{print " >> /usr/bin/$BACKUP_SCRIPT_NAME
2883
-  echo -n '$1' >> /usr/bin/$BACKUP_SCRIPT_NAME
2884
-  echo "}')" >> /usr/bin/$BACKUP_SCRIPT_NAME
2885
-  echo 'if [ $used_percent -gt 95 ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
2886
-  echo '  echo "Less than 5% of space remaining on backup drive"' >> /usr/bin/$BACKUP_SCRIPT_NAME
2887
-  echo '  umount $USB_MOUNT' >> /usr/bin/$BACKUP_SCRIPT_NAME
2888
-  echo '  rm -rf $USB_MOUNT' >> /usr/bin/$BACKUP_SCRIPT_NAME
2889
-  echo '  exit 6492' >> /usr/bin/$BACKUP_SCRIPT_NAME
2890
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
2891
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
2892
-
2893
-  echo '# MariaDB password' >> /usr/bin/$BACKUP_SCRIPT_NAME
2894
-  echo -n 'DATABASE_PASSWORD=$(cat ' >> /usr/bin/$BACKUP_SCRIPT_NAME
2895
-  echo "$DATABASE_PASSWORD_FILE)" >> /usr/bin/$BACKUP_SCRIPT_NAME
2896
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
2897
-
2898
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
2899
-  backup_database
2900
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
2901
-  backup_directory_to_usb
2902
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
2903
-
2904
-  if [[ $BACKUP_TYPE != 'obnam' ]]; then
2905
-      echo "if [ ! -f $BACKUP_CERTIFICATE ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
2906
-      echo '    echo "Creating backup key"' >> /usr/bin/$BACKUP_SCRIPT_NAME
2907
-      echo "    freedombone-addcert -h backup --dhkey $DH_KEYLENGTH" >> /usr/bin/$BACKUP_SCRIPT_NAME
2908
-      echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
2909
-      echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
2910
-      echo "if [ ! -f $BACKUP_CERTIFICATE.gpg ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
2911
-      echo '  echo "GPG encrypt the backup key"' >> /usr/bin/$BACKUP_SCRIPT_NAME
2912
-      echo "  gpg -c $BACKUP_CERTIFICATE" >> /usr/bin/$BACKUP_SCRIPT_NAME
2913
-      echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
2914
-      echo -n "cp $BACKUP_CERTIFICATE.gpg " >> /usr/bin/$BACKUP_SCRIPT_NAME
2915
-      echo '$USB_MOUNT/backup/key.gpg' >> /usr/bin/$BACKUP_SCRIPT_NAME
2916
-      echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
2917
-  fi
2918
-
2919
-  echo 'if [ -d /etc/letsencrypt ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
2920
-  echo '    echo "Backing up Lets Encrypt settings"' >> /usr/bin/$BACKUP_SCRIPT_NAME
2921
-  echo '    backup_directory_to_usb /etc/letsencrypt letsencrypt' >> /usr/bin/$BACKUP_SCRIPT_NAME
2922
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
2923
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
2924
-
2925
-  if grep -Fxq "install_gnu_social" $COMPLETION_FILE; then
2926
-      BACKUP_INCLUDES_DATABASES="yes"
2927
-      echo 'backup_database gnusocial' >> /usr/bin/$BACKUP_SCRIPT_NAME
2928
-      echo 'backup_directory_to_usb /root/tempgnusocialdata gnusocialdata' >> /usr/bin/$BACKUP_SCRIPT_NAME
2929
-      echo 'echo "Backing up GNU social installation"' >> /usr/bin/$BACKUP_SCRIPT_NAME
2930
-      echo "backup_directory_to_usb /var/www/$MICROBLOG_DOMAIN_NAME/htdocs gnusocial" >> /usr/bin/$BACKUP_SCRIPT_NAME
2931
-      echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
2932
-  fi
2933
-  if grep -Fxq "install_hubzilla" $COMPLETION_FILE; then
2934
-      BACKUP_INCLUDES_DATABASES="yes"
2935
-      echo 'backup_database hubzilla' >> /usr/bin/$BACKUP_SCRIPT_NAME
2936
-      echo 'backup_directory_to_usb /root/temphubzilladata hubzilladata' >> /usr/bin/$BACKUP_SCRIPT_NAME
2937
-      echo 'echo "Backing up Hubzilla installation"' >> /usr/bin/$BACKUP_SCRIPT_NAME
2938
-      echo "backup_directory_to_usb /var/www/$HUBZILLA_DOMAIN_NAME/htdocs hubzilla" >> /usr/bin/$BACKUP_SCRIPT_NAME
2939
-      echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
2940
-  fi
2941
-  if grep -Fxq "install_owncloud" $COMPLETION_FILE; then
2942
-      BACKUP_INCLUDES_DATABASES="yes"
2943
-      echo 'if [ ! -d $USB_MOUNT/backup/owncloud2 ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
2944
-      echo '  mkdir -p $USB_MOUNT/backup/owncloud2' >> /usr/bin/$BACKUP_SCRIPT_NAME
2945
-      echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
2946
-      echo 'backup_database owncloud' >> /usr/bin/$BACKUP_SCRIPT_NAME
2947
-      echo 'backup_directory_to_usb /root/tempownclouddata ownclouddata' >> /usr/bin/$BACKUP_SCRIPT_NAME
2948
-      echo 'echo "Obtaining Owncloud data backup"' >> /usr/bin/$BACKUP_SCRIPT_NAME
2949
-      echo 'backup_directory_to_usb /var/lib/owncloud owncloud' >> /usr/bin/$BACKUP_SCRIPT_NAME
2950
-      echo 'backup_directory_to_usb /etc/owncloud owncloud2' >> /usr/bin/$BACKUP_SCRIPT_NAME
2951
-      echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
2952
-  fi
2953
-  if grep -Fxq "install_gogs" $COMPLETION_FILE; then
2954
-      BACKUP_INCLUDES_DATABASES="yes"
2955
-      echo 'if [ ! -d $USB_MOUNT/backup/gogsrepos ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
2956
-      echo '  mkdir -p $USB_MOUNT/backup/gogsrepos' >> /usr/bin/$BACKUP_SCRIPT_NAME
2957
-      echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
2958
-      echo 'if [ ! -d $USB_MOUNT/backup/gogsssh ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
2959
-      echo '  mkdir -p $USB_MOUNT/backup/gogsssh' >> /usr/bin/$BACKUP_SCRIPT_NAME
2960
-      echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
2961
-      echo 'backup_database gogs' >> /usr/bin/$BACKUP_SCRIPT_NAME
2962
-      echo 'backup_directory_to_usb /root/tempgogsdata gogsdata' >> /usr/bin/$BACKUP_SCRIPT_NAME
2963
-      echo 'echo "Obtaining Gogs settings backup"' >> /usr/bin/$BACKUP_SCRIPT_NAME
2964
-      echo 'backup_directory_to_usb /home/git/go/src/github.com/gogits/gogs/custom gogs' >> /usr/bin/$BACKUP_SCRIPT_NAME
2965
-      echo 'echo "Obtaining Gogs repos backup"' >> /usr/bin/$BACKUP_SCRIPT_NAME
2966
-      echo 'mv /home/git/gogs-repositories/*.git /home/git/gogs-repositories/$MY_USERNAME' >> /usr/bin/$BACKUP_SCRIPT_NAME
2967
-      echo 'backup_directory_to_usb /home/git/gogs-repositories gogsrepos' >> /usr/bin/$BACKUP_SCRIPT_NAME
2968
-      echo 'echo "Obtaining Gogs authorized_keys backup"' >> /usr/bin/$BACKUP_SCRIPT_NAME
2969
-      echo 'backup_directory_to_usb /home/git/.ssh gogsssh' >> /usr/bin/$BACKUP_SCRIPT_NAME
2970
-      echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
2971
-  fi
2972
-  if grep -Fxq "install_wiki" $COMPLETION_FILE; then
2973
-      echo 'if [ ! -d $USB_MOUNT/backup/wiki ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
2974
-      echo '  mkdir -p $USB_MOUNT/backup/wiki' >> /usr/bin/$BACKUP_SCRIPT_NAME
2975
-      echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
2976
-      echo 'if [ ! -d $USB_MOUNT/backup/wiki2 ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
2977
-      echo '  mkdir -p $USB_MOUNT/backup/wiki2' >> /usr/bin/$BACKUP_SCRIPT_NAME
2978
-      echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
2979
-      echo 'echo "Obtaining wiki data backup"' >> /usr/bin/$BACKUP_SCRIPT_NAME
2980
-      echo 'backup_directory_to_usb /var/lib/dokuwiki wiki' >> /usr/bin/$BACKUP_SCRIPT_NAME
2981
-      echo 'backup_directory_to_usb /etc/dokuwiki wiki2' >> /usr/bin/$BACKUP_SCRIPT_NAME
2982
-      echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
2983
-  fi
2984
-  if grep -Fxq "install_blog" $COMPLETION_FILE; then
2985
-      echo 'if [ ! -d $USB_MOUNT/backup/blog ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
2986
-      echo '  mkdir -p $USB_MOUNT/backup/blog' >> /usr/bin/$BACKUP_SCRIPT_NAME
2987
-      echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
2988
-      echo 'echo "Obtaining blog backup"' >> /usr/bin/$BACKUP_SCRIPT_NAME
2989
-      echo "backup_directory_to_usb /var/www/$FULLBLOG_DOMAIN_NAME/htdocs blog" >> /usr/bin/$BACKUP_SCRIPT_NAME
2990
-      echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
2991
-  fi
2992
-  if grep -Fxq "mesh_cjdns" $COMPLETION_FILE; then
2993
-      echo 'if [ ! -d $USB_MOUNT/backup/cjdns ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
2994
-      echo '  mkdir -p $USB_MOUNT/backup/cjdns' >> /usr/bin/$BACKUP_SCRIPT_NAME
2995
-      echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
2996
-      echo 'echo "Obtaining cjdns backup"' >> /usr/bin/$BACKUP_SCRIPT_NAME
2997
-      echo 'backup_directory_to_usb /etc/cjdns cjdns' >> /usr/bin/$BACKUP_SCRIPT_NAME
2998
-      echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
2999
-  fi
3000
-
3001
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
3002
-  echo '# Backup certificates' >> /usr/bin/$BACKUP_SCRIPT_NAME
3003
-  echo "if [ -d /etc/ssl ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
3004
-  echo '  echo "Backing up certificates"' >> /usr/bin/$BACKUP_SCRIPT_NAME
3005
-  echo '  if [ ! -d $USB_MOUNT/backup/ssl ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3006
-  echo '    mkdir -p $USB_MOUNT/backup/ssl' >> /usr/bin/$BACKUP_SCRIPT_NAME
3007
-  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3008
-  echo '  backup_directory_to_usb /etc/ssl ssl' >> /usr/bin/$BACKUP_SCRIPT_NAME
3009
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3010
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
3011
-
3012
-  echo '# Backup projects' >> /usr/bin/$BACKUP_SCRIPT_NAME
3013
-  echo 'for d in /home/*/ ; do' >> /usr/bin/$BACKUP_SCRIPT_NAME
3014
-  echo '  USERNAME=$(echo "$d" | awk -F '"'"'/'"'"' '"'"'{print $3}'"'"')' >> /usr/bin/$BACKUP_SCRIPT_NAME
3015
-  echo '  if [[ $USERNAME != "git" ]]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3016
-  echo '    if [ -d /home/$USERNAME/projects ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3017
-  echo '      echo "Backing up projects for $USERNAME"' >> /usr/bin/$BACKUP_SCRIPT_NAME
3018
-  echo '      if [ ! -d $USB_MOUNT/backup/projects/$USERNAME ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3019
-  echo '        mkdir -p $USB_MOUNT/backup/projects/$USERNAME' >> /usr/bin/$BACKUP_SCRIPT_NAME
3020
-  echo '      fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3021
-  echo '      backup_directory_to_usb /home/$USERNAME/projects projects/$USERNAME' >> /usr/bin/$BACKUP_SCRIPT_NAME
3022
-  echo '    fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3023
-  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3024
-  echo 'done' >> /usr/bin/$BACKUP_SCRIPT_NAME
3025
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
3026
-
3027
-  echo '# Backup personal settings' >> /usr/bin/$BACKUP_SCRIPT_NAME
3028
-  echo 'for d in /home/*/ ; do' >> /usr/bin/$BACKUP_SCRIPT_NAME
3029
-  echo '  USERNAME=$(echo "$d" | awk -F '"'"'/'"'"' '"'"'{print $3}'"'"')' >> /usr/bin/$BACKUP_SCRIPT_NAME
3030
-  echo '  if [[ $USERNAME != "git" ]]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3031
-  echo '    if [ -d /home/$USERNAME/personal ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3032
-  echo '      echo "Backing up personal settings for $USERNAME"' >> /usr/bin/$BACKUP_SCRIPT_NAME
3033
-  echo '      if [ ! -d $USB_MOUNT/backup/personal/$USERNAME ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3034
-  echo '        mkdir -p $USB_MOUNT/backup/personal/$USERNAME' >> /usr/bin/$BACKUP_SCRIPT_NAME
3035
-  echo '      fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3036
-  echo '      backup_directory_to_usb /home/$USERNAME/personal personal/$USERNAME' >> /usr/bin/$BACKUP_SCRIPT_NAME
3037
-  echo '    fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3038
-  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3039
-  echo 'done' >> /usr/bin/$BACKUP_SCRIPT_NAME
3040
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
3041
-
3042
-  echo '# Backup the public mailing list' >> /usr/bin/$BACKUP_SCRIPT_NAME
3043
-  echo "if [ -d $PUBLIC_MAILING_LIST_DIRECTORY ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
3044
-  echo '  echo "Backing up the public mailing list"' >> /usr/bin/$BACKUP_SCRIPT_NAME
3045
-  echo '  if [ ! -d $USB_MOUNT/backup/mailinglist ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3046
-  echo '    mkdir -p $USB_MOUNT/backup/mailinglist' >> /usr/bin/$BACKUP_SCRIPT_NAME
3047
-  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3048
-  echo "  backup_directory_to_usb $PUBLIC_MAILING_LIST_DIRECTORY mailinglist" >> /usr/bin/$BACKUP_SCRIPT_NAME
3049
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3050
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
3051
-
3052
-  echo '# Backup xmpp settings' >> /usr/bin/$BACKUP_SCRIPT_NAME
3053
-  echo "if [ -d $XMPP_DIRECTORY ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
3054
-  echo '  echo "Backing up the XMPP settings"' >> /usr/bin/$BACKUP_SCRIPT_NAME
3055
-  echo '  if [ ! -d $USB_MOUNT/backup/xmpp ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3056
-  echo '    mkdir -p $USB_MOUNT/backup/xmpp' >> /usr/bin/$BACKUP_SCRIPT_NAME
3057
-  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3058
-  echo "  backup_directory_to_usb $XMPP_DIRECTORY xmpp" >> /usr/bin/$BACKUP_SCRIPT_NAME
3059
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3060
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
3061
-
3062
-  echo '# Backup gpg keys' >> /usr/bin/$BACKUP_SCRIPT_NAME
3063
-  echo 'for d in /home/*/ ; do' >> /usr/bin/$BACKUP_SCRIPT_NAME
3064
-  echo '  USERNAME=$(echo "$d" | awk -F '"'"'/'"'"' '"'"'{print $3}'"'"')' >> /usr/bin/$BACKUP_SCRIPT_NAME
3065
-  echo '  if [[ $USERNAME != "git" ]]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3066
-  echo '    if [ -d /home/$USERNAME/.gnupg ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3067
-  echo '      echo "Backing up gpg keys for $USERNAME"' >> /usr/bin/$BACKUP_SCRIPT_NAME
3068
-  echo '      if [ ! -d $USB_MOUNT/backup/gnupg/$USERNAME ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3069
-  echo '        mkdir -p $USB_MOUNT/backup/gnupg/$USERNAME' >> /usr/bin/$BACKUP_SCRIPT_NAME
3070
-  echo '      fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3071
-  echo '      backup_directory_to_usb /home/$USERNAME/.gnupg gnupg/$USERNAME' >> /usr/bin/$BACKUP_SCRIPT_NAME
3072
-  echo '    fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3073
-  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3074
-  echo 'done' >> /usr/bin/$BACKUP_SCRIPT_NAME
3075
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
3076
-
3077
-  echo '# Backup ssh keys' >> /usr/bin/$BACKUP_SCRIPT_NAME
3078
-  echo 'for d in /home/*/ ; do' >> /usr/bin/$BACKUP_SCRIPT_NAME
3079
-  echo '  USERNAME=$(echo "$d" | awk -F '"'"'/'"'"' '"'"'{print $3}'"'"')' >> /usr/bin/$BACKUP_SCRIPT_NAME
3080
-  echo '  if [[ $USERNAME != "git" ]]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3081
-  echo '    if [ -d /home/$USERNAME/.ssh ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3082
-  echo '      echo "Backing up ssh keys for $USERNAME"' >> /usr/bin/$BACKUP_SCRIPT_NAME
3083
-  echo '      if [ ! -d $USB_MOUNT/backup/ssh/$USERNAME ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3084
-  echo '        mkdir -p $USB_MOUNT/backup/ssh/$USERNAME' >> /usr/bin/$BACKUP_SCRIPT_NAME
3085
-  echo '      fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3086
-  echo '      backup_directory_to_usb /home/$USERNAME/.ssh ssh/$USERNAME' >> /usr/bin/$BACKUP_SCRIPT_NAME
3087
-  echo '    fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3088
-  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3089
-  echo 'done' >> /usr/bin/$BACKUP_SCRIPT_NAME
3090
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
3091
-
3092
-  echo '# Backup user configs' >> /usr/bin/$BACKUP_SCRIPT_NAME
3093
-  echo 'for d in /home/*/ ; do' >> /usr/bin/$BACKUP_SCRIPT_NAME
3094
-  echo '  USERNAME=$(echo "$d" | awk -F '"'"'/'"'"' '"'"'{print $3}'"'"')' >> /usr/bin/$BACKUP_SCRIPT_NAME
3095
-  echo '  if [[ $USERNAME != "git" ]]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3096
-  echo '    if [ -d /home/$USERNAME/.config ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3097
-  echo '      echo "Backing up config files for $USERNAME"' >> /usr/bin/$BACKUP_SCRIPT_NAME
3098
-  echo '      if [ ! -d $USB_MOUNT/backup/config/$USERNAME ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3099
-  echo '        mkdir -p $USB_MOUNT/backup/config/$USERNAME' >> /usr/bin/$BACKUP_SCRIPT_NAME
3100
-  echo '      fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3101
-  echo '      backup_directory_to_usb /home/$USERNAME/.config config/$USERNAME' >> /usr/bin/$BACKUP_SCRIPT_NAME
3102
-  echo '    fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3103
-  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3104
-  echo 'done' >> /usr/bin/$BACKUP_SCRIPT_NAME
3105
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
3106
-
3107
-  echo '# Backup web sites' >> /usr/bin/$BACKUP_SCRIPT_NAME
3108
-  echo "if [ -d /etc/nginx ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
3109
-  echo '  echo "Backing up web settings"' >> /usr/bin/$BACKUP_SCRIPT_NAME
3110
-  echo '  if [ ! -d $USB_MOUNT/backup/web ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3111
-  echo '    mkdir -p $USB_MOUNT/backup/web' >> /usr/bin/$BACKUP_SCRIPT_NAME
3112
-  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3113
-  echo '  backup_directory_to_usb /etc/nginx/sites-available web' >> /usr/bin/$BACKUP_SCRIPT_NAME
3114
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3115
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
3116
-
3117
-  echo '# Backup README file' >> /usr/bin/$BACKUP_SCRIPT_NAME
3118
-  echo 'if [ -f /home/$MY_USERNAME/README ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3119
-  echo '  echo "Backing up README"' >> /usr/bin/$BACKUP_SCRIPT_NAME
3120
-  echo '  if [ ! -d $USB_MOUNT/backup/readme ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3121
-  echo '    mkdir -p $USB_MOUNT/backup/readme' >> /usr/bin/$BACKUP_SCRIPT_NAME
3122
-  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3123
-  echo '  if [ ! -d /home/$MY_USERNAME/tempbackup ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3124
-  echo '    mkdir -p /home/$MY_USERNAME/tempbackup' >> /usr/bin/$BACKUP_SCRIPT_NAME
3125
-  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3126
-  echo '  cp -f /home/$MY_USERNAME/README /home/$MY_USERNAME/tempbackup' >> /usr/bin/$BACKUP_SCRIPT_NAME
3127
-  echo '  backup_directory_to_usb /home/$MY_USERNAME/tempbackup readme' >> /usr/bin/$BACKUP_SCRIPT_NAME
3128
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3129
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
3130
-
3131
-  echo '# Backup IPFS' >> /usr/bin/$BACKUP_SCRIPT_NAME
3132
-  echo 'if [ -d /home/$MY_USERNAME/.ipfs ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3133
-  echo '  echo "Backing up IPFS"' >> /usr/bin/$BACKUP_SCRIPT_NAME
3134
-  echo '  if [ ! -d $USB_MOUNT/backup/ipfs ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3135
-  echo '    mkdir -p $USB_MOUNT/backup/ipfs' >> /usr/bin/$BACKUP_SCRIPT_NAME
3136
-  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3137
-  echo '  backup_directory_to_usb /home/$MY_USERNAME/.ipfs ipfs' >> /usr/bin/$BACKUP_SCRIPT_NAME
3138
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3139
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
3140
-
3141
-  echo '# Backup Mutt settings' >> /usr/bin/$BACKUP_SCRIPT_NAME
3142
-  echo 'for d in /home/*/ ; do' >> /usr/bin/$BACKUP_SCRIPT_NAME
3143
-  echo '  USERNAME=$(echo "$d" | awk -F '"'"'/'"'"' '"'"'{print $3}'"'"')' >> /usr/bin/$BACKUP_SCRIPT_NAME
3144
-  echo '  if [[ $USERNAME != "git" ]]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3145
-  echo '    if [ -f /home/$USERNAME/.muttrc ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3146
-  echo '      echo "Backing up Mutt settings for $USERNAME"' >> /usr/bin/$BACKUP_SCRIPT_NAME
3147
-  echo '      if [ ! -d /home/$USERNAME/tempbackup ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3148
-  echo '        mkdir -p /home/$USERNAME/tempbackup' >> /usr/bin/$BACKUP_SCRIPT_NAME
3149
-  echo '      fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3150
-  echo '      cp /home/$USERNAME/.muttrc /home/$USERNAME/tempbackup' >> /usr/bin/$BACKUP_SCRIPT_NAME
3151
-  echo '      if [ -f /etc/Muttrc ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3152
-  echo '        cp /etc/Muttrc /home/$USERNAME/tempbackup' >> /usr/bin/$BACKUP_SCRIPT_NAME
3153
-  echo '      fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3154
-  echo '      if [ ! -d $USB_MOUNT/backup/mutt/$USERNAME ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3155
-  echo '        mkdir -p $USB_MOUNT/backup/mutt/$USERNAME' >> /usr/bin/$BACKUP_SCRIPT_NAME
3156
-  echo '      fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3157
-  echo '      backup_directory_to_usb /home/$USERNAME/tempbackup mutt/$USERNAME' >> /usr/bin/$BACKUP_SCRIPT_NAME
3158
-  echo '    fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3159
-  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3160
-  echo 'done' >> /usr/bin/$BACKUP_SCRIPT_NAME
3161
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
3162
-
3163
-  echo '# Backup procmail settings' >> /usr/bin/$BACKUP_SCRIPT_NAME
3164
-  echo 'for d in /home/*/ ; do' >> /usr/bin/$BACKUP_SCRIPT_NAME
3165
-  echo '  USERNAME=$(echo "$d" | awk -F '"'"'/'"'"' '"'"'{print $3}'"'"')' >> /usr/bin/$BACKUP_SCRIPT_NAME
3166
-  echo '  if [[ $USERNAME != "git" ]]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3167
-  echo '    if [ -f /home/$USERNAME/.procmailrc ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3168
-  echo '      echo "Backing up procmail settings for $USERNAME"' >> /usr/bin/$BACKUP_SCRIPT_NAME
3169
-  echo '      if [ ! -d /home/$USERNAME/tempbackup ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3170
-  echo '        mkdir -p /home/$USERNAME/tempbackup' >> /usr/bin/$BACKUP_SCRIPT_NAME
3171
-  echo '      fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3172
-  echo '      cp /home/$USERNAME/.procmailrc /home/$USERNAME/tempbackup' >> /usr/bin/$BACKUP_SCRIPT_NAME
3173
-  echo '      if [ ! -d $USB_MOUNT/backup/procmail/$USERNAME ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3174
-  echo '        mkdir -p $USB_MOUNT/backup/procmail/$USERNAME' >> /usr/bin/$BACKUP_SCRIPT_NAME
3175
-  echo '      fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3176
-  echo '      backup_directory_to_usb /home/$USERNAME/tempbackup procmail/$USERNAME' >> /usr/bin/$BACKUP_SCRIPT_NAME
3177
-  echo '    fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3178
-  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3179
-  echo 'done' >> /usr/bin/$BACKUP_SCRIPT_NAME
3180
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
3181
-
3182
-  echo '# Backup spamassassin settings' >> /usr/bin/$BACKUP_SCRIPT_NAME
3183
-  echo 'for d in /home/*/ ; do' >> /usr/bin/$BACKUP_SCRIPT_NAME
3184
-  echo '  USERNAME=$(echo "$d" | awk -F '"'"'/'"'"' '"'"'{print $3}'"'"')' >> /usr/bin/$BACKUP_SCRIPT_NAME
3185
-  echo '  if [[ $USERNAME != "git" ]]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3186
-  echo '    if [ -d /home/$USERNAME/.spamassassin ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3187
-  echo '      echo "Backing up spamassassin settings for $USERNAME"' >> /usr/bin/$BACKUP_SCRIPT_NAME
3188
-  echo '      if [ ! -d $USB_MOUNT/backup/spamassassin/$USERNAME ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3189
-  echo '        mkdir -p $USB_MOUNT/backup/spamassassin/$USERNAME' >> /usr/bin/$BACKUP_SCRIPT_NAME
3190
-  echo '      fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3191
-  echo '      backup_directory_to_usb /home/$USERNAME/.spamassassin spamassassin/$USERNAME' >> /usr/bin/$BACKUP_SCRIPT_NAME
3192
-  echo '    fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3193
-  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3194
-  echo 'done' >> /usr/bin/$BACKUP_SCRIPT_NAME
3195
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
3196
-
3197
-  echo '# Backup email' >> /usr/bin/$BACKUP_SCRIPT_NAME
3198
-  echo 'for d in /home/*/ ; do' >> /usr/bin/$BACKUP_SCRIPT_NAME
3199
-  echo '  USERNAME=$(echo "$d" | awk -F '"'"'/'"'"' '"'"'{print $3}'"'"')' >> /usr/bin/$BACKUP_SCRIPT_NAME
3200
-  echo '  if [[ $USERNAME != "git" ]]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3201
-  echo '    if [ -d /home/$USERNAME/Maildir ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3202
-  echo '      echo "Creating an email archive for $USERNAME"' >> /usr/bin/$BACKUP_SCRIPT_NAME
3203
-  echo '      if [ ! -d /root/tempbackupemail/$USERNAME ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3204
-  echo '        mkdir -p /root/tempbackupemail/$USERNAME' >> /usr/bin/$BACKUP_SCRIPT_NAME
3205
-  echo '      fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3206
-  echo '      tar -czvf /root/tempbackupemail/$USERNAME/maildir.tar.gz /home/$USERNAME/Maildir' >> /usr/bin/$BACKUP_SCRIPT_NAME
3207
-  echo '      echo "Backing up emails for $USERNAME"' >> /usr/bin/$BACKUP_SCRIPT_NAME
3208
-  echo '      if [ ! -d $USB_MOUNT/backup/mail/$USERNAME ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3209
-  echo '        mkdir -p $USB_MOUNT/backup/mail/$USERNAME' >> /usr/bin/$BACKUP_SCRIPT_NAME
3210
-  echo '      fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3211
-  echo '      backup_directory_to_usb /root/tempbackupemail/$USERNAME mail/$USERNAME' >> /usr/bin/$BACKUP_SCRIPT_NAME
3212
-  echo '      rm -rf /root/tempbackupemail/$USERNAME' >> /usr/bin/$BACKUP_SCRIPT_NAME
3213
-  echo '    fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3214
-  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3215
-  echo 'done' >> /usr/bin/$BACKUP_SCRIPT_NAME
3216
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
3217
-
3218
-  echo '# Backup DLNA cache' >> /usr/bin/$BACKUP_SCRIPT_NAME
3219
-  echo "if [ -d /var/cache/minidlna ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
3220
-  echo '  echo "Backing up DLNA cache"' >> /usr/bin/$BACKUP_SCRIPT_NAME
3221
-  echo '  if [ ! -d $USB_MOUNT/backup/dlna ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3222
-  echo '    mkdir -p $USB_MOUNT/backup/dlna' >> /usr/bin/$BACKUP_SCRIPT_NAME
3223
-  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3224
-  echo '  backup_directory_to_usb /var/cache/minidlna dlna' >> /usr/bin/$BACKUP_SCRIPT_NAME
3225
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3226
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
3227
-
3228
-  echo '# Backup VoIP settings' >> /usr/bin/$BACKUP_SCRIPT_NAME
3229
-  echo "if [ -f /etc/$VOIP_CONFIG_FILE ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
3230
-  echo '  echo "Backing up VoIP settings"' >> /usr/bin/$BACKUP_SCRIPT_NAME
3231
-  echo '  if [ ! -d /home/$MY_USERNAME/tempbackup ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3232
-  echo '    mkdir -p /home/$MY_USERNAME/tempbackup' >> /usr/bin/$BACKUP_SCRIPT_NAME
3233
-  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3234
-  echo -n "  cp -f /etc/$VOIP_CONFIG_FILE " >> /usr/bin/$BACKUP_SCRIPT_NAME
3235
-  echo '/home/$MY_USERNAME/tempbackup' >> /usr/bin/$BACKUP_SCRIPT_NAME
3236
-  echo -n "  cp -f /var/lib/mumble-server/$VOIP_DATABASE " >> /usr/bin/$BACKUP_SCRIPT_NAME
3237
-  echo '/home/$MY_USERNAME/tempbackup' >> /usr/bin/$BACKUP_SCRIPT_NAME
3238
-  echo -n '  cp -f /etc/sipwitch.conf ' >> /usr/bin/$BACKUP_SCRIPT_NAME
3239
-  echo '/home/$MY_USERNAME/tempbackup' >> /usr/bin/$BACKUP_SCRIPT_NAME
3240
-  echo '  if [ ! -d $USB_MOUNT/backup/voip ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3241
-  echo '    mkdir -p $USB_MOUNT/backup/voip' >> /usr/bin/$BACKUP_SCRIPT_NAME
3242
-  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3243
-  echo '  backup_directory_to_usb /home/$MY_USERNAME/tempbackup voip' >> /usr/bin/$BACKUP_SCRIPT_NAME
3244
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3245
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
3246
-
3247
-  if [[ $BACKUP_INCLUDES_DATABASES == "yes" ]]; then
3248
-      echo '# Mysql settings' >> /usr/bin/$BACKUP_SCRIPT_NAME
3249
-      echo 'if [ ! -d $USB_MOUNT/backup/mariadb ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3250
-      echo '  mkdir -p $USB_MOUNT/backup/mariadb' >> /usr/bin/$BACKUP_SCRIPT_NAME
3251
-      echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3252
-      echo 'if [ ! -d /root/tempmariadb ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3253
-      echo '    mkdir /root/tempmariadb' >> /usr/bin/$BACKUP_SCRIPT_NAME
3254
-      echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3255
-      echo 'mysqldump --password=$DATABASE_PASSWORD mysql user > /root/tempmariadb/mysql.sql' >> /usr/bin/$BACKUP_SCRIPT_NAME
3256
-      echo "if [ ! -s /root/tempmariadb/mysql.sql ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
3257
-      echo '  echo "Unable to backup mysql settings"' >> /usr/bin/$BACKUP_SCRIPT_NAME
3258
-      echo '  rm -rf /root/tempmariadb' >> /usr/bin/$BACKUP_SCRIPT_NAME
3259
-      echo '  umount $USB_MOUNT' >> /usr/bin/$BACKUP_SCRIPT_NAME
3260
-      echo '  rm -rf $USB_MOUNT' >> /usr/bin/$BACKUP_SCRIPT_NAME
3261
-      echo '  exit 653' >> /usr/bin/$BACKUP_SCRIPT_NAME
3262
-      echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3263
-      echo 'echo "$DATABASE_PASSWORD" > /root/tempmariadb/db' >> /usr/bin/$BACKUP_SCRIPT_NAME
3264
-      echo 'chmod 400 /root/tempmariadb/db' >> /usr/bin/$BACKUP_SCRIPT_NAME
3265
-      echo 'backup_directory_to_usb /root/tempmariadb mariadb' >> /usr/bin/$BACKUP_SCRIPT_NAME
3266
-      echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
3267
-  fi
3268
-
3269
-  echo '# Backup Tox node settings' >> /usr/bin/$BACKUP_SCRIPT_NAME
3270
-  echo "if [ -d /var/lib/tox-bootstrapd ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
3271
-  echo '  echo "Backing up Tox node settings"' >> /usr/bin/$BACKUP_SCRIPT_NAME
3272
-  echo '  if [ ! -d $USB_MOUNT/backup/tox ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3273
-  echo '    mkdir -p $USB_MOUNT/backup/tox' >> /usr/bin/$BACKUP_SCRIPT_NAME
3274
-  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3275
-  echo '  cp /etc/tox-bootstrapd.conf /var/lib/tox-bootstrapd' >> /usr/bin/$BACKUP_SCRIPT_NAME
3276
-  echo '  if [ -d /var/lib/tox-bootstrapd/Maildir ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3277
-  echo '    rm -rf /var/lib/tox-bootstrapd/Maildir' >> /usr/bin/$BACKUP_SCRIPT_NAME
3278
-  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3279
-  echo '  backup_directory_to_usb /var/lib/tox-bootstrapd tox' >> /usr/bin/$BACKUP_SCRIPT_NAME
3280
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3281
-  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
3282
-
3283
-  echo 'sync' >> /usr/bin/$BACKUP_SCRIPT_NAME
3284
-  echo 'umount $USB_MOUNT' >> /usr/bin/$BACKUP_SCRIPT_NAME
3285
-  echo 'if [ ! "$?" = "0" ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3286
-  echo '  echo "Unable to unmount the drive. This means that the backup did not work"' >> /usr/bin/$BACKUP_SCRIPT_NAME
3287
-  echo '  rm -rf $USB_MOUNT' >> /usr/bin/$BACKUP_SCRIPT_NAME
3288
-  echo '  exit 46994' >> /usr/bin/$BACKUP_SCRIPT_NAME
3289
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3290
-  echo 'rm -rf $USB_MOUNT' >> /usr/bin/$BACKUP_SCRIPT_NAME
3291
-
3292
-  echo 'if [[ $USB_DRIVE == /dev/mapper/encrypted_usb ]]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3293
-  echo '  echo "Unmount encrypted USB"' >> /usr/bin/$BACKUP_SCRIPT_NAME
3294
-  echo '  cryptsetup luksClose encrypted_usb' >> /usr/bin/$BACKUP_SCRIPT_NAME
3295
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3296
-  echo 'if [ -f /dev/mapper/encrypted_usb ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
3297
-  echo '  rm -rf /dev/mapper/encrypted_usb' >> /usr/bin/$BACKUP_SCRIPT_NAME
3298
-  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
3299
-
3300
-  echo 'echo "Backup to USB drive is complete. You can now unplug it."' >> /usr/bin/$BACKUP_SCRIPT_NAME
3301
-  echo 'exit 0' >> /usr/bin/$BACKUP_SCRIPT_NAME
3302
-  chmod 400 /usr/bin/$BACKUP_SCRIPT_NAME
3303
-  chmod +x /usr/bin/$BACKUP_SCRIPT_NAME
3304
-
3305
-  echo 'create_backup_script' >> $COMPLETION_FILE
3306
-}
3307
-
3308 2811
 function restore_directory_from_usb {
3309 2812
   script_name=$1
3310 2813
   echo 'function restore_directory_from_usb {' >> $script_name
@@ -6208,6 +5711,7 @@ function initial_setup {
6208 5711
   apt-get -y remove --purge apache*
6209 5712
   apt-get -y dist-upgrade
6210 5713
   apt-get -y install ca-certificates emacs24 cpulimit
5714
+  apt-get -y install rsyncrypto cryptsetup libgfshare-bin obnam
6211 5715
 
6212 5716
   echo 'initial_setup' >> $COMPLETION_FILE
6213 5717
 }
@@ -8484,7 +7988,6 @@ function import_email {
8484 7988
 '
8485 7989
   if grep -Fxq "import_email" $COMPLETION_FILE; then
8486 7990
       if [[ $SYSTEM_TYPE == "$VARIANT_MAILBOX" ]]; then
8487
-          create_backup_script
8488 7991
           create_restore_script
8489 7992
           backup_to_friends_servers
8490 7993
           intrusion_detection
@@ -8513,7 +8016,6 @@ function import_email {
8513 8016
   fi
8514 8017
   echo 'import_email' >> $COMPLETION_FILE
8515 8018
   if [[ $SYSTEM_TYPE == "$VARIANT_MAILBOX" ]]; then
8516
-      create_backup_script
8517 8019
       create_restore_script
8518 8020
       backup_to_friends_servers
8519 8021
       intrusion_detection
@@ -8943,7 +8445,6 @@ function install_owncloud {
8943 8445
   if grep -Fxq "install_owncloud" $COMPLETION_FILE; then
8944 8446
       if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" ]]; then
8945 8447
           install_owncloud_music_app
8946
-          create_backup_script
8947 8448
           create_restore_script
8948 8449
           backup_to_friends_servers
8949 8450
           intrusion_detection
@@ -9179,7 +8680,6 @@ quit" > $INSTALL_DIR/batch.sql
9179 8680
 
9180 8681
   if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" ]]; then
9181 8682
       install_owncloud_music_app
9182
-      create_backup_script
9183 8683
       create_restore_script
9184 8684
       backup_to_friends_servers
9185 8685
       intrusion_detection
@@ -10781,6 +10281,7 @@ quit" > $INSTALL_DIR/batch.sql
10781 10281
       chmod 600 /home/$MY_USERNAME/README
10782 10282
   fi
10783 10283
 
10284
+  echo "GNU Social domain:$MICROBLOG_DOMAIN_NAME" >> $COMPLETION_FILE
10784 10285
   echo 'install_gnu_social' >> $COMPLETION_FILE
10785 10286
 }
10786 10287
 
@@ -12139,7 +11640,6 @@ configure_firewall_for_dlna
12139 11640
 install_mediagoblin
12140 11641
 #install_ipfs
12141 11642
 repair_databases_script
12142
-create_backup_script
12143 11643
 create_restore_script
12144 11644
 create_restore_hubzilla_script
12145 11645
 backup_to_friends_servers

+ 481
- 0
src/freedombone-backup-local Wyświetl plik

@@ -0,0 +1,481 @@
1
+#!/bin/bash
2
+#
3
+# .---.                  .              .
4
+# |                      |              |
5
+# |--- .--. .-.  .-.  .-.|  .-. .--.--. |.-.  .-. .--.  .-.
6
+# |    |   (.-' (.-' (   | (   )|  |  | |   )(   )|  | (.-'
7
+# '    '     --'  --'  -' -  -' '  '   -' -'   -' '   -  --'
8
+#
9
+#                    Freedom in the Cloud
10
+#
11
+# Backup to local storage - typically a USB drive
12
+
13
+# License
14
+# =======
15
+#
16
+# Copyright (C) 2015 Bob Mottram <bob@robotics.uk.to>
17
+#
18
+# This program is free software: you can redistribute it and/or modify
19
+# it under the terms of the GNU General Public License as published by
20
+# the Free Software Foundation, either version 3 of the License, or
21
+# (at your option) any later version.
22
+#
23
+# This program is distributed in the hope that it will be useful,
24
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
25
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26
+# GNU General Public License for more details.
27
+#
28
+# You should have received a copy of the GNU General Public License
29
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
30
+
31
+PROJECT_NAME='freedombone'
32
+COMPLETION_FILE=$HOME/freedombone-completed.txt
33
+
34
+export TEXTDOMAIN=${PROJECT_NAME}-backup-local
35
+export TEXTDOMAINDIR="/usr/share/locale"
36
+
37
+USB_DRIVE=/dev/sdb1
38
+if [ $1 ]; then
39
+    USB_DRIVE=/dev/${1}1
40
+fi
41
+USB_MOUNT=/mnt/usb
42
+
43
+# get the admin user
44
+ADMIN_USERNAME=$(cat $COMPLETION_FILE | grep "Admin user" | awk -F ':' '{print $2}')
45
+if [ $2 ]; then
46
+    ADMIN_USERNAME=$2
47
+fi
48
+ADMIN_NAME=$(getent passwd $ADMIN_USERNAME | cut -d: -f5 | cut -d, -f1)
49
+
50
+# check that the backup destination is available
51
+if [ ! -b $USB_DRIVE ]; then
52
+    echo $"Please attach a USB drive"
53
+    exit 1
54
+fi
55
+
56
+# unmount if already mounted
57
+umount -f $USB_MOUNT
58
+if [ ! -d $USB_MOUNT ]; then
59
+    mkdir $USB_MOUNT
60
+fi
61
+if [ -f /dev/mapper/encrypted_usb ]; then
62
+    rm -rf /dev/mapper/encrypted_usb
63
+fi
64
+cryptsetup luksClose encrypted_usb
65
+
66
+# mount the encrypted backup drive
67
+cryptsetup luksOpen $USB_DRIVE encrypted_usb
68
+if [ "$?" = "0" ]; then
69
+    USB_DRIVE=/dev/mapper/encrypted_usb
70
+fi
71
+mount $USB_DRIVE $USB_MOUNT
72
+if [ ! "$?" = "0" ]; then
73
+    echo $"There was a problem mounting the USB drive to $USB_MOUNT"
74
+    rm -rf $USB_MOUNT
75
+    exit 2
76
+fi
77
+
78
+# make a backup directory on the drive
79
+if [ ! -d $USB_MOUNT/backup ]; then
80
+    mkdir $USB_MOUNT/backup
81
+fi
82
+if [ ! -d $USB_MOUNT/backup ]; then
83
+    echo $"There was a problem making the directory $USB_MOUNT/backup."
84
+    umount $USB_MOUNT
85
+    rm -rf $USB_MOUNT
86
+    exit 3
87
+fi
88
+
89
+# Check space remaining on the usb drive
90
+used_percent=$(df -k $USB_MOUNT | tail -n 1 | awk -F ' ' '{print $5}' | awk -F '%' '{print $1}')
91
+if [ $used_percent -gt 95 ]; then
92
+    echo $"Less than 5% of space remaining on backup drive"
93
+    umount $USB_MOUNT
94
+    rm -rf $USB_MOUNT
95
+    exit 4
96
+fi
97
+
98
+# MariaDB password
99
+DATABASE_PASSWORD=''
100
+if [ -f /root/dbpass ]; then
101
+    DATABASE_PASSWORD=$(cat /root/dbpass)
102
+fi
103
+
104
+function backup_database {
105
+    if [ ${#DATABASE_PASSWORD} -lt 2 ]; then
106
+        echo $"No MariaDB password was given"
107
+        exit 10
108
+    fi
109
+    if [ ! -d $USB_MOUNT/backup/${1} ]; then
110
+        mkdir -p $USB_MOUNT/backup/${1}
111
+    fi
112
+    if [ ! -d $USB_MOUNT/backup/${1}data ]; then
113
+        mkdir -p $USB_MOUNT/backup/${1}data
114
+    fi
115
+    if [ ! -d /root/temp${1}data ]; then
116
+        mkdir -p /root/temp${1}data
117
+    fi
118
+    echo $"Obtaining ${1} database backup"
119
+    mysqldump --password="$DATABASE_PASSWORD" ${1} > /root/temp${1}data/${1}.sql
120
+    if [ ! -s /root/temp${1}data/${1}.sql ]; then
121
+        echo $"${1} database could not be saved"
122
+        shred -zu /root/temp${1}data/*
123
+        rm -rf /root/temp${1}data
124
+        umount $USB_MOUNT
125
+        rm -rf $USB_MOUNT
126
+        exit 5
127
+    fi
128
+}
129
+
130
+function backup_directory_to_usb {
131
+    if [ ! -d ${1} ]; then
132
+        echo $"WARNING: directory does not exist: ${1}"
133
+    else
134
+        BACKUP_KEY_EXISTS=$(gpg --list-keys "$ADMIN_NAME (backup key)")
135
+        if [ ! "$?" = "0" ]; then
136
+            echo $"Backup key could not be found"
137
+            exit 6
138
+        fi
139
+        MY_BACKUP_KEY_ID=$(gpg --list-keys "$ADMIN_NAME (backup key)" | grep 'pub ' | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}')
140
+        obnam force-lock -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID ${1}
141
+        obnam backup -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID ${1}
142
+        obnam forget --keep=30d -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID
143
+        if [ ! "$?" = "0" ]; then
144
+            umount $USB_MOUNT
145
+            rm -rf $USB_MOUNT
146
+            if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
147
+                shred -zu ${1}/*
148
+                rm -rf ${1}
149
+            fi
150
+            exit 7
151
+        fi
152
+        if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
153
+            shred -zu ${1}/*
154
+            rm -rf ${1}
155
+        fi
156
+    fi
157
+}
158
+
159
+# Backup user files
160
+for d in /home/*/ ; do
161
+    USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
162
+    if [[ $USERNAME != "git" ]]; then
163
+
164
+        # Backup any gpg keys
165
+        if [ -d /home/$USERNAME/.gnupg ]; then
166
+            echo $"Backing up gpg keys for $USERNAME"
167
+            if [ ! -d $USB_MOUNT/backup/gnupg/$USERNAME ]; then
168
+                mkdir -p $USB_MOUNT/backup/gnupg/$USERNAME
169
+            fi
170
+            backup_directory_to_usb /home/$USERNAME/.gnupg gnupg/$USERNAME
171
+        fi
172
+
173
+        # Backup any personal settings
174
+        if [ -d /home/$USERNAME/personal ]; then
175
+            echo $"Backing up personal settings for $USERNAME"
176
+            if [ ! -d $USB_MOUNT/backup/personal/$USERNAME ]; then
177
+                mkdir -p $USB_MOUNT/backup/personal/$USERNAME
178
+            fi
179
+            backup_directory_to_usb /home/$USERNAME/personal personal/$USERNAME
180
+        fi
181
+
182
+        # Backup ssh keys
183
+        if [ -d /home/$USERNAME/.ssh ]; then
184
+            echo $"Backing up ssh keys for $USERNAME"
185
+            if [ ! -d $USB_MOUNT/backup/ssh/$USERNAME ]; then
186
+                mkdir -p $USB_MOUNT/backup/ssh/$USERNAME
187
+            fi
188
+            backup_directory_to_usb /home/$USERNAME/.ssh ssh/$USERNAME
189
+        fi
190
+
191
+        # Backup user configs
192
+        if [ -d /home/$USERNAME/.config ]; then
193
+            echo $"Backing up config files for $USERNAME"
194
+            if [ ! -d $USB_MOUNT/backup/config/$USERNAME ]; then
195
+                mkdir -p $USB_MOUNT/backup/config/$USERNAME
196
+            fi
197
+            backup_directory_to_usb /home/$USERNAME/.config config/$USERNAME
198
+        fi
199
+
200
+        # Backup mutt
201
+        if [ -f /home/$USERNAME/.muttrc ]; then
202
+            echo $"Backing up Mutt settings for $USERNAME"
203
+            if [ ! -d /home/$USERNAME/tempbackup ]; then
204
+                mkdir -p /home/$USERNAME/tempbackup
205
+            fi
206
+            cp /home/$USERNAME/.muttrc /home/$USERNAME/tempbackup
207
+            if [ -f /etc/Muttrc ]; then
208
+                cp /etc/Muttrc /home/$USERNAME/tempbackup
209
+            fi
210
+            if [ ! -d $USB_MOUNT/backup/mutt/$USERNAME ]; then
211
+                mkdir -p $USB_MOUNT/backup/mutt/$USERNAME
212
+            fi
213
+            backup_directory_to_usb /home/$USERNAME/tempbackup mutt/$USERNAME
214
+        fi
215
+
216
+        # Backup email
217
+        if [ -d /home/$USERNAME/Maildir ]; then
218
+            echo $"Creating an email archive for $USERNAME"
219
+            if [ ! -d /root/tempbackupemail/$USERNAME ]; then
220
+                mkdir -p /root/tempbackupemail/$USERNAME
221
+            fi
222
+            tar -czvf /root/tempbackupemail/$USERNAME/maildir.tar.gz /home/$USERNAME/Maildir
223
+            echo $"Backing up emails for $USERNAME"
224
+            if [ ! -d $USB_MOUNT/backup/mail/$USERNAME ]; then
225
+                mkdir -p $USB_MOUNT/backup/mail/$USERNAME
226
+            fi
227
+            backup_directory_to_usb /root/tempbackupemail/$USERNAME mail/$USERNAME
228
+        fi
229
+
230
+        # Backup spamassassin
231
+        if [ -d /home/$USERNAME/.spamassassin ]; then
232
+            echo $"Backing up spamassassin settings for $USERNAME"
233
+            if [ ! -d $USB_MOUNT/backup/spamassassin/$USERNAME ]; then
234
+                mkdir -p $USB_MOUNT/backup/spamassassin/$USERNAME
235
+            fi
236
+            backup_directory_to_usb /home/$USERNAME/.spamassassin spamassassin/$USERNAME
237
+        fi
238
+
239
+        # Backup procmail
240
+        if [ -f /home/$USERNAME/.procmailrc ]; then
241
+            echo $"Backing up procmail settings for $USERNAME"
242
+            if [ ! -d /home/$USERNAME/tempbackup ]; then
243
+                mkdir -p /home/$USERNAME/tempbackup
244
+            fi
245
+            cp /home/$USERNAME/.procmailrc /home/$USERNAME/tempbackup
246
+            if [ ! -d $USB_MOUNT/backup/procmail/$USERNAME ]; then
247
+                mkdir -p $USB_MOUNT/backup/procmail/$USERNAME
248
+            fi
249
+            backup_directory_to_usb /home/$USERNAME/tempbackup procmail/$USERNAME
250
+        fi
251
+
252
+    fi
253
+done
254
+
255
+# Backup Let's Encrypt
256
+if [ -d /etc/letsencrypt ]; then
257
+    echo $"Backing up Lets Encrypt settings"
258
+    backup_directory_to_usb /etc/letsencrypt letsencrypt
259
+fi
260
+
261
+# backup gnusocial
262
+if grep -q "GNU Social domain" $COMPLETION_FILE; then
263
+    MICROBLOG_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "GNU Social domain" | awk -F ':' '{print $2}')
264
+    if [ -d /var/www/${MICROBLOG_DOMAIN_NAME} ]; then
265
+        backup_database gnusocial
266
+        backup_directory_to_usb /root/tempgnusocialdata gnusocialdata
267
+        echo $"Backing up GNU social installation"
268
+        backup_directory_to_usb /var/www/${MICROBLOG_DOMAIN_NAME}/htdocs gnusocial
269
+    else
270
+        echo $"GNU Social domain specified but not found in /var/www/${MICROBLOG_DOMAIN_NAME}"
271
+        exit 6327
272
+    fi
273
+fi
274
+
275
+# backup hubzilla
276
+if grep -q "Hubzilla domain" $COMPLETION_FILE; then
277
+    HUBZILLA_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Hubzilla domain" | awk -F ':' '{print $2}')
278
+    if [ -d /var/www/${HUBZILLA_DOMAIN_NAME} ]; then
279
+        backup_database hubzilla
280
+        backup_directory_to_usb /root/temphubzilladata hubzilladata
281
+        echo $"Backing up Hubzilla installation"
282
+        backup_directory_to_usb /var/www/${HUBZILLA_DOMAIN_NAME}/htdocs hubzilla
283
+    else
284
+        echo $"Hubzilla domain specified but not found in /var/www/${HUBZILLA_DOMAIN_NAME}"
285
+        exit 2578
286
+    fi
287
+fi
288
+
289
+# backup owncloud
290
+if [ -d /etc/owncloud ]; then
291
+    if [ ! -d $USB_MOUNT/backup/owncloud2 ]; then
292
+        mkdir -p $USB_MOUNT/backup/owncloud2
293
+    fi
294
+    backup_database owncloud
295
+    backup_directory_to_usb /root/tempownclouddata ownclouddata
296
+    echo $"Obtaining Owncloud data backup"
297
+    backup_directory_to_usb /var/lib/owncloud owncloud
298
+    backup_directory_to_usb /etc/owncloud owncloud2
299
+fi
300
+
301
+# backup gogs
302
+if [ -d /home/git/go/src/github.com/gogits ]; then
303
+    if [ ! -d $USB_MOUNT/backup/gogsrepos ]; then
304
+        mkdir -p $USB_MOUNT/backup/gogsrepos
305
+    fi
306
+    if [ ! -d $USB_MOUNT/backup/gogsssh ]; then
307
+        mkdir -p $USB_MOUNT/backup/gogsssh
308
+    fi
309
+    backup_database gogs
310
+    backup_directory_to_usb /root/tempgogsdata gogsdata
311
+    echo $"Obtaining Gogs settings backup"
312
+    backup_directory_to_usb /home/git/go/src/github.com/gogits/gogs/custom gogs
313
+    echo $"Obtaining Gogs repos backup"
314
+    mv /home/git/gogs-repositories/*.git /home/git/gogs-repositories/$ADMIN_USERNAME
315
+    backup_directory_to_usb /home/git/gogs-repositories gogsrepos
316
+    echo $"Obtaining Gogs authorized_keys backup"
317
+    backup_directory_to_usb /home/git/.ssh gogsssh
318
+fi
319
+
320
+# Backup wiki
321
+if [ -d /etc/dokuwiki ]; then
322
+    if [ ! -d $USB_MOUNT/backup/wiki ]; then
323
+        mkdir -p $USB_MOUNT/backup/wiki
324
+    fi
325
+    if [ ! -d $USB_MOUNT/backup/wiki2 ]; then
326
+        mkdir -p $USB_MOUNT/backup/wiki2
327
+    fi
328
+    echo $"Obtaining wiki data backup"
329
+    backup_directory_to_usb /var/lib/dokuwiki wiki
330
+    backup_directory_to_usb /etc/dokuwiki wiki2
331
+fi
332
+
333
+# Backup blog
334
+if grep -q "Blog domain" $COMPLETION_FILE; then
335
+    FULLBLOG_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Blog domain" | awk -F ':' '{print $2}')
336
+    if [ -d /var/www/${FULLBLOG_DOMAIN_NAME} ]; then
337
+        if [ ! -d $USB_MOUNT/backup/blog ]; then
338
+            mkdir -p $USB_MOUNT/backup/blog
339
+        fi
340
+        echo $"Obtaining blog backup"
341
+        backup_directory_to_usb /var/www/${FULLBLOG_DOMAIN_NAME}/htdocs blog
342
+    else
343
+        echo $"Blog domain specified but not found in /var/www/${FULLBLOG_DOMAIN_NAME}"
344
+        exit 2578
345
+    fi
346
+    fi
347
+fi
348
+
349
+# Backup certificates
350
+if [ -d /etc/ssl ]; then
351
+    echo $"Backing up certificates"
352
+    if [ ! -d $USB_MOUNT/backup/ssl ]; then
353
+        mkdir -p $USB_MOUNT/backup/ssl
354
+    fi
355
+    backup_directory_to_usb /etc/ssl ssl
356
+fi
357
+
358
+# Backup the public mailing list
359
+if [ -d /var/spool/mlmmj ]; then
360
+    echo $"Backing up the public mailing list"
361
+    if [ ! -d $USB_MOUNT/backup/mailinglist ]; then
362
+        mkdir -p $USB_MOUNT/backup/mailinglist
363
+    fi
364
+    backup_directory_to_usb /var/spool/mlmmj mailinglist
365
+fi
366
+
367
+# Backup xmpp settings
368
+if [ -d /var/lib/prosody ]; then
369
+    echo $"Backing up the XMPP settings"
370
+    if [ ! -d $USB_MOUNT/backup/xmpp ]; then
371
+        mkdir -p $USB_MOUNT/backup/xmpp
372
+    fi
373
+    backup_directory_to_usb /var/lib/prosody xmpp
374
+fi
375
+
376
+# Backup web sites
377
+if [ -d /etc/nginx ]; then
378
+    echo $"Backing up web settings"
379
+    if [ ! -d $USB_MOUNT/backup/web ]; then
380
+        mkdir -p $USB_MOUNT/backup/web
381
+    fi
382
+    backup_directory_to_usb /etc/nginx/sites-available web
383
+fi
384
+
385
+# Backup admin user README file
386
+if [ -f /home/$ADMIN_USERNAME/README ]; then
387
+    echo $"Backing up README"
388
+    if [ ! -d $USB_MOUNT/backup/readme ]; then
389
+        mkdir -p $USB_MOUNT/backup/readme
390
+    fi
391
+    if [ ! -d /home/$ADMIN_USERNAME/tempbackup ]; then
392
+        mkdir -p /home/$ADMIN_USERNAME/tempbackup
393
+    fi
394
+    cp -f /home/$ADMIN_USERNAME/README /home/$ADMIN_USERNAME/tempbackup
395
+    backup_directory_to_usb /home/$ADMIN_USERNAME/tempbackup readme
396
+fi
397
+
398
+# Backup IPFS
399
+if [ -d /home/$ADMIN_USERNAME/.ipfs ]; then
400
+    echo $"Backing up IPFS"
401
+    if [ ! -d $USB_MOUNT/backup/ipfs ]; then
402
+        mkdir -p $USB_MOUNT/backup/ipfs
403
+    fi
404
+    backup_directory_to_usb /home/$ADMIN_USERNAME/.ipfs ipfs
405
+fi
406
+
407
+# Backup DLNA cache
408
+if [ -d /var/cache/minidlna ]; then
409
+    echo $"Backing up DLNA cache"
410
+    if [ ! -d $USB_MOUNT/backup/dlna ]; then
411
+        mkdir -p $USB_MOUNT/backup/dlna
412
+    fi
413
+    backup_directory_to_usb /var/cache/minidlna dlna
414
+fi
415
+
416
+# Backup VoIP settings
417
+if [ -f /etc/mumble-server.ini ]; then
418
+    echo $"Backing up VoIP settings"
419
+    if [ ! -d /root/tempvoipbackup ]; then
420
+        mkdir -p /root/tempvoipbackup
421
+    fi
422
+    cp -f /etc/mumble-server.ini /root/tempvoipbackup
423
+    cp -f /var/lib/mumble-server/mumble-server.sqlite /root/tempvoipbackup
424
+    cp -f /etc/sipwitch.conf /root/tempvoipbackup
425
+    if [ ! -d $USB_MOUNT/backup/voip ]; then
426
+        mkdir -p $USB_MOUNT/backup/voip
427
+    fi
428
+    backup_directory_to_usb /root/tempvoipbackup voip
429
+fi
430
+
431
+# MariaDB settings
432
+if [ ${#DATABASE_PASSWORD} -gt 1 ]; then
433
+    if [ ! -d $USB_MOUNT/backup/mariadb ]; then
434
+        mkdir -p $USB_MOUNT/backup/mariadb
435
+    fi
436
+    if [ ! -d /root/tempmariadb ]; then
437
+        mkdir /root/tempmariadb
438
+    fi
439
+    mysqldump --password="$DATABASE_PASSWORD" mysql user > /root/tempmariadb/mysql.sql
440
+    if [ ! -s /root/tempmariadb/mysql.sql ]; then
441
+        echo $"Unable to backup mysql settings"
442
+        rm -rf /root/tempmariadb
443
+        umount $USB_MOUNT
444
+        rm -rf $USB_MOUNT
445
+        exit 8
446
+    fi
447
+    echo "$DATABASE_PASSWORD" > /root/tempmariadb/db
448
+    chmod 400 /root/tempmariadb/db
449
+    backup_directory_to_usb /root/tempmariadb mariadb
450
+fi
451
+
452
+# Backup Tox node settings
453
+if [ -d /var/lib/tox-bootstrapd ]; then
454
+    echo $"Backing up Tox node settings"
455
+    if [ ! -d $USB_MOUNT/backup/tox ]; then
456
+        mkdir -p $USB_MOUNT/backup/tox
457
+    fi
458
+    cp /etc/tox-bootstrapd.conf /var/lib/tox-bootstrapd
459
+    if [ -d /var/lib/tox-bootstrapd/Maildir ]; then
460
+        rm -rf /var/lib/tox-bootstrapd/Maildir
461
+    fi
462
+    backup_directory_to_usb /var/lib/tox-bootstrapd tox
463
+fi
464
+
465
+sync
466
+umount $USB_MOUNT
467
+if [ ! "$?" = "0" ]; then
468
+    echo $"Unable to unmount the drive. This means that the backup did not work"
469
+    rm -rf $USB_MOUNT
470
+    exit 9
471
+fi
472
+rm -rf $USB_MOUNT
473
+if [[ $USB_DRIVE == /dev/mapper/encrypted_usb ]]; then
474
+    echo $"Unmount encrypted USB"
475
+    cryptsetup luksClose encrypted_usb
476
+fi
477
+if [ -f /dev/mapper/encrypted_usb ]; then
478
+    rm -rf /dev/mapper/encrypted_usb
479
+fi
480
+echo $"Backup to USB drive is complete. You can now unplug it."
481
+exit 0