ソースを参照

More backing up

Bob Mottram 10 年 前
コミット
0ef773f767
共有1 個のファイルを変更した114 個の追加61 個の削除を含む
  1. 114
    61
      install-freedombone.sh

+ 114
- 61
install-freedombone.sh ファイルの表示

@@ -115,6 +115,7 @@ MICROBLOG_DOMAIN_NAME=
115 115
 MICROBLOG_FREEDNS_SUBDOMAIN_CODE=
116 116
 MICROBLOG_REPO="git://gitorious.org/social/mainline.git"
117 117
 MICROBLOG_ADMIN_PASSWORD=
118
+MICROBLOG_INSTALLED="no"
118 119
 
119 120
 # Domain name or redmatrix installation
120 121
 REDMATRIX_DOMAIN_NAME=
@@ -122,6 +123,7 @@ REDMATRIX_FREEDNS_SUBDOMAIN_CODE=
122 123
 REDMATRIX_REPO="https://github.com/friendica/red.git"
123 124
 REDMATRIX_ADDONS_REPO="https://github.com/friendica/red-addons.git"
124 125
 REDMATRIX_ADMIN_PASSWORD=
126
+REDMATRIX_INSTALLED="no"
125 127
 
126 128
 # Domain name or freedns subdomain for Owncloud installation
127 129
 OWNCLOUD_DOMAIN_NAME=
@@ -130,6 +132,7 @@ OWNCLOUD_FREEDNS_SUBDOMAIN_CODE=
130 132
 OWNCLOUD_ARCHIVE="owncloud-7.0.2.tar.bz2"
131 133
 OWNCLOUD_DOWNLOAD="https://download.owncloud.org/community/$OWNCLOUD_ARCHIVE"
132 134
 OWNCLOUD_HASH="ea07124a1b9632aa5227240d655e4d84967fb6dd49e4a16d3207d6179d031a3a"
135
+OWNCLOUD_INSTALLED="no"
133 136
 
134 137
 # Domain name or freedns subdomain for your wiki
135 138
 WIKI_FREEDNS_SUBDOMAIN_CODE=
@@ -137,6 +140,7 @@ WIKI_DOMAIN_NAME=
137 140
 WIKI_ARCHIVE="dokuwiki-stable.tgz"
138 141
 WIKI_DOWNLOAD="http://download.dokuwiki.org/src/dokuwiki/$WIKI_ARCHIVE"
139 142
 WIKI_HASH="a0e79986b87b2744421ce3c33b43a21f296deadd81b1789c25fa4bb095e8e470"
143
+WIKI_INSTALLED="no"
140 144
 
141 145
 # see https://www.dokuwiki.org/template:mnml-blog
142 146
 # https://andreashaerter.com/tmp/downloads/dokuwiki-template-mnml-blog/CHECKSUMS.asc
@@ -297,6 +301,105 @@ function check_hwrng {
297 301
   fi
298 302
 }
299 303
 
