Parcourir la source

Consolidate the local daily backup to a function

Bob Mottram il y a 9 ans
Parent
révision
fb6d4c77d1
1 fichiers modifiés avec 38 ajouts et 80 suppressions
  1. 38
    80
      src/freedombone

+ 38
- 80
src/freedombone Voir le fichier

@@ -1843,6 +1843,37 @@ function check_certificates {
1843 1843
     fi
1844 1844
 }
1845 1845
 
1846
+function backup_database_local_daily {
1847
+    database_name=$1
1848
+    backup_databases_script=/usr/bin/backupdatabases
1849
+    echo '' >> $backup_databases_script
1850
+    echo $"# Backup the ${database_name} database" >> $backup_databases_script
1851
+    echo "TEMPFILE=/root/${database_name}.sql" >> $backup_databases_script
1852
+    echo 'DAILYFILE=/var/backups/${database_name}_daily.sql' >> $backup_databases_script
1853
+    echo "mysqldump --password=\"\$MYSQL_PASSWORD\" ${database_name} > \$TEMPFILE" >> $backup_databases_script
1854
+    echo 'FILESIZE=$(stat -c%s $TEMPFILE)' >> $backup_databases_script
1855
+    echo 'if [ "$FILESIZE" -eq "0" ]; then' >> $backup_databases_script
1856
+    echo '    if [ -f $DAILYFILE ]; then' >> $backup_databases_script
1857
+    echo '        cp $DAILYFILE $TEMPFILE' >> $backup_databases_script
1858
+    echo '' >> $backup_databases_script
1859
+    echo '        # try to restore yesterdays database' >> $backup_databases_script
1860
+    echo "        mysql -u root --password=\"\$MYSQL_PASSWORD\" ${database_name} -o < \$DAILYFILE" >> $backup_databases_script
1861
+    echo '' >> $backup_databases_script
1862
+    echo '        # Send a warning email' >> $backup_databases_script
1863
+    echo "        echo \"Unable to create a backup of the ${database_name} database. Attempted to restore from yesterdays backup\" | mail -s \"${database_name} backup\" \$EMAIL" >> $backup_databases_script
1864
+    echo '    else' >> $backup_databases_script
1865
+    echo '        # Send a warning email' >> $backup_databases_script
1866
+    echo "        echo \"Unable to create a backup of the ${database_name} database.\" | mail -s \"${database_name} backup\" \$EMAIL" >> $backup_databases_script
1867
+    echo '    fi' >> $backup_databases_script
1868
+    echo 'else' >> $backup_databases_script
1869
+    echo '    chmod 600 $TEMPFILE' >> $backup_databases_script
1870
+    echo '    mv $TEMPFILE $DAILYFILE' >> $backup_databases_script
1871
+    echo '' >> $backup_databases_script
1872
+    echo '    # Make the backup readable only by root' >> $backup_databases_script
1873
+    echo '    chmod 600 $DAILYFILE' >> $backup_databases_script
1874
+    echo 'fi' >> $backup_databases_script
1875
+}
1876
+
1846 1877
 function install_not_on_BBB {
1847 1878
     if grep -Fxq "install_not_on_BBB" $COMPLETION_FILE; then
1848 1879
         return
@@ -6576,32 +6607,8 @@ function install_owncloud {
6576 6607
     # Ensure that the database gets backed up locally, if remote
6577 6608
     # backups are not being used
6578 6609
     backup_databases_script_header
6579
-    echo '' >> /usr/bin/backupdatabases
6580
-    echo $'# Backup Owncloud database' >> /usr/bin/backupdatabases
6581
-    echo 'TEMPFILE=/root/owncloud.sql' >> /usr/bin/backupdatabases
6582
-    echo 'DAILYFILE=/var/backups/owncloud_daily.sql' >> /usr/bin/backupdatabases
6583
-    echo 'mysqldump --password="$MYSQL_PASSWORD" owncloud > $TEMPFILE' >> /usr/bin/backupdatabases
6584
-    echo 'FILESIZE=$(stat -c%s $TEMPFILE)' >> /usr/bin/backupdatabases
6585
-    echo 'if [ "$FILESIZE" -eq "0" ]; then' >> /usr/bin/backupdatabases
6586
-    echo '    if [ -f $DAILYFILE ]; then' >> /usr/bin/backupdatabases
6587
-    echo '        cp $DAILYFILE $TEMPFILE' >> /usr/bin/backupdatabases
6588
-    echo '' >> /usr/bin/backupdatabases
6589
-    echo '        # try to restore yesterdays database' >> /usr/bin/backupdatabases
6590
-    echo '        mysql -u root --password="$MYSQL_PASSWORD" owncloud -o < $DAILYFILE' >> /usr/bin/backupdatabases
6591
-    echo '' >> /usr/bin/backupdatabases
6592
-    echo '        # Send a warning email' >> /usr/bin/backupdatabases
6593
-    echo '        echo "Unable to create a backup of the Owncloud database. Attempted to restore from yesterdays backup" | mail -s "Owncloud backup" $EMAIL' >> /usr/bin/backupdatabases
6594
-    echo '    else' >> /usr/bin/backupdatabases
6595
-    echo '        # Send a warning email' >> /usr/bin/backupdatabases
6596
-    echo '        echo "Unable to create a backup of the Owncloud database." | mail -s "Owncloud backup" $EMAIL' >> /usr/bin/backupdatabases
6597
-    echo '    fi' >> /usr/bin/backupdatabases
6598
-    echo 'else' >> /usr/bin/backupdatabases
6599
-    echo '    chmod 600 $TEMPFILE' >> /usr/bin/backupdatabases
6600
-    echo '    mv $TEMPFILE $DAILYFILE' >> /usr/bin/backupdatabases
6601
-    echo '' >> /usr/bin/backupdatabases
6602
-    echo '    # Make the backup readable only by root' >> /usr/bin/backupdatabases
6603
-    echo '    chmod 600 $DAILYFILE' >> /usr/bin/backupdatabases
6604
-    echo 'fi' >> /usr/bin/backupdatabases
6610
+
6611
+    backup_database_local_daily owncloud
6605 6612
 
6606 6613
     nginx_ensite $OWNCLOUD_DOMAIN_NAME
6607 6614
 
@@ -8620,7 +8627,7 @@ function install_gnu_social {
8620 8627
     CURRENT_DDNS_DOMAIN=$MICROBLOG_DOMAIN_NAME
8621 8628
     add_ddns_domain
8622 8629
 
8623
-	microblog_nginx_site=/etc/nginx/sites-available/$MICROBLOG_DOMAIN_NAME
8630
+    microblog_nginx_site=/etc/nginx/sites-available/$MICROBLOG_DOMAIN_NAME
8624 8631
     if [[ $ONION_ONLY == "no" ]]; then
8625 8632
         echo 'server {' > $microblog_nginx_site
8626 8633
         echo '  listen 80;' >> $microblog_nginx_site
@@ -8737,33 +8744,8 @@ function install_gnu_social {
8737 8744
     # backups are not being used
8738 8745
     backup_databases_script_header
8739 8746
 
8740
-    if ! grep -q "GNU Social" /usr/bin/backupdatabases; then
8741
-        echo '' >> /usr/bin/backupdatabases
8742
-        echo $'# Backup the GNU Social database' >> /usr/bin/backupdatabases
8743
-        echo 'TEMPFILE=/root/gnusocial.sql' >> /usr/bin/backupdatabases
8744
-        echo 'DAILYFILE=/var/backups/gnusocial_daily.sql' >> /usr/bin/backupdatabases
8745
-        echo 'mysqldump --password="$MYSQL_PASSWORD" gnusocial > $TEMPFILE' >> /usr/bin/backupdatabases
8746
-        echo 'FILESIZE=$(stat -c%s $TEMPFILE)' >> /usr/bin/backupdatabases
8747
-        echo 'if [ "$FILESIZE" -eq "0" ]; then' >> /usr/bin/backupdatabases
8748
-        echo '    if [ -f $DAILYFILE ]; then' >> /usr/bin/backupdatabases
8749
-        echo '        cp $DAILYFILE $TEMPFILE' >> /usr/bin/backupdatabases
8750
-        echo '' >> /usr/bin/backupdatabases
8751
-        echo '        # try to restore yesterdays database' >> /usr/bin/backupdatabases
8752
-        echo '        mysql -u root --password="$MYSQL_PASSWORD" gnusocial -o < $DAILYFILE' >> /usr/bin/backupdatabases
8753
-        echo '' >> /usr/bin/backupdatabases
8754
-        echo '        # Send a warning email' >> /usr/bin/backupdatabases
8755
-        echo '        echo "Unable to create a backup of the GNU Social database. Attempted to restore from yesterdays backup" | mail -s "GNU Social backup" $EMAIL' >> /usr/bin/backupdatabases
8756
-        echo '    else' >> /usr/bin/backupdatabases
8757
-        echo '        # Send a warning email' >> /usr/bin/backupdatabases
8758
-        echo '        echo "Unable to create a backup of the GNU Social database." | mail -s "GNU Social backup" $EMAIL' >> /usr/bin/backupdatabases
8759
-        echo '    fi' >> /usr/bin/backupdatabases
8760
-        echo 'else' >> /usr/bin/backupdatabases
8761
-        echo '    chmod 600 $TEMPFILE' >> /usr/bin/backupdatabases
8762
-        echo '    mv $TEMPFILE $DAILYFILE' >> /usr/bin/backupdatabases
8763
-        echo '' >> /usr/bin/backupdatabases
8764
-        echo '    # Make the backup readable only by root' >> /usr/bin/backupdatabases
8765
-        echo '    chmod 600 $DAILYFILE' >> /usr/bin/backupdatabases
8766
-        echo 'fi' >> /usr/bin/backupdatabases
8747
+    if ! grep -q "gnusocial" /usr/bin/backupdatabases; then
8748
+        backup_database_local_daily gnusocial
8767 8749
     fi
8768 8750
 
8769 8751
     if ! grep -q "GNU Social" /etc/cron.weekly/backupdatabasesweekly; then
@@ -9350,32 +9332,8 @@ function install_hubzilla {
9350 9332
     # Ensure that the database gets backed up locally, if remote
9351 9333
     # backups are not being used
9352 9334
     backup_databases_script_header
9353
-    echo '' >> /usr/bin/backupdatabases
9354
-    echo $'# Backup the Hubzilla database' >> /usr/bin/backupdatabases
9355
-    echo 'TEMPFILE=/root/hubzilla.sql' >> /usr/bin/backupdatabases
9356
-    echo 'DAILYFILE=/var/backups/hubzilla_daily.sql' >> /usr/bin/backupdatabases
9357
-    echo 'mysqldump --password="$MYSQL_PASSWORD" hubzilla > $TEMPFILE' >> /usr/bin/backupdatabases
9358
-    echo 'FILESIZE=$(stat -c%s $TEMPFILE)' >> /usr/bin/backupdatabases
9359
-    echo 'if [ "$FILESIZE" -lt "1024" ]; then' >> /usr/bin/backupdatabases
9360
-    echo '    if [ -f $DAILYFILE ]; then' >> /usr/bin/backupdatabases
9361
-    echo '        cp $DAILYFILE $TEMPFILE' >> /usr/bin/backupdatabases
9362
-    echo '' >> /usr/bin/backupdatabases
9363
-    echo '        # try to restore yesterdays database' >> /usr/bin/backupdatabases
9364
-    echo '        mysql -u root --password="$MYSQL_PASSWORD" hubzilla -o < $DAILYFILE' >> /usr/bin/backupdatabases
9365
-    echo '' >> /usr/bin/backupdatabases
9366
-    echo '        # Send a warning email' >> /usr/bin/backupdatabases
9367
-    echo '        echo "Unable to create a backup of the Hubzilla database. Attempted to restore from yesterdays backup" | mail -s "Hubzilla backup" $EMAIL' >> /usr/bin/backupdatabases
9368
-    echo '    else' >> /usr/bin/backupdatabases
9369
-    echo '        # Send a warning email' >> /usr/bin/backupdatabases
9370
-    echo '        echo "Unable to create a backup of the Hubzilla database." | mail -s "Hubzilla backup" $EMAIL' >> /usr/bin/backupdatabases
9371
-    echo '    fi' >> /usr/bin/backupdatabases
9372
-    echo 'else' >> /usr/bin/backupdatabases
9373
-    echo '    chmod 600 $TEMPFILE' >> /usr/bin/backupdatabases
9374
-    echo '    mv $TEMPFILE $DAILYFILE' >> /usr/bin/backupdatabases
9375
-    echo '' >> /usr/bin/backupdatabases
9376
-    echo '    # Make the backup readable only by root' >> /usr/bin/backupdatabases
9377
-    echo '    chmod 600 $DAILYFILE' >> /usr/bin/backupdatabases
9378
-    echo 'fi' >> /usr/bin/backupdatabases
9335
+
9336
+    backup_database_local_daily hubzilla
9379 9337
 
9380 9338
     echo '' >> /etc/cron.weekly/backupdatabasesweekly
9381 9339
     echo '# Hubzilla' >> /etc/cron.weekly/backupdatabasesweekly