본문 바로가기
DB

[MSSQL] 배치파일을 이용해 주기적으로 DB 백업하기, 파일 삭제하기

by 오늘의개발부 2020. 5. 7.
반응형

배치파일을 하나 생성한다 (test.bat)

 

내용은 아래와 같이 한다

set pcname=%COMPUTERNAME%
sqlcmd -E -S %pcname%\SQL인스턴스이름 -i "실행시킬 sql 경로"

%pcname%\SQL인스턴스이름은, Sql Server Management Studio에서 Windows 인증으로 로그인할 때 나오는 그 서버 이름과 같다.

 

 

백업 쿼리를 담고 있는 sql 파일을 만든다 (backup.sql)

DECLARE @DIR NVARCHAR(100)
DECLARE @BACKUPNAME NVARCHAR(100)
SET @DIR = N'c:\경로\test' + CONVERT(NVARCHAR(20), GETDATE(), 112) + N'.bak'
SET @BACKUPNAME = N'test_' + CONVERT(NVARCHAR(20), GETDATE(), 112) + N'.BAK'
BACKUP DATABASE [백업할 대상 데이터베이스 이름] TO DISK = @DIR WITH NOFORMAT, NOINIT, NAME = @BACKUPNAME, SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO

 

작업스케줄러를 키고 기본작업 만들기에서 bat파일을 추가한다.

 

이렇게 하면 나는 매일 오후 2시에 배치파일이 실행돼 데이터베이스를 백업한다.

 

 

삭제 배치 또한 배치파일을 하나 생성한다(file_del.bat)

forfiles /p "C:\batch\tempfiles" /s /m *.* /d -3 /c "cmd.exe /C del @path"

forfiles /p "C:\batch\LWD" /s /m *.png /d -60 /c "cmd.exe /C del @path"
forfiles /p "C:\batch\LWD" /s /m *.jpg /d -60 /c "cmd.exe /C del @path"

forfiles는 파일 또는 파일집합에서 명령을 선택하고 실행하는 명령어다

/p 경로에서 찾고, /s로 하위폴더까지 모두를 탐색한다 /m으로 대상파일을 검색하고 /d는 파일을 최종 수정한 날짜이다 /c @path은 해당 파일의 전체경로를 담은 변수이다. 이렇게 검색한 파일을 del 명령을 이용해 삭제한다

 

자세한 옵션 설명은 아래와 같다

/p <pathname> 검색을 시작 하는 경로 지정 합니다. 기본적으로 현재 작업 디렉터리에서 시작 검색 합니다.
/m <searchmask> 지정 된 검색 마스크에 따라 파일을 검색합니다. 기본 검색 맵은 * 입니다.
/S 하위directories에서 재귀적으로 검색하도록 forfiles 명령에 지시합니다.
/c <command> 각 파일에 지정된 된 명령을 실행합니다. 명령 문자열은 큰 따옴표로 묶어야 합니다. 기본 명령은 "cmd /c echo @file" 입니다.
/d [{+\|-}][{<date> | <days>}] 지정된 시간 프레임 내에 마지막으로 수정된 날짜가 있는 파일을 선택합니다.
  • 마지막으로 수정한 날짜가 ()보다 이후이거나 + 같거나 지정된 날짜()보다 이전이거나 같은 파일을 선택합니다. - 여기서 date는 MM/DD/YYYY 형식입니다.
  • 마지막으로 수정한 날짜가 ()보다 이후이거나 같은 파일을 선택합니다. + 현재 날짜와 지정된 일 수 또는 ( 보다 이전 또는 같음) - 현재 날짜에서 지정된 일 수를 뺀 값입니다.
  • 일의 유효한 값에는 0~32,768 범위의 모든 숫자가 포함됩니다. 부호가 지정되지 않은 경우 + 는 기본적으로 사용됩니다.

출처: https://docs.microsoft.com/ko-kr/windows-server/administration/windows-commands/forfiles

 

forfiles

파일 또는 파일 집합에서 명령을 선택하고 실행하는 forfiles 명령에 대한 참조 문서입니다.

docs.microsoft.com

더 자세한 설명은 위에서 확인할 수 있다.

 

이렇게 작성한 file_del.bat 파일도 작업스케줄러에 등록하면 된다.

반응형