304
+function backup_to_friends_servers {
305
+  if grep -Fxq "backup_to_friends_servers" $COMPLETION_FILE; then
306
+      return
307
+  fi
308
+  if [ ! $FRIENDS_SERVERS_LIST ]; then
309
+      return
310
+  fi
311
+
312
+  apt-get -y --force-yes install duplicity
313
+
314
+  # script to do backups
315
+  echo '#!/bin/bash' > /usr/bin/backup2friends
316
+  echo 'GPG_KEY=$1' >> /usr/bin/backup2friends
317
+  echo '' >> /usr/bin/backup2friends
318
+  echo "if [ ! -f $FRIENDS_SERVERS_LIST ]; then" >> /usr/bin/backup2friends
319
+  echo '    exit 1' >> /usr/bin/backup2friends
320
+  echo 'fi' >> /usr/bin/backup2friends
321
+  echo '' >> /usr/bin/backup2friends
322
+  echo 'if [ ! $GPG_KEY ]; then' >> /usr/bin/backup2friends
323
+  echo "    echo 'Unable to perform automated backup. You need to add a GPG key to /etc/cron.daily/backuptofriends' | mail -s 'Backup failure' $MY_USERNAME@$DOMAIN_NAME" >> /usr/bin/backup2friends
324
+  echo '    exit 2' >> /usr/bin/backup2friends
325
+  echo 'fi' >> /usr/bin/backup2friends
326
+  echo '' >> /usr/bin/backup2friends
327
+
328
+  echo '# Put some files into a temporary directory so that they can be easily backed up' >> /usr/bin/backup2friends
329
+  echo "if [ ! -d /home/$MY_USERNAME/tempfiles ]; then" >> /usr/bin/backup2friends
330
+  echo "  mkdir /home/$MY_USERNAME/tempfiles" >> /usr/bin/backup2friends
331
+  echo 'fi' >> /usr/bin/backup2friends
332
+  if [[ $MICROBLOG_INSTALLED == "yes" ]]; then
333
+      echo "mysqldump --password=$MARIADB_PASSWORD gnusocial > /home/$MY_USERNAME/tempfiles/gnusocial.sql" >> /usr/bin/backup2friends
334
+  fi
335
+  if [[ $REDMATRIX_INSTALLED == "yes" ]]; then
336
+      echo "mysqldump --password=$MARIADB_PASSWORD redmatrix > /home/$MY_USERNAME/tempfiles/redmatrix.sql" >> /usr/bin/backup2friends
337
+  fi
338
+  if [[ $OWNCLOUD_INSTALLED == "yes" ]]; then
339
+      echo "tar -czvf /home/$MY_USERNAME/tempfiles/owncloud.tar.gz /var/www/$OWNCLOUD_DOMAIN_NAME/htdocs/config /var/www/$OWNCLOUD_DOMAIN_NAME/htdocs/data" >> /usr/bin/backup2friends
340
+  fi
341
+  if [[ $WIKI_INSTALLED == "yes" ]]; then
342
+      echo "tar -czvf /home/$MY_USERNAME/tempfiles/wiki.tar.gz /var/www/$WIKI_DOMAIN_NAME/htdocs" >> /usr/bin/backup2friends
343
+  fi
344
+  echo 'tar -czvf /home/$MY_USERNAME/tempfiles/temp.tar.gz /home/$MY_USERNAME/.gnupg /home/$MY_USERNAME/.muttrc /home/$MY_USERNAME/.procmailrc /home/$MY_USERNAME/.ssh /home/$MY_USERNAME/personal' >> /usr/bin/backup2friends
345
+
346
+  echo '' >> /usr/bin/backup2friends
347
+  echo 'while read remote_server' >> /usr/bin/backup2friends
348
+  echo 'do' >> /usr/bin/backup2friends
349
+  echo '  # Get the server and its password' >> /usr/bin/backup2friends
350
+  echo '  SERVER="${* %%remote_server}"' >> /usr/bin/backup2friends
351
+  echo '  FTP_PASSWORD="${remote_server%% *}"' >> /usr/bin/backup2friends
352
+  echo '' >> /usr/bin/backup2friends
353
+  echo '  # Backup the public mailing list' >> /usr/bin/backup2friends
354
+  echo "  if [ -d $PUBLIC_MAILING_LIST_DIRECTORY ]; then" >> /usr/bin/backup2friends
355
+  echo "    duplicity incr --ssh-askpass --encrypt-key $GPG_KEY --full-if-older-than 4W --exclude-other-filesystems $PUBLIC_MAILING_LIST_DIRECTORY $SERVER/publicmailinglist" >> /usr/bin/backup2friends
356
+  echo '  fi' >> /usr/bin/backup2friends
357
+  echo '' >> /usr/bin/backup2friends
358
+  echo '  # Backup xmpp settings' >> /usr/bin/backup2friends
359
+  echo "  if [ -d $XMPP_DIRECTORY ]; then" >> /usr/bin/backup2friends
360
+  echo "    duplicity incr --ssh-askpass --encrypt-key $GPG_KEY --full-if-older-than 4W --exclude-other-filesystems $XMPP_DIRECTORY $SERVER/xmpp" >> /usr/bin/backup2friends
361
+  echo '  fi' >> /usr/bin/backup2friends
362
+  echo '' >> /usr/bin/backup2friends
363
+  echo '  # Backup web content and other stuff' >> /usr/bin/backup2friends
364
+  echo "  if [ -d /home/$MY_USERNAME/tempfiles ]; then" >> /usr/bin/backup2friends
365
+  echo "    duplicity incr --ssh-askpass --encrypt-key $GPG_KEY --full-if-older-than 4W --exclude-other-filesystems /home/$MY_USERNAME/tempfiles $SERVER/tempfiles" >> /usr/bin/backup2friends
366
+  echo '  fi' >> /usr/bin/backup2friends
367
+  echo '' >> /usr/bin/backup2friends
368
+  echo '  # Backup email' >> /usr/bin/backup2friends
369
+  echo "  if [ -d /home/$MY_USERNAME/Maildir ]; then" >> /usr/bin/backup2friends
370
+  echo "    duplicity incr --ssh-askpass --encrypt-key $GPG_KEY --full-if-older-than 4W --exclude-other-filesystems /home/$MY_USERNAME/Maildir $SERVER/Maildir" >> /usr/bin/backup2friends
371
+  echo '  fi' >> /usr/bin/backup2friends
372
+  echo '' >> /usr/bin/backup2friends
373
+  echo '  # Backup DLNA cache' >> /usr/bin/backup2friends
374
+  echo "  if [ -d /var/cache/minidlna ]; then" >> /usr/bin/backup2friends
375
+  echo "    duplicity incr --ssh-askpass --encrypt-key $GPG_KEY --full-if-older-than 4W --exclude-other-filesystems /var/cache/minidlna $SERVER/dlna" >> /usr/bin/backup2friends
376
+  echo '  fi' >> /usr/bin/backup2friends
377
+  echo '' >> /usr/bin/backup2friends
378
+
379
+  echo '  duplicity --ssh-askpass --force cleanup $SERVER' >> /usr/bin/backup2friends
380
+  echo '  duplicity --ssh-askpass --force remove-all-but-n-full 2 $SERVER' >> /usr/bin/backup2friends
381
+  echo "done < $FRIENDS_SERVERS_LIST" >> /usr/bin/backup2friends
382
+  echo '' >> /usr/bin/backup2friends
383
+  echo '# Remove temporary files' >> /usr/bin/backup2friends
384
+  echo "if [ -d /home/$MY_USERNAME/tempfiles ]; then" >> /usr/bin/backup2friends
385
+  echo "  rm -rf /home/$MY_USERNAME/tempfiles" >> /usr/bin/backup2friends
386
+  echo 'fi' >> /usr/bin/backup2friends
387
+  echo 'exit 0' >> /usr/bin/backup2friends
388
+  chmod +x /usr/bin/backup2friends
389
+
390
+  # update crontab
391
+  echo '#!/bin/bash' > /etc/cron.daily/backuptofriends
392
+  if [ $MY_GPG_PUBLIC_KEY_ID ]; then
393
+      echo "GPG_KEY=$MY_GPG_PUBLIC_KEY_ID" >> /etc/cron.daily/backuptofriends
394
+  else
395
+      echo 'GPG_KEY=' >> /etc/cron.daily/backuptofriends
396
+  fi
397
+  echo '/usr/bin/backup2friends $GPG_KEY' >> /etc/cron.daily/backuptofriends
398
+  chmod +x /etc/cron.daily/backuptofriends
399
+
400
+  echo 'backup_to_friends_servers' >> $COMPLETION_FILE
401
+}
402
+
300 403
 function remove_default_user {
301 404
   # make sure you don't use the default user account
302 405
   if [[ $MY_USERNAME == "debian" ]]; then
@@ -1918,6 +2021,7 @@ function import_email {
1918 2021
   EMAIL_COMPLETE_MSG='  *** Freedombone mailbox installation is complete ***'
1919 2022
   if grep -Fxq "import_email" $COMPLETION_FILE; then
1920 2023
       if [[ $SYSTEM_TYPE == "$VARIANT_MAILBOX" ]]; then
2024
+          backup_to_friends_servers
1921 2025
           echo ''
1922 2026
           echo "$EMAIL_COMPLETE_MSG"
1923 2027
           if [ -d $USB_MOUNT ]; then
@@ -1941,6 +2045,7 @@ function import_email {
1941 2045
   fi
1942 2046
   echo 'import_email' >> $COMPLETION_FILE
1943 2047
   if [[ $SYSTEM_TYPE == "$VARIANT_MAILBOX" ]]; then
2048
+      backup_to_friends_servers
1944 2049
       apt-get -y --force-yes autoremove
1945 2050
       # unmount any attached usb drive
1946 2051
       echo ''
@@ -2003,6 +2108,8 @@ function install_owncloud {
2003 2108
   OWNCLOUD_COMPLETION_MSG2="Open $OWNCLOUD_DOMAIN_NAME in a web browser to complete the setup"
2004 2109
   if grep -Fxq "install_owncloud" $COMPLETION_FILE; then
2005 2110
       if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" ]]; then
2111
+          backup_to_friends_servers
2112
+          apt-get -y --force-yes autoremove
2006 2113
           # unmount any attached usb drive
2007 2114
           if [ -d $USB_MOUNT ]; then
2008 2115
               umount $USB_MOUNT
@@ -2172,9 +2279,12 @@ function install_owncloud {
2172 2279
       echo 'WARNING: No freeDNS subdomain code given for Owncloud. It is assumed that you are using some other dynamic DNS provider.'
2173 2280
   fi
2174 2281
 
2282
+  OWNCLOUD_INSTALLED="yes"
2175 2283
   echo 'install_owncloud' >> $COMPLETION_FILE
2176 2284
 
2177 2285
   if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" ]]; then
2286
+      backup_to_friends_servers
2287
+      apt-get -y --force-yes autoremove
2178 2288
       # unmount any attached usb drive
2179 2289
       if [ -d $USB_MOUNT ]; then
2180 2290
           umount $USB_MOUNT
@@ -2509,6 +2619,7 @@ function install_wiki {
2509 2619
       chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
2510 2620
   fi
2511 2621
 
2622
+  WIKI_INSTALLED="yes"
2512 2623
   echo 'install_wiki' >> $COMPLETION_FILE
2513 2624
 }
2514 2625
 
@@ -2905,6 +3016,7 @@ quit" > $INSTALL_DIR/batch.sql
2905 3016
       chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
2906 3017
   fi
2907 3018
 
3019
+  MICROBLOG_INSTALLED="yes"
2908 3020
   echo 'install_gnu_social' >> $COMPLETION_FILE
2909 3021
 }
2910 3022
 
@@ -3114,6 +3226,7 @@ quit" > $INSTALL_DIR/batch.sql
3114 3226
       chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
3115 3227
   fi
3116 3228
 
3229
+  REDMATRIX_INSTALLED="yes"
3117 3230
   echo 'install_redmatrix' >> $COMPLETION_FILE
3118 3231
 }
3119 3232
 
@@ -3646,67 +3759,6 @@ IPT_NAME
3646 3759
   echo 'create_restore_script' >> $COMPLETION_FILE
3647 3760
 }
3648 3761
 
3649
-function backup_to_friends_servers {
3650
-  if grep -Fxq "backup_to_friends_servers" $COMPLETION_FILE; then
3651
-      return
3652
-  fi
3653
-  if [ ! $FRIENDS_SERVERS_LIST ]; then
3654
-      return
3655
-  fi
3656
-
3657
-  apt-get -y --force-yes install duplicity
3658
-
3659
-  # script to do backups
3660
-  echo '#!/bin/bash' > /usr/bin/backup2friends
3661
-  echo 'GPG_KEY=$1' >> /usr/bin/backup2friends
3662
-  echo '' >> /usr/bin/backup2friends
3663
-  echo "if [ ! -f $FRIENDS_SERVERS_LIST ]; then" >> /usr/bin/backup2friends
3664
-  echo '    exit 1' >> /usr/bin/backup2friends
3665
-  echo 'fi' >> /usr/bin/backup2friends
3666
-  echo '' >> /usr/bin/backup2friends
3667
-  echo 'if [ ! $GPG_KEY ]; then' >> /usr/bin/backup2friends
3668
-  echo "    echo 'Unable to perform automated backup. You need to add a GPG key to /etc/cron.daily/backuptofriends' | mail -s 'Backup failure' $MY_USERNAME@$DOMAIN_NAME" >> /usr/bin/backup2friends
3669
-  echo '    exit 2' >> /usr/bin/backup2friends
3670
-  echo 'fi' >> /usr/bin/backup2friends
3671
-  echo '' >> /usr/bin/backup2friends
3672
-  echo "if [ ! -d /home/$MY_USERNAME/backups ]; then" >> /usr/bin/backup2friends
3673
-  echo "  mkdir /home/$MY_USERNAME/backups" >> /usr/bin/backup2friends
3674
-  echo 'fi' >> /usr/bin/backup2friends
3675
-  echo '' >> /usr/bin/backup2friends
3676
-  echo '# Backup the public mailing list' >> /usr/bin/backup2friends
3677
-  echo "if [ -d $PUBLIC_MAILING_LIST_DIRECTORY ]; then" >> /usr/bin/backup2friends
3678
-  echo "  tar -czvf /home/$MY_USERNAME/backups/mailinglist.tar.gz $PUBLIC_MAILING_LIST_DIRECTORY" >> /usr/bin/backup2friends
3679
-  echo 'fi' >> /usr/bin/backup2friends
3680
-  echo '' >> /usr/bin/backup2friends
3681
-  echo '# Backup XMPP settings' >> /usr/bin/backup2friends
3682
-  echo "if [ -d $XMPP_DIRECTORY ]; then" >> /usr/bin/backup2friends
3683
-  echo "  tar -czvf /home/$MY_USERNAME/backups/xmpp.tar.gz $XMPP_DIRECTORY" >> /usr/bin/backup2friends
3684
-  echo 'fi' >> /usr/bin/backup2friends
3685
-  echo '' >> /usr/bin/backup2friends
3686
-  echo 'while read remote_server' >> /usr/bin/backup2friends
3687
-  echo 'do' >> /usr/bin/backup2friends
3688
-  echo '  SERVER="${* %%remote_server}"' >> /usr/bin/backup2friends
3689
-  echo '  FTP_PASSWORD="${remote_server%% *}"' >> /usr/bin/backup2friends
3690
-  echo "  duplicity incr --ssh-askpass --encrypt-key $GPG_KEY --full-if-older-than 4W --exclude-other-filesystems /home/$MY_USERNAME $SERVER" >> /usr/bin/backup2friends
3691
-  echo '  duplicity --ssh-askpass --force cleanup $SERVER' >> /usr/bin/backup2friends
3692
-  echo '  duplicity --ssh-askpass --force remove-all-but-n-full 2 $SERVER' >> /usr/bin/backup2friends
3693
-  echo "done < $FRIENDS_SERVERS_LIST" >> /usr/bin/backup2friends
3694
-  echo 'exit 0' >> /usr/bin/backup2friends
3695
-  chmod +x /usr/bin/backup2friends
3696
-
3697
-  # update crontab
3698
-  echo '#!/bin/bash' > /etc/cron.daily/backuptofriends
3699
-  if [ $MY_GPG_PUBLIC_KEY_ID ]; then
3700
-      echo "GPG_KEY=$MY_GPG_PUBLIC_KEY_ID" >> /etc/cron.daily/backuptofriends
3701
-  else
3702
-      echo 'GPG_KEY=' >> /etc/cron.daily/backuptofriends
3703
-  fi
3704
-  echo '/usr/bin/backup2friends $GPG_KEY' >> /etc/cron.daily/backuptofriends
3705
-  chmod +x /etc/cron.daily/backuptofriends
3706
-
3707
-  echo 'backup_to_friends_servers' >> $COMPLETION_FILE
3708
-}
3709
-
3710 3762
 function install_final {
3711 3763
   if grep -Fxq "install_final" $COMPLETION_FILE; then
3712 3764
       return
@@ -3787,5 +3839,6 @@ install_redmatrix
3787 3839
 install_dlna_server
3788 3840
 install_mediagoblin
3789 3841
 install_final
3842
+apt-get -y --force-yes autoremove
3790 3843
 echo 'Freedombone installation is complete'
3791 3844
 exit 0