33# # MySQLBackupPlus - A powerful and flexible MySQL backup tool
44# # Copyright (C) 2025 Qcybb.com
55# # GitHub Repo: https://github.com/qcybb/mysqlbackup-plus
6- # # Version: 1.2
6+ # # Version: 1.2.1
77# # Last Updated: 2025-05-25
88
9- SCRIPT_VER=" 1.2"
9+ SCRIPT_VER=" 1.2.1 "
1010
1111
1212# START CONFIGURATION SETTINGS
@@ -268,27 +268,51 @@ for DB_ENTRY in $DATABASES; do
268268 DB_NAME=$( echo " $DB_ENTRY " | cut -d' :' -f1)
269269 TABLES=$( echo " $DB_ENTRY " | cut -d' :' -f2)
270270
271+ DAILY_PATH=" $BACKUP_DIR /daily/$DB_NAME "
272+ WEEKLY_PATH=" $BACKUP_DIR /weekly/$DB_NAME "
273+ MONTHLY_PATH=" $BACKUP_DIR /monthly/$DB_NAME "
274+
271275 printf " \n----------------------------------------\n"
272276 printf " [$( date +" %I:%M:%S %p" ) ] Processing %s...\n" " $DB_NAME "
273277
274278 if [ " $TABLES " != " $DB_NAME " ]; then
275279 # Table-level backups
276280 for TABLE in $( echo " $TABLES " | tr ' ,' ' ' ) ; do
277- DAILY_PATH=" $BACKUP_DIR /daily/$DB_NAME "
278- WEEKLY_PATH=" $BACKUP_DIR /weekly/$DB_NAME "
279- MONTHLY_PATH=" $BACKUP_DIR /monthly/$DB_NAME "
280-
281- [ ! -d " $DAILY_PATH " ] && mkdir -p " $DAILY_PATH "
282-
283- OUTPUT_FILE=" $DAILY_PATH /${TABLE} _$BACKUP_DATE$EXT "
284-
285281 if mysql --defaults-file=" $HOME /.my.cnf" -e " SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA='$DB_NAME ' AND TABLE_NAME='$TABLE '" | grep -q " $TABLE " ; then
282+ [ ! -d " $DAILY_PATH " ] && mkdir -p " $DAILY_PATH "
283+
284+ OUTPUT_FILE=" $DAILY_PATH /${TABLE} _$BACKUP_DATE$EXT "
286285 $MYSQLDUMP --defaults-file=" $HOME /.my.cnf" " $DB_NAME " " $TABLE " | $COMPRESS_CMD > " $OUTPUT_FILE "
286+
287287 printf " \n - Table: $TABLE \n"
288288 printf " -> Saved to: ${BACKUP_DIR} /daily/${DB_NAME} /${TABLE} _${BACKUP_DATE}${EXT} \n"
289+
290+ if [ " $BACKUP_WEEKLY " = " YES" ] && [ " $CURRENT_WEEKDAY " -eq " $WEEKLY_BACKUP_DAY " ]; then
291+ [ ! -d " $WEEKLY_PATH " ] && mkdir -p " $WEEKLY_PATH "
292+ cp " $OUTPUT_FILE " " $WEEKLY_PATH /"
293+ printf " -> Copied to: $WEEKLY_PATH /\n"
294+ fi
295+
296+ if [ " $BACKUP_MONTHLY " = " YES" ] && [ " $CURRENT_MONTHDAY " -eq " $MONTHLY_BACKUP_DAY " ]; then
297+ [ ! -d " $MONTHLY_PATH " ] && mkdir -p " $MONTHLY_PATH "
298+ cp " $OUTPUT_FILE " " $MONTHLY_PATH /"
299+ printf " -> Copied to: $MONTHLY_PATH /\n"
300+ fi
289301 else
290302 printf " \nError: Table '$TABLE ' in database '$DB_NAME ' does not exist.\n"
291303 fi
304+ done
305+ else
306+ # Full DB backup
307+ if mysql --defaults-file=" $HOME /.my.cnf" -e " SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME='$DB_NAME '" | grep -q " $DB_NAME " ; then
308+ [ ! -d " $DAILY_PATH " ] && mkdir -p " $DAILY_PATH "
309+
310+ OUTPUT_FILE=" $DAILY_PATH /${DB_NAME} _$BACKUP_DATE$EXT "
311+ $MYSQLDUMP --defaults-file=" $HOME /.my.cnf" " $DB_NAME " | $COMPRESS_CMD > " $OUTPUT_FILE "
312+
313+ printf " \n - Full Database\n"
314+ printf " -> Saved to: ${BACKUP_DIR} /daily/${DB_NAME} /${DB_NAME} _${BACKUP_DATE}${EXT} \n"
315+
292316
293317 if [ " $BACKUP_WEEKLY " = " YES" ] && [ " $CURRENT_WEEKDAY " -eq " $WEEKLY_BACKUP_DAY " ]; then
294318 [ ! -d " $WEEKLY_PATH " ] && mkdir -p " $WEEKLY_PATH "
@@ -301,36 +325,9 @@ for DB_ENTRY in $DATABASES; do
301325 cp " $OUTPUT_FILE " " $MONTHLY_PATH /"
302326 printf " -> Copied to: $MONTHLY_PATH /\n"
303327 fi
304- done
305- else
306- # Full DB backup
307- DAILY_PATH=" $BACKUP_DIR /daily/$DB_NAME "
308- WEEKLY_PATH=" $BACKUP_DIR /weekly/$DB_NAME "
309- MONTHLY_PATH=" $BACKUP_DIR /monthly/$DB_NAME "
310-
311- [ ! -d " $DAILY_PATH " ] && mkdir -p " $DAILY_PATH "
312-
313- OUTPUT_FILE=" $DAILY_PATH /${DB_NAME} _$BACKUP_DATE$EXT "
314-
315- if mysql --defaults-file=" $HOME /.my.cnf" -e " SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME='$DB_NAME '" | grep -q " $DB_NAME " ; then
316- $MYSQLDUMP --defaults-file=" $HOME /.my.cnf" " $DB_NAME " | $COMPRESS_CMD > " $OUTPUT_FILE "
317- printf " \n - Full Database\n"
318- printf " -> Saved to: ${BACKUP_DIR} /daily/${DB_NAME} /${DB_NAME} _${BACKUP_DATE}${EXT} \n"
319328 else
320329 printf " \nError: Database '$DB_NAME ' does not exist.\n"
321330 fi
322-
323- if [ " $BACKUP_WEEKLY " = " YES" ] && [ " $CURRENT_WEEKDAY " -eq " $WEEKLY_BACKUP_DAY " ]; then
324- [ ! -d " $WEEKLY_PATH " ] && mkdir -p " $WEEKLY_PATH "
325- cp " $OUTPUT_FILE " " $WEEKLY_PATH /"
326- printf " -> Copied to: $WEEKLY_PATH /\n"
327- fi
328-
329- if [ " $BACKUP_MONTHLY " = " YES" ] && [ " $CURRENT_MONTHDAY " -eq " $MONTHLY_BACKUP_DAY " ]; then
330- [ ! -d " $MONTHLY_PATH " ] && mkdir -p " $MONTHLY_PATH "
331- cp " $OUTPUT_FILE " " $MONTHLY_PATH /"
332- printf " -> Copied to: $MONTHLY_PATH /\n"
333- fi
334331 fi
335332 printf " %s\n" " ----------------------------------------"
336333done
@@ -340,7 +337,7 @@ if [ "$ROTATE_DAYS" -gt 0 ]; then
340337 DELETED_FILES=$( find " $BACKUP_DIR /daily" -type f -mtime +" $ROTATE_DAYS " -print)
341338
342339 if [ -n " $DELETED_FILES " ]; then
343- find " $BACKUP_DIR " -type f -mtime +" $ROTATE_DAYS " -exec rm " {}" \;
340+ find " $BACKUP_DIR /daily " -type f -mtime +" $ROTATE_DAYS " -exec rm " {}" \;
344341
345342 UNIT=" day"
346343 [ " $ROTATE_DAYS " -gt 1 ] && UNIT=" days"
0 commit comments