Created
March 14, 2011 14:50
-
-
Save sindresorhus/869240 to your computer and use it in GitHub Desktop.
Backup MySQL databases in separate gzipped sql files on Windows
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@echo off | |
set dbUser=root | |
set dbPassword=password | |
set backupDir="C:\Documents and Settings\user\Desktop\backup\mysql" | |
set mysqldump="C:\Program Files\MySQL\MySQL Workbench 5.2 CE\mysqldump.exe" | |
set mysqlDataDir="C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.1\data" | |
set zip="C:\Program Files\7-Zip\7z.exe" | |
:: get date | |
for /F "tokens=2-4 delims=/ " %%i in ('date /t') do ( | |
set mm=%%i | |
set dd=%%j | |
set yy=%%k | |
) | |
:: get time | |
for /F "tokens=5-8 delims=:. " %%i in ('echo.^| time ^| find "current" ') do ( | |
set hh=%%i | |
set mm=%%j | |
) | |
set dirName=%yy%%mm%%dd%_%hh%%mm% | |
:: switch to the "data" folder | |
pushd %mysqlDataDir% | |
:: iterate over the folder structure in the "data" folder to get the databases | |
for /d %%f in (*) do ( | |
if not exist %backupDir%\%dirName%\ ( | |
mkdir %backupDir%\%dirName% | |
) | |
%mysqldump% --host="localhost" --user=%dbUser% --password=%dbPassword% --single-transaction --add-drop-table --databases %%f > %backupDir%\%dirName%\%%f.sql | |
%zip% a -tgzip %backupDir%\%dirName%\%%f.sql.gz %backupDir%\%dirName%\%%f.sql | |
del %backupDir%\%dirName%\%%f.sql | |
) |
@michael-milette, loved your script. Saved me a ton of work! Do you have a script for restoring them too?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I have really enjoyed and made good use of this batch file. However it has a couple of issues:
Issue 1: The script won't backup databases that have a dash in the name of the database.
issue 2: The date won't format properly depending on the Windows date format settings.
I have resolved both of these issues in a similar batch file. Feel free to take a look:
https://github.com/michael-milette/batch/blob/master/mysqlbackup.cmd
It also has an option to just backup a single database instead of all of them.