본문 바로가기

shell script

[bat] mysqldump 를 사용한 백업

 

윈도우 에서 mysqldump 를 사용한 백업 스크립트

참조 : http://hancem.tistory.com/4

 

REM - 주석을 의미함

forfiles - 파일 또는 집합을 선택하고 파일에 명령을 실행한다.

            /P pathname 검색을 시작할 경로를 지정합니다. 현재 작업 디렉터리(.)가 기본폴더입니다.
           /M searchmask 검색 마스크에 따라 파일을 검색합니다. '*'이 기본 검색 마스크입니다.
           /S 하위 폴더를 포함하도록 지정합니다. 예, "DIR /S"
           /C command 각 파일에 실행할 명령을 지정합니다. 명령 문자열을 큰따옴표로 묶어야 합니다.
                             "cmd /c echo @file"이 기본 명령입니다. 명령 문자열에 다음 변수를 사용할 수 있습니다.
                              @file - 파일 이름을 반환합니다.
                              @fname - 확장명 없이 파일 이름을 반환합니다.
                              @ext - 파일의 확장명만 반환합니다.
                              @path - 파일의 전체 경로를 반환합니다.
                              @relpath - 파일의 상대 경로를 반환합니다.
                              @isdir - 파일 형식이 디렉터리인 경우 "TRUE"를 반환하고 파일인 경우 "FALSE"를 반환합니다.
                              @fsize - 파일의 크기(바이트)를 반환합니다.
                              @fdate - 파일을 마지막으로 수정한 날짜를 반환합니다.
                              @ftime - 파일을 마지막으로 수정한 시간을 반환합니다.
         /D date 지정한 날짜와 마지막 수정한 날짜가 늦거나 같은(+) 또는 빠르거나 같은(-) 파일을 찾습니다.
                    날짜 형식은 "yyyy-MM-dd"입니다. 또한 마지막 수정한 날짜가 현재 날짜에 "dd"일을 더한 날짜보다 늦거나

                    같은 (+) 또는 현재 날짜에서 "dd"일을 뺀 날짜보다 작거나 같은(-) 파일을 찾습니다.
                    유효한 "dd" 범위는 0에서 32768까지입니다. 부호를 지정하지 않으면 "+"가 기본값입니다.

@echo off

REM Set some variables

set YEAR=%date:~0,4%

set MONTH=%date:~5,2%

set DAY=%date:~8,2%

set HOUR=%time:~0,2%

set MINUTE=%time:~3,2%

set hh1=%HOUR:~0,1%

set hh2=%HOUR:~1,1%

 

if "%hh1%" == " " set HOUR=0%hh2%

 

set DATETIME=%YEAR%%MONTH%%DAY%


set mysqlcmd="C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql.exe"

set mysqlpwd="패스워드"

set mysqlconnect=%mysqlcmd% -u root --password=%mysqlpwd%

set mysqldumper="C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqldump.exe" -x -u root --password=%mysqlpwd%

set backupdir="D:\mysql_backup"

set logfile="D:\mysql_backup\logs\%DATETIME%_db_backup.log"

 


REM Loop over list of databases and dump

date /t > %logfile%

time /t >> %logfile%

echo Starting Script Run >> %logfile%

 

for /f %%i in ('"%mysqlconnect% -e "show databases" --skip-column-names"') do (

 

echo ---------------------------------------------- >> %logfile%

date /t >> %logfile%

time /t >> %logfile%

echo Now Backup for %%i >> %logfile%

 


%mysqldumper% %%i > %backupdir%\%%i_%DATETIME%.sql 2>> %logfile%

)

 


forfiles /P "%backupdir%" /D -7 /M *.sql /C "cmd /c @echo @PATH && del @path" >> %logfile%

 

 

'shell script' 카테고리의 다른 글

awk 싱글쿼터  (0) 2012.06.26
[shell script] unixtime 변경 명령어  (0) 2011.12.27
[shell] md_recover.sh  (0) 2010.04.28