Browse Source

Daily backup for red matrix

Bob Mottram 10 years ago
parent
commit
9bdee677c7
1 changed files with 52 additions and 1 deletions
  1. 52
    1
      install-freedombone.sh

+ 52
- 1
install-freedombone.sh View File

@@ -582,7 +582,9 @@ function backup_to_friends_servers {
582 582
       echo "To add friends servers create a file called $FRIENDS_SERVERS_LIST"
583 583
       echo 'and add entries like this:' >> /home/$MY_USERNAME/README
584 584
       echo '' >> /home/$MY_USERNAME/README
585
-      echo '  username@domainname//home/username password' >> /home/$MY_USERNAME/README
585
+      echo 'username1@domain1//home/username1 ssh_password1' >> /home/$MY_USERNAME/README
586
+      echo 'username2@domain2//home/username2 ssh_password2' >> /home/$MY_USERNAME/README
587
+      echo '...' >> /home/$MY_USERNAME/README
586 588
       echo '' >> /home/$MY_USERNAME/README
587 589
       echo 'The system will try to backup to these remote locations once per day.' >> /home/$MY_USERNAME/README
588 590
       chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
@@ -3221,6 +3223,25 @@ function install_mariadb {
3221 3223
   echo 'install_mariadb' >> $COMPLETION_FILE
3222 3224
 }
3223 3225
 
3226
+function backup_databases_script_header {
3227
+  if [ ! -f /usr/bin/backupdatabases ]; then
3228
+      echo '#!/bin/sh' > /usr/bin/backupdatabases
3229
+      echo '' >> /usr/bin/backupdatabases
3230
+      echo "EMAIL='$MY_USERNAME@$DOMAIN_NAME'" >> /usr/bin/backupdatabases
3231
+      echo '' >> /usr/bin/backupdatabases
3232
+      echo "MYSQL_PASSWORD='$MARIADB_PASSWORD'" >> /usr/bin/backupdatabases
3233
+      echo 'umask 0077' >> /usr/bin/backupdatabases
3234
+      echo '' >> /usr/bin/backupdatabases
3235
+      echo '# exit if we are backing up to friends servers' >> /usr/bin/backupdatabases
3236
+      echo "if [ -f $FRIENDS_SERVER_LIST ]; then" >> /usr/bin/backupdatabases
3237
+      echo '  exit 1' >> /usr/bin/backupdatabases
3238
+      echo 'fi' >> /usr/bin/backupdatabases
3239
+
3240
+      echo '#!/bin/sh' > /etc/cron.daily/backupdatabasesdaily
3241
+      echo '/usr/bin/backupdatabases' >> /etc/cron.daily/backupdatabasesdaily
3242
+  fi
3243
+}
3244
+
3224 3245
 function install_gnu_social {
3225 3246
   if grep -Fxq "install_gnu_social" $COMPLETION_FILE; then
3226 3247
       return
@@ -3629,6 +3650,36 @@ quit" > $INSTALL_DIR/batch.sql
3629 3650
   chmod 777 /var/www/$REDMATRIX_DOMAIN_NAME/htdocs/view/tpl
3630 3651
   chmod 777 /var/www/$REDMATRIX_DOMAIN_NAME/htdocs/view/tpl/smarty3
3631 3652
 
3653
+  # Ensure that the database gets backed up locally, if remote
3654
+  # backups are not being used
3655
+  backup_databases_script_header
3656
+  echo '' >> /usr/bin/backupdatabases
3657
+  echo '# Backup the Red Matrix database' >> /usr/bin/backupdatabases
3658
+  echo 'TEMPFILE=/root/redmatrix.sql' >> /usr/bin/backupdatabases
3659
+  echo 'DAILYFILE=/var/backups/redmatrix_daily.sql' >> /usr/bin/backupdatabases
3660
+  echo 'mysqldump --password=$MYSQL_PASSWORD redmatrix > $TEMPFILE' >> /usr/bin/backupdatabases
3661
+  echo 'FILESIZE=$(stat -c%s $TEMPFILE)' >> /usr/bin/backupdatabases
3662
+  echo 'if [ "$FILESIZE" -eq "0" ]; then' >> /usr/bin/backupdatabases
3663
+  echo '    if [ -f $DAILYFILE ]; then' >> /usr/bin/backupdatabases
3664
+  echo '        cp $DAILYFILE $TEMPFILE' >> /usr/bin/backupdatabases
3665
+  echo '' >> /usr/bin/backupdatabases
3666
+  echo '        # try to restore yesterdays database' >> /usr/bin/backupdatabases
3667
+  echo '        mysql -u root --password=$MYSQL_PASSWORD redmatrix -o < $DAILYFILE' >> /usr/bin/backupdatabases
3668
+  echo '' >> /usr/bin/backupdatabases
3669
+  echo '        # Send a warning email' >> /usr/bin/backupdatabases
3670
+  echo '        echo "Unable to create a backup of the Red Matrix database. Attempted to restore from yesterdays backup" | mail -s "Red Matrix backup" $EMAIL' >> /usr/bin/backupdatabases
3671
+  echo '    else' >> /usr/bin/backupdatabases
3672
+  echo '        # Send a warning email' >> /usr/bin/backupdatabases
3673
+  echo '        echo "Unable to create a backup of the Red Matrix database." | mail -s "Red Matrix backup" $EMAIL' >> /usr/bin/backupdatabases
3674
+  echo '    fi' >> /usr/bin/backupdatabases
3675
+  echo 'else' >> /usr/bin/backupdatabases
3676
+  echo '    chmod 600 $TEMPFILE' >> /usr/bin/backupdatabases
3677
+  echo '    mv $TEMPFILE $DAILYFILE' >> /usr/bin/backupdatabases
3678
+  echo '' >> /usr/bin/backupdatabases
3679
+  echo '    # Make the backup readable only by root' >> /usr/bin/backupdatabases
3680
+  echo '    chmod 600 $DAILYFILE' >> /usr/bin/backupdatabases
3681
+  echo 'fi' >> /usr/bin/backupdatabases
3682
+
3632 3683
   nginx_ensite $REDMATRIX_DOMAIN_NAME
3633 3684
   service php5-fpm restart
3634 3685
   service nginx restart