윈도우에서 파일복사, 파일백업시 유용하게 사용할 수 있는 ROBOCOPY(로보카피) 사용법 및 예제 코드 입니다.
1. ROBOCOPY란?
- 윈도우 명령 (CMD)에서 사용할 수 있는 파일 복사 도구 입니다.
- 윈도우 비스타 이상부터 기본 제공하는 파일 복사 도구로 파일 복사, 백업, 일치화 등 다양하게 응용할 수 있습니다.
- 로컬 드라이브, 네트워크 드라이브의 파일 복사, 백업 등을 지원합니다.
2. ROBOCOPY 장점
- 드라이브 전체 복사, 특정 폴더 복사, 특정 파일 복사 가능
- 파일 권한, 정보 (소유자, 특성, 생성일 등) 모두 복사 가능
- 폴더 또는 파일 복사 후 추가로 실행하면 변경 사항만 복사 가능해서 빠른 백업이 가능
- ROBOCOPY 실행 후 결과를 로그파일로 확인 가능
3. ROBOCOPY 사용법
ROBOCOPY의 기본 구문은 ROBOCOPY [원본(소스)_디렉토리] [대상(타켓)_디렉토리] [옵션] 입니다.
예를 들어 C:\AA 폴더를 D:\BACKUP_AA 폴더에 미러링 복사하는 구문 입니다.
ROBOCOPY C:\AA D:\BACKUP_AA /MIR
주로 파일백업 또는 서버와 서버간에 대량의 파일을 동기화 할 때 사용합니다.
예를들어 A서버는 중지하고 B서버를 사용 예정이면, A 서버의 데이터를 ROBOCOPY를 이용해서 주중 업무 외 시간에 B서버로 데이터 동기화 합니다.
그리고 주말에 Cut-off 일정을 잡고 주말에 남은 변경분 데이터만 동기화 서버간 데이터 이동을 유용하게 할 수 있습니다.
ROBOCOPY 증분 백업시 사용하는 옵션
robocopy “c:\aa” ” c:\bb ” /S /E /COPY:DAT /PURGE /MIR /DCOPY:DAT /R:1 /W:1 /NS /NFL /NDL /NP /LOG:”C:\RESULT.LOG”
ROBOCOPY 사용법 및 예제 구문과 자주 사용하는 옵션
- CMD 실행
윈도우 시작 버튼 > 실행에서 CMD 입력해서 CMD 창을 엽니다.
- ROBOCOPY 명령 실행
CMD 창에서 ROBOCOPY 명령을 실행 합니다.
아래는 제가 주로 사용하는 ROBOCOPY 옵션 입니다. 옵션에 대한 상세 설명은 아래 ROBOCOPY 옵션을 참고 하시면 됩니다.
robocopy “c:\aa” ” c:\bb ” /S /E /COPY:DAT /PURGE /MIR /DCOPY:DAT /R:1 /W:1 /NS /NFL /NDL /NP /LOG:”C:\RESULT.LOG” - ROBOCOPY 실행 결과 로그파일
실행 결과가 로그 옵션에서 지정한 위치에 저장됩니다.
4. ROBOCOPY 주의사항
ROBOCOPY 사용시 앞쪽이 원본디렉토리, 뒤쪽이 대상 디렉토리 입니다.
순서를 바꿔서 사용하면 데이터가 모두 삭제될 수 있으니 경로 확인을 필수로 하고, 임의 폴더를 만들어 사전 테스트 해보시는걸 추천합니다.
5. ROBOCOPY 옵션
ROBOCOPY 실행에 붙는 옵션은 다양하게 있으니, 필요한 상황에 맞게끔 아래 옵션을 조합해서 사용하면 됩니다.
옵션 | Description |
---|---|
/s | 복사본 하위 디렉터리입니다. 이 옵션은 빈 디렉터리를 자동으로 제외합니다. |
/e | 복사본 하위 디렉터리입니다. 이 옵션은 빈 디렉터리를 자동으로 포함합니다. |
/lev:<n> | 원본 디렉터리 트리의 상위 n 수준만 복사합니다. |
/z | 다시 시작 가능 모드에서 파일을 복사합니다. 다시 시작 가능 모드에서 파일 복사가 중단되면 Robocopy는 전체 파일을 다시 복사하지 않고 중단된 위치를 선택할 수 있습니다. |
/b | 백업 모드에서 파일을 복사합니다. 백업 모드를 사용하면 Robocopy가 파일 및 ACL(폴더 권한 설정)을 재정의할 수 있습니다. 이렇게 하면 권한이 충분한 계정으로 실행되고 있다고 가정하여 액세스 권한이 없을 수 있는 파일을 복사할 수 있습니다. |
/zb | 다시 시작 가능 모드에서 파일을 복사합니다. 파일 액세스가 거부되면 는 백업 모드로 전환합니다. |
/j | 접미사가 없는 I/O를 사용하여 복사합니다(대용량 파일의 경우 권장). |
/efsraw | EFS RAW 모드에서 모든 암호화 된 파일을 복사합니다. |
/copy:<copyflags> | 복사할 파일 속성을 지정합니다. 이 옵션의 유효한 값은 다음과 같습니다.D – 데이터A – 특성T – 타임스탬프를S – NTFS ACL(액세스 제어 목록)O – 소유자 정보U – 감사 정보이 옵션의 기본값은 DAT(데이터, 특성 및 타임스탬프를)입니다. |
/dcopy:<copyflags> | 디렉터리에 복사할 내용을 지정합니다. 이 옵션의 유효한 값은 다음과 같습니다.D – 데이터A – 특성T – 타임스탬프를이 옵션의 기본값은 DA(데이터 및 특성)입니다. |
수/초 | 보안이 있는 파일을 복사합니다(/copy:DATS와동일). |
/copyall | 모든 파일 정보 복사 (동일 /copy:DATSOU). |
/nocopy | 복사 하는 파일 정보가 없습니다 (유용 제거/). |
/secfix | 모든 파일에 대 한 파일 보안 픽스는 스토리를 건너뜁니다. |
/timfix | 모든 파일에 대해 파일 시간을 수정 된 건너뜁니다. |
/purge | 더 이상 원본에 존재 하는 대상 파일 및 디렉터리를 삭제 합니다. /e 옵션 및 대상 디렉터리와 함께 이 옵션을 사용하면 대상 디렉터리 보안 설정을 덮어쓰지 않을 수 있습니다. |
/mir | 디렉터리 트리를 미러링합니다 (동일 /e plus 제거/). /e 옵션 및 대상 디렉터리와 함께 이 옵션을 사용하면 에서 대상 디렉터리 보안 설정을 덮어씁니다. |
/mov | 파일을 이동 하 고 복사한 후 다른 소스에서 삭제 합니다. |
/move | 파일 및 디렉터리를 이동 하 고 복사한 후 다른 소스에서 삭제 합니다. |
/a +: [RASHCNET] | 복사 된 파일에 지정 된 특성을 추가합니다. 이 옵션의 유효한 값은 다음과 같습니다.R – 읽기 전용A – 보관S – 시스템H – 숨김C – 압축N – 인덱싱된 콘텐츠가 아닙니다.E – 암호화T – 임시 |
/ a-: [RASHCNET] | 복사 된 파일에서 지정 된 특성을 제거합니다. 이 옵션의 유효한 값은 다음과 같습니다.R – 읽기 전용A – 보관S – 시스템H – 숨김C – 압축N – 인덱싱된 콘텐츠가 아닙니다.E – 암호화T – 임시 |
만들기 / | 디렉터리 트리 및 길이가 0 인 파일만 만듭니다. |
fat / | 8.3 문자 길이 FAT 파일 이름을 사용 하 여 대상 파일을 만듭니다. |
/256 | 256자보다 긴 경로에 대한 지원을 해제합니다. |
/mon:<n> | 원본을 모니터링하고 n개 이상의 변경 내용이 검색되면 다시 실행됩니다. |
/mot:<m> | 원본을 모니터링하고 변경 내용이 검색되면 m분 안에 다시 실행됩니다. |
/MT[:n] | n 스레드를 통해 다중 스레드 복사본을 만듭니다. n은 1에서 128 사이의 정수여야 합니다. n의 기본값은 8입니다. 성능을 향상 시키려면 /log 옵션을 사용 하 여 출력을 리디렉션합니다./Mt 매개 변수는 /ipg 및 /efsraw 매개 변수와 함께 사용할 수 없습니다. |
/rh:hhmm-hhmm | 새 복사본을 시작할 수 있습니다 실행된 시간을 지정 합니다. |
/pf | 검사 파일 (당-불합격) 단위로에 번 실행합니다. |
/ipg:n | 저속 회선에서의 대역폭을 확보 하는 패킷 간 간격을 지정 합니다. |
/sl | 바로 가기 링크를 따르지 말고 링크의 복사본을 만듭니다. |
/nodcopy | 디렉터리 정보를 복사 하지 않습니다 (기본 /dcopy: DA 가 수행 됨). |
/nooffload | Windows 복사 오프 로드 메커니즘을 사용 하지 않고 파일을 복사 합니다. |
/compress | 해당 하는 경우 파일을 전송 하는 동안 네트워크 압축을 요청 합니다. |
옵션 | Description |
---|---|
/a | 있는 파일만 복사는 보관 특성이 설정 되어 있습니다. |
/m | 있는 파일만 복사는 보관 특성을 설정 하 고 다시 설정 된 보관 특성입니다. |
ia[RASHCNETO] | 지정된 된 특성의 모든 설정 되어 있는 파일만 포함 됩니다. 이 옵션에 사용할 수 있는 값은 다음과 같습니다.R -읽기 전용A -보관S -시스템H -숨김C -압축 됨N -콘텐츠 인덱싱되지 않음E -암호화T -임시O -오프 라인 |
a[RASHCNETO] | 지정된 된 특성의 모든 설정 되는 파일을 제외 합니다. 이 옵션에 사용할 수 있는 값은 다음과 같습니다.R -읽기 전용A -보관S -시스템H -숨김C -압축 됨N -콘텐츠 인덱싱되지 않음E -암호화T -임시O -오프 라인 |
/xf <filename>[ ...] | 지정 된 이름이 나 경로 일치 하는 파일을 제외 합니다. 와일드 카드 문자 ( * 및 *) 이 지원됩니다. |
/xd <directory>[ ...] | 지정 된 이름 및 경로가 일치 하는 디렉터리를 제외 합니다. |
/xc | 변경 된 파일을 제외합니다. |
/xn | 최신 파일을 제외합니다. |
/xo | 오래 된 파일을 제외합니다. |
/xx | 추가 파일 및 디렉터리를 제외합니다. |
/xl | “다” 파일 및 디렉터리를 제외합니다. |
/im | 수정 된 파일을 포함 합니다 (다른 변경 시간). |
/is | 동일한 파일을 포함합니다. |
/it | 조정 된 파일을 포함 합니다. |
/xc | 타임 스탬프는 같지만 파일 크기가 다른 기존 파일은 제외 합니다. |
/xn | 원본 디렉터리의 복사본 보다 최신인 기존 파일을 제외 합니다. |
/xo | 원본 디렉터리의 복사본 보다 오래 된 기존 파일을 제외 합니다. |
/xx | 대상에 있지만 원본에는 없는 추가 파일 및 디렉터리를 제외 합니다. 추가 파일을 제외 하면 대상에서 파일이 삭제 되지 않습니다. |
/xl | 원본에는 있지만 대상에는 없는 “요” 파일 및 디렉터리를 제외 합니다. 요 파일을 제외 하면 새 파일이 대상에 추가 되지 않습니다. |
/is | 동일한 파일을 포함합니다. 동일한 파일이 이름, 크기, 시간 및 모든 특성에서 동일 합니다. |
/it | “조정” 파일을 포함 합니다. 조정 된 파일의 이름, 크기 및 시간은 동일 하지만 특성은 서로 다릅니다. |
최대값<n> | 최대 파일 크기를 지정 합니다 ( n 바이트 보다 큰 파일 제외). |
/min<n> | 최소 파일 크기를 지정 합니다 ( n 바이트 보다 작은 파일 제외). |
maxage<n> | 최대 파일 보존 기간을 지정 합니다 ( n 일 또는 날짜 보다 오래 된 파일 제외). |
/minage:<n> | 최소 파일 사용 시간(n일 또는 날짜 이후의 파일 제외)을 지정합니다. |
/maxlad:<n> | 최대 마지막 액세스 날짜를 지정합니다(n 이후 사용되지 않은 파일 제외). |
/minlad:<n> | 최소 마지막 액세스 날짜(n이후 사용된 파일 제외)를 지정합니다. n이 1900보다 작은 경우 n은 일 수를 지정합니다. 그렇지 않으면 n은 YYYYMMDD 형식의 날짜를 지정합니다. |
/xj | 기본적으로 일반적으로 포함 된 연결 지점에서 제외 됩니다. |
/fft | FAT 파일 시간을 가정합니다(2초 자릿수). |
/dst | 1 시간 짜리 DST 시간 차이를 보정합니다. |
/xjd | 디렉터리에 대 한 연결 지점을 제외합니다. |
/xjf | 파일에 대 한 연결 지점을 제외합니다. |
옵션 | Description |
---|---|
/r:<n> | 실패한 복사에 대한 재시도 횟수를 지정합니다. n의 기본값은 1,000,000(1백만 번의 재시도)입니다. |
/w:<n> | 다시 시도 간의 대기 시간을 지정합니다(초). n의 기본값은 30(대기 시간 30초)입니다. |
/reg | 에 지정 된 값을 저장 된 /r 및 /w 레지스트리에서 기본 설정으로 옵션입니다. |
/tbd | 시스템 정의 공유 이름에 대 한 대기 함을 지정 합니다 (다시 시도 오류 67). |
옵션 | Description |
---|---|
/l | 파일이 나열 될 지 지정 합니다 (및 복사 되지 않으며, 삭제 또는 타임 스탬프). |
/x | 뿐만 아니라 선택 된 모든 추가 파일을 보고 합니다. |
/v | 자세한 정보 출력을 생성 하 고 건너뛴된 파일을 모두를 보여 줍니다. |
/ts | 출력 소스 파일 타임 스탬프를 포함합니다. |
/fp | 출력 파일의 전체 경로 이름을 포함합니다. |
/bytes | 바이트 형식으로 크기를 인쇄합니다. |
/ns | 파일 크기를 기록 되도록 지정 합니다. |
/nc | 파일 클래스를 기록 되도록 지정 합니다. |
/nfl | 기록하지 않을 파일 이름을 지정합니다. |
/ndl | 기록하지 않을 디렉터리 이름을 지정합니다. |
/np | 복사 작업의 진행률(지금까지 복사된 파일 또는 디렉터리의 수)이 표시되지 않도록 지정합니다. |
/eta | 복사 된 파일의 (ETA) 도착 예상된 시간을 보여 줍니다. |
/log:<logfile> | 로그 파일에 상태 출력을 작성합니다(기존 로그 파일을 덮어씀). |
/log+:<logfile> | (기존 로그 파일에 출력 추가) 하는 로그 파일에 상태 출력에 씁니다. |
/unicode | 유니코드 텍스트로 상태 출력을 표시합니다. |
/unilog:<logfile> | (기존 로그 파일을 덮어씀) 하는 유니코드 텍스트로 출력 로그 파일에 상태를 씁니다. |
/unilog+:<logfile> | (기존 로그 파일에 출력 추가) 하는 유니코드 텍스트로 출력 로그 파일에 상태를 씁니다. |
/tee | 로그 파일 뿐만 아니라 콘솔 창에 상태 출력에 씁니다. |
/njh | 작업 헤더가 없으면 임을 지정 합니다. |
/njs | 작업 요약 없음 임을 지정 합니다. |
옵션 | Description |
---|---|
/job:<jobname> | 매개 변수 명명 된 작업 파일에서 파생 시 키도 록 지정 합니다. |
/save:<jobname> | 매개 변수를 명명 된 작업 파일에 저장 되도록 지정 합니다. |
종료 / | 후 처리 (보려면 명령줄에 매개 변수)를 종료 합니다. |
/nosd | 원본 디렉터리가 지정 되었음을 나타냅니다. |
/nodd | 대상 디렉터리가 지정 되었음을 나타냅니다. |
/if | 지정된 된 파일에 포함 되어 있습니다. |