Browse Source

Avoid multiple local database backups

Bob Mottram 8 years ago
parent
commit
92edc9d62d
1 changed files with 35 additions and 30 deletions
  1. 35
    30
      src/freedombone-utils-database

+ 35
- 30
src/freedombone-utils-database View File

@@ -44,55 +44,60 @@ function backup_database_local {
44 44
     database_name=$1
45 45
 
46 46
     backup_databases_script=/usr/bin/backupdatabases
47
-    echo '' >> $backup_databases_script
48
-    echo "# Backup the ${database_name} database" >> $backup_databases_script
49
-    echo "TEMPFILE=/root/${database_name}.sql" >> $backup_databases_script
50
-    echo 'DAILYFILE=/var/backups/${database_name}_daily.sql' >> $backup_databases_script
51
-    echo "mysqldump --password=\"\$MYSQL_PASSWORD\" ${database_name} > \$TEMPFILE" >> $backup_databases_script
52
-    echo 'FILESIZE=$(stat -c%s $TEMPFILE)' >> $backup_databases_script
53
-    echo 'if [ "$FILESIZE" -eq "0" ]; then' >> $backup_databases_script
54
-    echo '    if [ -f $DAILYFILE ]; then' >> $backup_databases_script
55
-    echo '        cp $DAILYFILE $TEMPFILE' >> $backup_databases_script
56
-    echo '' >> $backup_databases_script
57
-    echo '        # try to restore yesterdays database' >> $backup_databases_script
58
-    echo "        mysql -u root --password=\"\$MYSQL_PASSWORD\" ${database_name} -o < \$DAILYFILE" >> $backup_databases_script
59
-    echo '' >> $backup_databases_script
60
-    echo '        # Send a warning email' >> $backup_databases_script
61
-    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
62
-    echo '    else' >> $backup_databases_script
63
-    echo '        # Send a warning email' >> $backup_databases_script
64
-    echo "        echo \"Unable to create a backup of the ${database_name} database.\" | mail -s \"${database_name} backup\" \$EMAIL" >> $backup_databases_script
65
-    echo '    fi' >> $backup_databases_script
66
-    echo 'else' >> $backup_databases_script
67
-    echo '    chmod 600 $TEMPFILE' >> $backup_databases_script
68
-    echo '    mv $TEMPFILE $DAILYFILE' >> $backup_databases_script
69
-    echo '' >> $backup_databases_script
70
-    echo '    # Make the backup readable only by root' >> $backup_databases_script
71
-    echo '    chmod 600 $DAILYFILE' >> $backup_databases_script
72
-    echo 'fi' >> $backup_databases_script
47
+    if ! grep -q "# Backup the ${database_name} database" $backup_databases_script; then
48
+        echo '' >> $backup_databases_script
49
+        echo "# Backup the ${database_name} database" >> $backup_databases_script
50
+        echo "TEMPFILE=/root/${database_name}.sql" >> $backup_databases_script
51
+        echo 'DAILYFILE=/var/backups/${database_name}_daily.sql' >> $backup_databases_script
52
+        echo "mysqldump --password=\"\$MYSQL_PASSWORD\" ${database_name} > \$TEMPFILE" >> $backup_databases_script
53
+        echo 'FILESIZE=$(stat -c%s $TEMPFILE)' >> $backup_databases_script
54
+        echo 'if [ "$FILESIZE" -eq "0" ]; then' >> $backup_databases_script
55
+        echo '    if [ -f $DAILYFILE ]; then' >> $backup_databases_script
56
+        echo '        cp $DAILYFILE $TEMPFILE' >> $backup_databases_script
57
+        echo '' >> $backup_databases_script
58
+        echo '        # try to restore yesterdays database' >> $backup_databases_script
59
+        echo "        mysql -u root --password=\"\$MYSQL_PASSWORD\" ${database_name} -o < \$DAILYFILE" >> $backup_databases_script
60
+        echo '' >> $backup_databases_script
61
+        echo '        # Send a warning email' >> $backup_databases_script
62
+        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
63
+        echo '    else' >> $backup_databases_script
64
+        echo '        # Send a warning email' >> $backup_databases_script
65
+        echo "        echo \"Unable to create a backup of the ${database_name} database.\" | mail -s \"${database_name} backup\" \$EMAIL" >> $backup_databases_script
66
+        echo '    fi' >> $backup_databases_script
67
+        echo 'else' >> $backup_databases_script
68
+        echo '    chmod 600 $TEMPFILE' >> $backup_databases_script
69
+        echo '    mv $TEMPFILE $DAILYFILE' >> $backup_databases_script
70
+        echo '' >> $backup_databases_script
71
+        echo '    # Make the backup readable only by root' >> $backup_databases_script
72
+        echo '    chmod 600 $DAILYFILE' >> $backup_databases_script
73
+        echo 'fi' >> $backup_databases_script
74
+        echo "# End of ${database_name} database backup" >> $backup_databases_script
75
+    fi
73 76
 
74 77
     weekly_backup_script=/etc/cron.weekly/backupdatabasesweekly
75
-    if ! grep -q "${database_name}" ${weekly_backup_script}; then
78
+    if ! grep -q "Backup ${database_name}" ${weekly_backup_script}; then
76 79
         echo '' >> ${weekly_backup_script}
77
-        echo "# ${database_name}" >> ${weekly_backup_script}
80
+        echo "# Backup ${database_name}" >> ${weekly_backup_script}
78 81
         echo "if [ -f /var/backups/${database_name}_weekly.sql ]; then" >> ${weekly_backup_script}
79 82
         echo "  cp -f /var/backups/${database_name}_weekly.sql /var/backups/${database_name}_2weekly.sql" >> ${weekly_backup_script}
80 83
         echo 'fi' >> ${weekly_backup_script}
81 84
         echo "if [ -f /var/backups/${database_name}_daily.sql ]; then" >> ${weekly_backup_script}
82 85
         echo "  cp -f /var/backups/${database_name}_daily.sql /var/backups/${database_name}_weekly.sql" >> ${weekly_backup_script}
83 86
         echo 'fi' >> ${weekly_backup_script}
87
+        echo "# End of backup for ${database_name}" >> ${weekly_backup_script}
84 88
     fi
85 89
 
86 90
     monthly_backup_script=/etc/cron.monthly/backupdatabasesmonthly
87
-    if ! grep -q "${database_name}" ${monthly_backup_script}; then
91
+    if ! grep -q "Backup ${database_name}" ${monthly_backup_script}; then
88 92
         echo '' >> ${monthly_backup_script}
89
-        echo "# ${database_name}" >> ${monthly_backup_script}
93
+        echo "# Backup ${database_name}" >> ${monthly_backup_script}
90 94
         echo "if [ -f /var/backups/${database_name}_monthly.sql ]; then" >> ${monthly_backup_script}
91 95
         echo "  cp -f /var/backups/${database_name}_monthly.sql /var/backups/${database_name}_2monthly.sql" >> ${monthly_backup_script}
92 96
         echo 'fi' >> ${monthly_backup_script}
93 97
         echo "if [ -f /var/backups/${database_name}_weekly.sql ]; then" >> ${monthly_backup_script}
94 98
         echo "  cp -f /var/backups/${database_name}_weekly.sql /var/backups/${database_name}_monthly.sql" >> ${monthly_backup_script}
95 99
         echo 'fi' >> ${monthly_backup_script}
100
+        echo "# End of backup for ${database_name}" >> ${monthly_backup_script}
96 101
     fi
97 102
 
98 103
     if ! grep -q "${database_name}" /etc/cron.hourly/repair; then