티스토리 뷰

OS/Windows

Windows 의 XCOPY 명령

negafix 2010. 6. 4. 17:44

백업 솔루션 도입 실패로 인해 노가다를 해야 했습니다.
Batch 파일을 통해 복사/압축 을 스케쥴러를 통해 처리해야 하는 것이지요.

Shell Script 를 작성하는데 있어서 Unix 혹은 Linux 의 경우 어느정도 익숙해져 있어서 괜찮은데
오히려 Windows 의 경우 Batch Script 에 익숙치 않다보니 많은 어려움을 겪게 됩니다.

그중 일부가 XCOPY 명령 입니다.
원본 디렉토리를 바로 압축하려고 했더니 접근권한과 관련한 에러가 발생합니다.
그래서 Copy 후에 복사본을 압축하려고 했는데 원본 디렉토리를 전체 복사하는 과정을 스크립트로
재현하려고 하니 이또한 어렵지 아니할수가 없습니다.

그냥 COPY 명령으로는 디렉토리 복사가 불가능하여 찾아보니 XCOPY를 사용해야 하는군요.
그런데 XCOPY의 사용도 그리 만만하지만은 않습니다.

다음은 XCOPY 명령의 사용방법 및 옵션입니다.
(XCOPY의 사용방법 및 옵션은 커맨드 상에서 "help xcopy" 를 입력해도 볼 수 있습니다.)

명령어 사용 형식
XCOPY 원본 [대상] [/A | /M] [/D[:데이터]] [/P] [/S] [/E] [/V] [/W] [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U] [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] [/EXCLUDE:파일1[+파일2][+파일3]....]

원본	복사할 파일을 지정합니다.
대상	새 파일의 디렉터리와 또는 파일 이름을 지정합니다.
/A	보관 특성을 가진 파일을 복사하며, 보관 특성을 수정하지 않습니다.
/M	보관 특성을 가진 원본 파일을 복사하며, 보관 특성을 지웁니다.
/D:m-d-y
	지정된 날짜 이후에 바뀐 파일만 복사합니다.
	날짜가 지정되지 않으면, 대상 파일보다 새로운 원본 파일만 복사합니다.
/EXCLUDE:파일1[+파일2][+파일3]...
	문자열을 포함하는 파일 목록을 지정합니다. 각 문자열은 파일의 다른 행에 있어야 합니다.
	일부 문자열이 복사할 파일의 절대 경로의 일부분과 일치하면 복사할 파일에서 제외됩니다.
	예를 들면, \obj\ 또는 .obj에서는 obj 디렉터리 내의 모든 파일을 제외하거나 .obj 확장자를
	갖는 모든 파일을 제외합니다.
/P	각 대상 파일을 만들기 전에 물어봅니다.
/S	비어 있지 않은 디렉터리와 하위 디렉터리를 복사합니다.
/E	디렉터리와 하위 디렉터리를 (비어 있어도) 복사합니다.
	/S /E 스위치와 같으며, /T를 수정하는 데 사용될 수 있습니다.
/V	각각의 새 파일을 확인합니다.
/W	복사하기 전에, 아무 키나 누르라고 프롬프트합니다.
/C	오류가 생겨도 복사를 계속합니다.
/I	대상을 찾을 수 없고 두 파일 이상을 복사하면, 대상을 디렉터리로 지정합니다.
/Q	복사하는 동안 파일 이름을 표시하지 않습니다.
/F	복사하는 동안 원본과 대상 파일의 전체 경로 를 표시합니다.
/L	복사는 하지 않고, 복사할 파일을 표시만 합니다.
/G	암호화 기능을 지원하지 않은 대상에 암호화된 파일을 복사하도록 허용합니다.
/H	숨겨진 파일과 시스템 파일도 복사합니다.
/R	읽기 전용 파일을 겹쳐 씁니다.
/T	파일은 복사하지 않고 디렉터리 구조만 복사합니다. 빈 디렉터리와 하위 디렉터리는 포함되지 않습니다.
	/T /E 스위치를 함께 사용하면 빈 디렉터리와 하위 디렉터리를 포함합니다.
/U	대상에 이미 있는 파일을 업데이트합니다.
/K	특성을 복사합니다. 일반적으로 Xcopy는 읽기 전용 특성을 지웁니다.
/N	만들어진 짧은 파일 이름을 사용하여 복사합니다.
/O	파일 소유권과 ACL 정보를 복사합니다.
/X	파일 감사 설정을 복사합니다(/O 의미).
/Y	이미 있는 대상 파일을 덮어쓸지를 확인하기 위해 묻는 것을 금합니다.
/-Y	이미 있는 대상 파일을 덮어쓸지를 확인하기 위해 묻습니다.
/Z	다시 시작할 수 있는 모드에서 네트워크 파일을 복사합니다. 

/Y 스위치가 COPYCMD 환경 변수에 나타날 수 있습니다.
명령줄에 있는 /-Y와 함께 무시될 수 있습니다.


상당히 많은 양의 옵션이 있지만 이걸 다 사용할 상황은 그리 많지 않을 것 같습니다.

제가 사용한 내용은 다음과 같습니다. (Batch Script 내용 중 일부입니다.)
set TOMCAT_PATH=C:\Tomcat6.0
set BACKUP_HOME=D:\ModuleBackup

attrib +A %TOMCAT_PATH%\*.* /S /D
xcopy %TOMCAT_PATH%\*.* %BACKUP_HOME%\temp\ /Q /M /Y /H /S /E /C

XCOPY 명령을 실행하기 전에 ATTRIB 을 실행하는데 이는 파일의 속성을 변경하는 명령어 입니다.
ATTRIB에 대해서는 나중에 따로 정리하려고 합니다.
위와 같이 했더니 Tomcat 디렉토리의 모든 내용들이 제대로 복사되었습니다.
참고로 /Q 옵션은 묻지도 따지지도 않고 지울때 사용하는 옵션입니다. ^^

'OS > Windows' 카테고리의 다른 글

윈도우 서비스 삭제 명령  (0) 2012.02.22
공지사항