검색 엔진의 방문이 늘어나고 있군...

Posted
Filed under 쉘 스크립트
인터넷을 검색하며 백업을 위한 배치 파일을 만들어 봤습니다. 핵심 내용은 실행할 때마다 30일 이전의 백업본을 지우는 것입니다. 윈도우 스케줄러를 통해 새벽에 돌리면 간단한 백업에 사용할 수 있을 것 같습니다. 에코는 일부로 꺼놓지 않았으므로 명령어가 거슬릴 경우 @echo off 를 첫 번째 줄로 추가하면 됩니다.
set date2=%date:-=%
set YEAR=%date2:~0,4%
set MONTH=%date2:~4,2%
set DAY=%date2:~6,2%
set CurDate=%YEAR%%MONTH%%DAY%
set dayCnt=30

xcopy "C:\Backup" "D:\BACKUP_%CurDate%\" /D /F

REM Substract your days here
set /A DAY=1%DAY% - 100 - %dayCnt%
set /A MONTH=1%MONTH% - 100

:CHKDAY

if /I %DAY% GTR 0 goto DONE

set /A MONTH=%MONTH% - 1

if /I %MONTH% GTR 0 goto ADJUSTDAY

set /A MONTH=12
set /A YEAR=%YEAR% - 1

:ADJUSTDAY

if %MONTH%==1 goto SET31
if %MONTH%==2 goto LEAPCHK
if %MONTH%==3 goto SET31
if %MONTH%==4 goto SET30
if %MONTH%==5 goto SET31
if %MONTH%==6 goto SET30
if %MONTH%==7 goto SET31
if %MONTH%==8 goto SET31
if %MONTH%==9 goto SET30
if %MONTH%==10 goto SET31
if %MONTH%==11 goto SET30
REM ** Month 12 falls through

:SET31

set /A DAY=31 + %DAY%

goto CHKDAY

:SET30

set /A DAY=30 + %DAY%

goto CHKDAY

:LEAPCHK

set /A tt=%YEAR% %% 4

if not %tt%==0 goto SET28

set /A tt=%YEAR% %% 100

if not %tt%==0 goto SET29

set /A tt=%YEAR% %% 400

if %tt%==0 goto SET29

:SET28

set /A DAY=28 + %DAY%

goto CHKDAY

:SET29

set /A DAY=29 + %DAY%

goto CHKDAY

:DONE

if /I %MONTH% LSS 10 set MONTH=0%MONTH%
if /I %DAY% LSS 10 set DAY=0%DAY%

echo Date %dayCnt% day(s) before %CurDate% is %YEAR%%MONTH%%DAY%
rmdir /S /Q "D:\BACKUP_%YEAR%%MONTH%%DAY%\"



2014/12/01 19:29 2014/12/01 19:29