티스토리 뷰

Robocopy는 "Robust File Copy"의 약자로서 Command line에서 수행할 수 있는 복사 명령어이다.
Windows Resource kit에 포함되어 있는데 단독 파일로 실행가능하다.

복사명령어는 간단한 copy와 조금 복잡한 옵션을 줄수 있는 xcopy를 대표적으로 들수 있을 것이다.

특정 폴더를 계속 Backup해야 하는 상황에서
전체 파일을 복사하는 것은 비효율적이고
수정된 파일만 복사하면 될텐데, 이때 xcopy 명령을 이용하면 간단히 수행할 수 있다.

xcopy [src_folder] [taret_folder] /d /s

/D:m-d-y 지정된 날짜 이후에 바뀐 파일만 복사합니다.
날짜가 지정되지 않으면, 대상 파일보다 새로운 원본 파일만 복사합니다.
/S 비어 있지 않은 디렉터리와 하위 디렉터리를 복사합니다.




하지만 이 방법의 문제는 새롭게 생긴 파일이나 수정된 파일을 복사해 넣을수 있지만
원본에서 삭제된 파일을 대상폴더에서도 삭제할 수는 없다.
그러므로 계속적으로 파일이 쌓이기만 할 것이다.

xcopy 보다 좀더 다양한 옵션을 보유한 robocopy를 이용하여 아래와 같이 스크립트를 작성해 보았다.

SET src="d:"
SET tgt="e:backup"


SET cmd="d:\programs\tools\robocopy\robocopy.exe"
SET opt=/mir /xa:h /R:0

%cmd% %src% %tgt% %opt%

pause


robocopy에는 엄청나게 많은 옵션을 포함하고 있는데 위에서 사용된 옵션에 대해서만 설명한다.
자세한 것은 robocopy /? 로 하여 사용법을 확인하기 바란다.

Usage :: ROBOCOPY source destination [file [file]...] [options]

/MIR :: MIRror a directory tree (equivalent to /E plus /PURGE).
/XA:[RASHCNETO] :: eXclude files with any of the given Attributes set.
/R:n :: number of Retries on failed copies: default 1 million.


/mir 하위 디렉토리까지 포함하여 디렉토리 트리를 유지한다.
/xa:h hidden 파일은 제외하고 복사하고자 한다. svn등을 사용하는 경우 .svn 폴더에 버젼정보들이 존재하는데 불필요하게 복사되는 것을 막을 수 있을 것이다.
/r:0 복사 실패시 재시도 횟수를 지정한다. 0으로 지정하면 재시도를 하지 않는다.
------------------------------------------------------------------------------------------------------------------------------------------------
동기화 예제 >> robocopy srcDir tarDir /mt /ndl /nfl /mir
------------------------------------------------------------------------------------------------------------------------------------------------

1. 폴더 동기화
c:>robocopy d:\aaa e:\aaa /MIR

2. 폴더 동기화 + 특정 시간에 시작하기 ( 12시 30분에서 40분 사이에 시작하기 )
c:>robocopy d:\aaa e:\aaa /MIR /RH:1230-1240

3. 폴더 동기화 + 계속 모니터링 하면서 10분 간격으로 최소 10개 파일이 변경이 되면 동기화하기
c:>robocopy d:\aaa e:\aaa /MIR /MOT:10 /MON:10

4. 폴더 동기화 + 계속 모니터링 하면서 10분 간격으로 최소 10개 파일이 변경이 되면 동기화하기 + 로그 남기기
c:>robocopy d:\aaa e:\aaa /MIR /MOT:10 /MON:10 /LOG:log.txt

5. 드라이브 단위로 복사(원본 D:, 외장하드 Z:)
robocopy D:\ Z:\ /e /mir

6. 특정 폴더단위로 복사
a. (홍길동PC에서): robocopy c:\src Z:\hhh /e /mir
b. (주몽PC에서): robocopy z:\hhh C:\dst /e /mir

7. 기타 ghost스타일의 방법
dd if=/dev/hda1 of=/dev/hdb1
또는
cat /dev/hda > /dev/hdb

8. No Warranty
robocopy에서 /mir 옵션 잘못쓰면 Destination 쪽의 내용이 없어집니다. 조심하세요^^
dd 또는 cat 은 device 단위로 덮어쓰니까, 더욱 조심조심
(파티션 또는 디스크 단위로 정보가 날라갈 수 있습니다)

http://groups.google.com/group/longhorn-readiness-kr?lnk=li
http://www.sysnet.pe.kr/Default.aspx?mode=2&sub=3&pageno=0&detail=1&wid=19
http://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&DisplayLang=en