Преглед изворни кода

Tidying local database backups

Bob Mottram пре 9 година
родитељ
комит
4ba7ce0d65
1 измењених фајлова са 38 додато и 56 уклоњено
  1. 38
    56
      src/freedombone

+ 38
- 56
src/freedombone Прегледај датотеку

@@ -1843,11 +1843,14 @@ function check_certificates {
1843 1843
     fi
1844 1844
 }
1845 1845
 
1846
-function backup_database_local_daily {
1846
+function backup_database_local {
1847
+    # Makes local backups of databases which can then be automatically rolled
1848
+    # back if corruption is detected
1847 1849
     database_name=$1
1850
+
1848 1851
     backup_databases_script=/usr/bin/backupdatabases
1849 1852
     echo '' >> $backup_databases_script
1850
-    echo $"# Backup the ${database_name} database" >> $backup_databases_script
1853
+    echo "# Backup the ${database_name} database" >> $backup_databases_script
1851 1854
     echo "TEMPFILE=/root/${database_name}.sql" >> $backup_databases_script
1852 1855
     echo 'DAILYFILE=/var/backups/${database_name}_daily.sql' >> $backup_databases_script
1853 1856
     echo "mysqldump --password=\"\$MYSQL_PASSWORD\" ${database_name} > \$TEMPFILE" >> $backup_databases_script
@@ -1872,6 +1875,36 @@ function backup_database_local_daily {
1872 1875
     echo '    # Make the backup readable only by root' >> $backup_databases_script
1873 1876
     echo '    chmod 600 $DAILYFILE' >> $backup_databases_script
1874 1877
     echo 'fi' >> $backup_databases_script
1878
+
1879
+    weekly_backup_script=/etc/cron.weekly/backupdatabasesweekly
1880
+    if ! grep -q "${database_name}" ${weekly_backup_script}; then
1881
+        echo '' >> ${weekly_backup_script}
1882
+        echo "# ${database_name}" >> ${weekly_backup_script}
1883
+        echo "if [ -f /var/backups/${database_name}_weekly.sql ]; then" >> ${weekly_backup_script}
1884
+        echo "  cp -f /var/backups/${database_name}_weekly.sql /var/backups/${database_name}_2weekly.sql" >> ${weekly_backup_script}
1885
+        echo 'fi' >> ${weekly_backup_script}
1886
+        echo "if [ -f /var/backups/${database_name}_daily.sql ]; then" >> ${weekly_backup_script}
1887
+        echo "  cp -f /var/backups/${database_name}_daily.sql /var/backups/${database_name}_weekly.sql" >> ${weekly_backup_script}
1888
+        echo 'fi' >> ${weekly_backup_script}
1889
+    fi
1890
+
1891
+    monthly_backup_script=/etc/cron.monthly/backupdatabasesmonthly
1892
+    if ! grep -q "${database_name}" ${monthly_backup_script}; then
1893
+        echo '' >> ${monthly_backup_script}
1894
+        echo "# ${database_name}" >> ${monthly_backup_script}
1895
+        echo "if [ -f /var/backups/${database_name}_monthly.sql ]; then" >> ${monthly_backup_script}
1896
+        echo "  cp -f /var/backups/${database_name}_monthly.sql /var/backups/${database_name}_2monthly.sql" >> ${monthly_backup_script}
1897
+        echo 'fi' >> ${monthly_backup_script}
1898
+        echo "if [ -f /var/backups/${database_name}_weekly.sql ]; then" >> ${monthly_backup_script}
1899
+        echo "  cp -f /var/backups/${database_name}_weekly.sql /var/backups/${database_name}_monthly.sql" >> ${monthly_backup_script}
1900
+        echo 'fi' >> ${monthly_backup_script}
1901
+    fi
1902
+
1903
+    if ! grep -q "${database_name}" /etc/cron.hourly/repair; then
1904
+        echo "${PROJECT_NAME}-repair-database ${database_name}" >> /etc/cron.hourly/repair
1905
+        # remove legacy stuff
1906
+        sed -i 's|/usr/bin/repairdatabase redmatrix||g' /etc/cron.hourly/repair
1907
+    fi
1875 1908
 }
1876 1909
 
1877 1910
 function install_not_on_BBB {
@@ -6608,7 +6641,7 @@ function install_owncloud {
6608 6641
     # backups are not being used
6609 6642
     backup_databases_script_header
6610 6643
 
6611
-    backup_database_local_daily owncloud
6644
+    backup_database_local owncloud
6612 6645
 
6613 6646
     nginx_ensite $OWNCLOUD_DOMAIN_NAME
6614 6647
 
@@ -8744,35 +8777,8 @@ function install_gnu_social {
8744 8777
     # backups are not being used
8745 8778
     backup_databases_script_header
8746 8779
 
8747
-    if ! grep -q "gnusocial" /usr/bin/backupdatabases; then
8748
-        backup_database_local_daily gnusocial
8749
-    fi
8750
-
8751
-    if ! grep -q "GNU Social" /etc/cron.weekly/backupdatabasesweekly; then
8752
-        echo '' >> /etc/cron.weekly/backupdatabasesweekly
8753
-        echo $'# GNU Social' >> /etc/cron.weekly/backupdatabasesweekly
8754
-        echo 'if [ -f /var/backups/gnusocial_weekly.sql ]; then' >> /etc/cron.weekly/backupdatabasesweekly
8755
-        echo '  cp -f /var/backups/gnusocial_weekly.sql /var/backups/gnusocial_2weekly.sql' >> /etc/cron.weekly/backupdatabasesweekly
8756
-        echo 'fi' >> /etc/cron.weekly/backupdatabasesweekly
8757
-        echo 'if [ -f /var/backups/gnusocial_daily.sql ]; then' >> /etc/cron.weekly/backupdatabasesweekly
8758
-        echo '  cp -f /var/backups/gnusocial_daily.sql /var/backups/gnusocial_weekly.sql' >> /etc/cron.weekly/backupdatabasesweekly
8759
-        echo 'fi' >> /etc/cron.weekly/backupdatabasesweekly
8760
-    fi
8761
-
8762
-    if ! grep -q "GNU Social" /etc/cron.monthly/backupdatabasesmonthly; then
8763
-        echo '' >> /etc/cron.monthly/backupdatabasesmonthly
8764
-        echo $'# GNU Social' >> /etc/cron.monthly/backupdatabasesmonthly
8765
-        echo 'if [ -f /var/backups/gnusocial_monthly.sql ]; then' >> /etc/cron.monthly/backupdatabasesmonthly
8766
-        echo '  cp -f /var/backups/gnusocial_monthly.sql /var/backups/gnusocial_2monthly.sql' >> /etc/cron.monthly/backupdatabasesmonthly
8767
-        echo 'fi' >> /etc/cron.monthly/backupdatabasesmonthly
8768
-        echo 'if [ -f /var/backups/gnusocial_weekly.sql ]; then' >> /etc/cron.monthly/backupdatabasesmonthly
8769
-        echo '  cp -f /var/backups/gnusocial_weekly.sql /var/backups/gnusocial_monthly.sql' >> /etc/cron.monthly/backupdatabasesmonthly
8770
-        echo 'fi' >> /etc/cron.monthly/backupdatabasesmonthly
8771
-    fi
8780
+    backup_database_local gnusocial
8772 8781
 
8773
-    if ! grep -q "gnusocial" /etc/cron.hourly/repair; then
8774
-        echo "${PROJECT_NAME}-repair-database gnusocial" >> /etc/cron.hourly/repair
8775
-    fi
8776 8782
     nginx_ensite $MICROBLOG_DOMAIN_NAME
8777 8783
 
8778 8784
     # NOTE: For the typical case always enable SSL and only
@@ -9333,31 +9339,7 @@ function install_hubzilla {
9333 9339
     # backups are not being used
9334 9340
     backup_databases_script_header
9335 9341
 
9336
-    backup_database_local_daily hubzilla
9337
-
9338
-    echo '' >> /etc/cron.weekly/backupdatabasesweekly
9339
-    echo '# Hubzilla' >> /etc/cron.weekly/backupdatabasesweekly
9340
-    echo 'if [ -f /var/backups/hubzilla_weekly.sql ]; then' >> /etc/cron.weekly/backupdatabasesweekly
9341
-    echo '  cp -f /var/backups/hubzilla_weekly.sql /var/backups/hubzilla_2weekly.sql' >> /etc/cron.weekly/backupdatabasesweekly
9342
-    echo 'fi' >> /etc/cron.weekly/backupdatabasesweekly
9343
-    echo 'if [ -f /var/backups/hubzilla_daily.sql ]; then' >> /etc/cron.weekly/backupdatabasesweekly
9344
-    echo '  cp -f /var/backups/hubzilla_daily.sql /var/backups/hubzilla_weekly.sql' >> /etc/cron.weekly/backupdatabasesweekly
9345
-    echo 'fi' >> /etc/cron.weekly/backupdatabasesweekly
9346
-
9347
-    echo '' >> /etc/cron.monthly/backupdatabasesmonthly
9348
-    echo '# Hubzilla' >> /etc/cron.monthly/backupdatabasesmonthly
9349
-    echo 'if [ -f /var/backups/hubzilla_monthly.sql ]; then' >> /etc/cron.monthly/backupdatabasesmonthly
9350
-    echo '  cp -f /var/backups/hubzilla_monthly.sql /var/backups/hubzilla_2monthly.sql' >> /etc/cron.monthly/backupdatabasesmonthly
9351
-    echo 'fi' >> /etc/cron.monthly/backupdatabasesmonthly
9352
-    echo 'if [ -f /var/backups/hubzilla_weekly.sql ]; then' >> /etc/cron.monthly/backupdatabasesmonthly
9353
-    echo '  cp -f /var/backups/hubzilla_weekly.sql /var/backups/hubzilla_monthly.sql' >> /etc/cron.monthly/backupdatabasesmonthly
9354
-    echo 'fi' >> /etc/cron.monthly/backupdatabasesmonthly
9355
-
9356
-    if ! grep -q "hubzilla" /etc/cron.hourly/repair; then
9357
-        echo "${PROJECT_NAME}-repair-database hubzilla" >> /etc/cron.hourly/repair
9358
-        # remove legacy stuff
9359
-        sed -i 's|/usr/bin/repairdatabase redmatrix||g' /etc/cron.hourly/repair
9360
-    fi
9342
+    backup_database_local hubzilla
9361 9343
 
9362 9344
     chown -R www-data:www-data /var/www/$HUBZILLA_DOMAIN_NAME/htdocs
9363 9345