Most Recent

윈도우 rsync 로컬 및 원격 백업하기
프로그램명 : cwRsync
운영체제 : Windows, BSD, Linux
작성자 : 서비님(https://dslee1.blogspot.kr/)



리눅스를 주로 사용해서인지 윈도우 백업 정책은 왠지 어렵다...ㅡㅡ;;


일단 이것저것 삽질을 해봤는데(xcopy등등..) 리눅스에서 사용하던 rsync가 나는 가장 만만하고 괜찮은듯..


먼저 http://www.itefix.no/i2/download 에 가서 "Cwrsync"와 "Cwrsync Server"를 다운받아 설치한다.(파일로도 첨부하였음)


1. 먼저 로컬 백업에 대한 설명입니다.


1) Cwrsync을 설치하게 되면 보통 c:\program file\cwRsync 에 설치가 되는데요. 여기서 bin 디렉토리로 이동하면 'rsync'라는 응용 프로그램이 보일껍니다. 이것을 이용하여 백업을 진행하면 됩니다.


2) 예를들어 D드라이브의 kim의 디렉토리에 있는 내용을 E드라이브의 backup 디렉토리로 복사하고 싶다면 아래와 같이 실행하면 됩니다.
-- Rsync를 이용한 백업 Start ----------------------------------------------------------------------
c:\>"c:\Program Files (x86)\cwRsync\bin\rsync" -avz /cygdrive/d/kim/ /cygdrive/e/backup/
-- End ------------------------------------------------------------------------------------------


3) 만약 동기화 작업을 진행하고 싶다면 옵션으로 "--delete"를 추가하면 됩니다.
-- Rsync를 이용한 동기화 Start ---------------------------------------------------------------------------
c:\>"c:\Program Files (x86)\cwRsync\bin\rsync" -avz --delete /cygdrive/d/kim/ /cygdrive/e/backup/
-- End -------------------------------------------------------------------------------------------------


4) 위 내용을 가지고 간단한 로컬 백업 정책을 배치파일로 만들어 봤습니다.
  - 백업 정책
(1) 일일 동기화 작업 12회(갑작스런 메인 디스크 장애로 인해 복구시 가장 최근 파일이 필요할때 사용)
(2) 일일 전체 백업 1회(몇일전에 삭제한 파일이 필요할때 사용)
(3) 14일 이상된 전체 백업은 삭제(백업 디스크 용량을 고려하여 날짜를 지정하면 됨)


  - 백업 내용 예시
(1) 백업할 파일이 위치 - C:\input\www
(2) 동기화된 파일을 백업할 위치 - D:\syncbackup
(3) 전체 파일을 백업할 위치 - D:\allbackup
   -> 전체백업은 날짜로 구분한다.(ex. D:\allbackup\111108)


  - 배치 파일 작성
   (1) 일일 동기화 배치 파일
-- syncbakcup.bat Start --------------------------------------------------------------------------------------------
@echo off
"c:\Program Files (x86)\cwRsync\bin\rsync" -avz --delete /cygdrive/c/input/www/ /cygdrive/d/syncbackup/
-- End ------------------------------------------------------------------------------------------------------------


(2) 일일 전체 백업 및 14일 이상된 전체 백업 삭제 배치 파일
-- allbakcup.bat Start --------------------------------------------------------------------------------------------
@echo off
set backupdir=D:\allbackup\
set time=14


set /a daytime=100+%time%


for /f "tokens=1-3 delims=- " %%A in ('echo %DATE%') do (set YY=%%A&SET MM=%%B&SET DD=%%C)


set /a DD1=1%DD%-%daytime%
set /a MM=1%MM%-100
if  %DD1% GTR 0 goto end
set /a MM=%MM%-1
if %MM% GTR 0 goto leap
set /a DD=31
set /a MM=12
set /a YY=%YY%-1
REM echo %YY%, %MM%, %DD% -> 2005, 12, 31
goto end
:leap
set /a TT=%YY%/4
set /a TT=%TT%*4
if not %YY% equ %TT% goto mon%MM%
set /a DD=29
goto end
:mon1
:mon3
:mon5
:mon7
:mon8
:mon10
set /a DD=31
goto end
:mon2
set /a DD=28
goto end
:mon4
:mon6
:mon9
:mon11
set /a DD=30


goto end
:end
if not %DD1% gtr 0 (goto end1) else (goto end2)
:end1
SET YY=%YY:~2,2%
set /a DD=%DD% + 100 + %DD1%
set DD=%DD:~1,2%
set /a MM=%MM% + 100
set MM=%MM:~1,2%
goto day
:end2
SET YY=%YY:~2,2%
set /a DD=%DD1% + 100
set DD=%DD:~1,2%
set /a MM=%MM% + 100
set MM=%MM:~1,2%
goto day
:day
set delfile=%backupdir%\%YY%%MM%%DD%
:: 파일지우기
rd %delfile% /S /Q


SET yyy=%date:~2,2%
SET mmm=%date:~5,2%
SET ddd=%date:~8,2%
SET TODAY=%yyy%%mmm%%ddd%
SET BK_DIR=D:\allbackup
mkdir %BK_DIR%\%TODAY%


"c:\Program Files (x86)\cwRsync\bin\rsync" -avz  /cygdrive/c/input/www/ /cygdrive/d/allbackup/%TODAY%

-- End ------------------------------------------------------------------------------------------------------------

시골청년 2016년 4월 13일 수요일