I’ve been given a small task to backup our issue database on daily basis, for which I created a tiny backup file and would like to share with you.
The script below will do the following
- Create MySQL dump of your database using configuration set
- Compress files and MySQL dump into single archive file and copy to destination folder
- It will always create old backup so you always have previous version
- Copy both old and new backups to network shared resourse
@ECHO OFF REM ----------- START OF CONFIGURATION HERE SET DESTINATION_FOLDER=c:\dest\ SET BACKUP_FILENAME=yourBackup.rar SET BACKUP_FILENAME_OLD=yourBackup.old.rar SET BACKUP_DB_FILENAME=backup.sql SET MYSQL_FOLDER=C:\wamp\bin\mysql\mysql5.1.30\bin\ SET MYSQL_DB_NAME=yourdbname SET MYSQL_DB_USER=yourdbuser SET MYSQL_DB_PASS=yourdbpass SET NETWORK_PATH=\\your_backup_pc_ip\path SET NETWORK_USERNAME=your_backup_pc_user SET NETWORK_PASSWORD=your_backup_pc_pass REM ----------- END OF CONFIGURATION HERE CD %~dp0 %MYSQL_FOLDER%mysqldump.exe -u %MYSQL_DB_USER% -p%MYSQL_DB_PASS% %MYSQL_DB_NAME% >%BACKUP_DB_FILENAME% ECHO DB Done rar a %BACKUP_FILENAME% @files.lst > NUL @del %DESTINATION_FOLDER%%BACKUP_FILENAME_OLD% 2>NUL @rename %DESTINATION_FOLDER%%BACKUP_FILENAME% %BACKUP_FILENAME_OLD% 2>NUL copy %BACKUP_FILENAME% %DESTINATION_FOLDER% > NUL ECHO Files Done @del %BACKUP_FILENAME% 2>NUL @del %BACKUP_DB_FILENAME% 2>NUL ECHO Removing Temporary Files Done ECHO Accessing Network... net use %NETWORK_PATH% %NETWORK_PASSWORD% /user:%NETWORK_USERNAME% copy %DESTINATION_FOLDER%%BACKUP_FILENAME% %NETWORK_PATH% > NUL copy %DESTINATION_FOLDER%%BACKUP_FILENAME_OLD% %NETWORK_PATH% > NUL ECHO Network Copy Done ECHO All Done
To make backup regular I’ve used Cron NT service for Windows because I honestly don’t like Windows Scheduler and always disable it 😉
Here is the crontab line that suits my needs.
This will backup my stuff every day at 23:10.
That’s pretty much it.
Cheers!