To set up a cron job for daily database backup follow the steps mentioned below

  1. Create a file using command - vi
  2. On the vim, editor screen enter the command for database backup and to delete files older than 30 days

    mysqldump -u<user> -p<password> --single-transaction --skip-lock-tables --routines database name | gzip > /backup directory path/OPENSPECIMEN_`date +\%d-\%m-\%Y`.SQL.gz
    find /backup directory path/ -mtime +30 -exec rm {} \;

  3. Create a cron job with the command:  crontab -e

  4. This will open a crontab (cron configuration file) and the format of the job should be as follows.

    minute hour day-of-month month day-of-week <path to the file>

    This is an example file to take database backup nightly every day at 11:59

    59 23 * * * /home/



Need to create the task scheduler to run the backup script i.e bat file.

It will take the backup of database daily and also delete files older than 30 days


@echo off

echo Exporting OpenSpecimen database dump...

set backupFilename=OPENSPECIMEN_%DATE:~7,2%-%DATE:~4,2%-%DATE:~10,4%.SQL

mysqldump -uroot -py4txhySc --routines --result-file="path of database backup directory\%backupFilename%" <name of the databse>

set backupfldr=path of database backup directory

set retaindays=30

Forfiles -p %backupfldr% -s -m *.SQL -d -%retaindays% -c "cmd /c del /q @path"

echo Done!