Xcopy 도구는 확장 복사를 나타내며, Windows에서 대량의 데이터를 복사하기 위한 인기있는 명령 줄 유틸리티입니다. 전통적인 copy
명령과 비교하여 Xcopy는 파일 및 폴더를 복사하거나 이동할 때 더 많은 기능과 스위치를 제공하여 더 좋은 제어를 할 수 있습니다.
이 가이드에서는 다양한 파일 복사 시나리오에 대해 Xcopy를 사용하는 방법을 배웁니다. 단일 파일, 여러 디렉토리, 필터 또는 제외 적용 등을 복사하는 방법을 알게 될 것입니다. 마지막에는 Xcopy를 사용하여 일상적인 파일 복사 작업을 수행할 수 있는 지식을 습득하게 될 것입니다.
시작해 봅시다!
전제 조건
이 가이드의 예제를 따라하기 위해 다음이 필요합니다.
- A Windows (server or client) computer. Xcopy comes built-in to Windows, and you don’t need to download anything else. This guide will use Windows 10 Build 1909.
- Xcopy는 명령 프롬프트 또는 PowerShell에서 작동하며, 이 문서는 이미 하나를 열어 두었다고 가정합니다.
Xcopy 명령 이해
Xcopy는 Windows 98부터 기본적으로 제공되는 명령 줄 유틸리티입니다. 이 도구는 %WINDIR%\system32 폴더 아래에서 실행 파일 이름이 xcopy.exe
인 것을 찾을 수 있습니다.
Windows copy
명령과 비교하여, Xcopy는 파일 및 디렉토리를 복사하는 데 훨씬 효율적입니다. 또한 Xcopy는 파일 복사 동작을 제어할 수 있는 더 많은 옵션을 제공합니다.
장점
이 가이드를 진행하면서 Xcopy를 사용하는 여러 가지 장점이나 이점을 배울 수 있습니다. 하지만 아래는 Xcopy를 사용하는 몇 가지 이점입니다.
- 대량의 파일과 디렉토리에 대한 더 빠른 복사 작업.
- 응용 프로그램 배포를 간소화합니다.
- 원본 디렉토리 구조를 복제할 수 있습니다.
- 소유자 및 액세스 제어 목록 (ACL) 정보를 유지한 상태로 파일을 복사합니다.
- 읽기 전용 파일을 복사하고 덮어씁니다.
- 파일 이름, 확장자 또는 경로를 기준으로 파일을 제외할 수 있습니다.
- 차등 백업에 유용한 업데이트된 파일을 식별할 수 있습니다.
- 스크립트와 통합하여 사용할 수 있습니다.
제한 사항
Xcopy만큼 멋진 도구라도 제한 사항이 있습니다. 이러한 제한 사항은 큰 문제가 되지는 않을 수 있지만, 뛰어들기 전에 알고 있는 것이 좋습니다.
- 열려 있는 파일을 복사할 수 없습니다.
- Windows 볼륨 그림자 복사 서비스 (VSS)를 지원하지 않습니다. 이 VSS의 부재로 인해 Xcopy는 실시간 운영 체제 볼륨의 백업에 적합하지 않습니다.
- 경로와 파일 이름의 길이가 254자를 초과하면 메모리 부족 오류가 발생합니다.
Xcopy 구문 참조
Xcopy를 사용하여 다양한 파일 및 폴더 복사 작업을 수행할 수 있습니다. 그러나 먼저 구문과 옵션을 이해해야합니다. Xcopy가 작동하는 방식을 변경하는 많은 옵션이 있습니다. 이러한 옵션을 이해하기 위해 다음 표에서 자세히 설명하겠습니다.
첫 번째 경로 지정은 원본 파일을 나타냅니다. 두 번째 경로 지정은 대상 파일을 나타냅니다.
[원본]
– 복사할 파일의 경로 이름(와일드카드 허용). 드라이브, 경로 및 복사할 파일을 지정해야합니다.[대상]
– 새 파일의 경로 이름. 대상 경로를 지정하지 않으면 명령은 파일을 원본과 동일한 경로에 복사합니다.[옵션]
– 아래 표에서 설명하는 옵션 중 하나 일 수 있습니다. 또는xcopy /?
명령을 실행하거나 Xcopy 온라인 문서를 방문하여 이러한 옵션을 확인할 수 있습니다.
원본 옵션
Switch | Explanation |
/A | Copy files that have the archive attribute. |
/M | Copy files with the archive attribute set, then switches off the archive attribute at the destination. Use this option when creating routine backups. |
/H | Copy hidden and system files and directories. The default value is N. |
/D:mm-dd-yyyy | Only copies that files with modification date on or after the given date. Without using this option, the command will copy only the files whose date/time is newer than the destination. |
/U | Only copies the files that already exists at the destination. |
/S | Copies folders and subfolders recursively excluding the empty one. |
/E | Copies folders and subfolders recursively including the empty one. |
/EXCLUDE:file1[+file2][+file3]… | Specify the text file(s) containing a list of strings to match absolute file paths to exclude. |
대상 옵션
Switch | Explanation |
/I | If the destination does not exist, using this option assumes that the destination is a directory and creates it. If you omit this option, the command prompts to confirm if the destination is a directory or a file. |
/R | Overwrites read-only files. |
/T | Creates a recursive folder structure at the destination without copying the files. This option does not include copying empty folders. To include empty folders, use this option together with the /E option. |
/K | Preserves the file attributes during the copy. Otherwise, the command will reset read-only attributes. |
/N | Copies files using their short file names. |
/O | Copies files including ownership and access control list (ACL) information. |
/X | Copies files including file audit settings and ACL information (implies using /O). |
복사 옵션
Switch | Explanation |
/W | Prompts for a key press before the copy process can start. |
/P | Prompts (Y/N) before creating each file. |
/Y | Suppresses the confirmation to overwrite destination file if exists. |
/-Y | Prompts to confirm overwriting an existing destination file. |
/V | Verifies that the source and destination file sizes are identical. |
/C | Ignores errors and forces the command to continue copying. |
/B | Copies only the symbolic link but not the link target file. |
/G | Copies encrypted files to a destination that does not support encryption. |
/J | Copies files without using the buffer. This switch useful when copying very large files. |
/Q | Suppresses the display of file names while copying. |
/F | Displays the full source and destination file paths while copying. |
/L | Only displays which files to copy without copying them. This switch can be useful when testing Xcopy commands with multiple options to assess the expected result. |
/Z | Copies files in restartable mode. Using this option, the command gracefully stops copying files during network interruption. The copying will resume after re-estabslishing the network connection. |
Xcopy 작업: 사용 예제
Xcopy 구문 및 옵션에 익숙해지셨으므로 하나 이상의 옵션을 조합하여 실제로 사용하실 준비가 되었습니다. 다음 섹션에서는 Xcopy를 사용하여 파일과 폴더를 복사하는 다양한 시나리오를 탐색하게 됩니다.
복사할 파일 목록 나열
파일 서버에는 복사하려는 대량의 파일이 포함되어있을 수 있으며, 이를 백업 위치로 복사하려면 Xcopy 명령을 먼저 테스트하는 것이 이상적입니다. 여러 개의 Xcopy 옵션을 결합하는 경우 Xcopy를 테스트하고 싶은 상황 중 하나입니다.
Xcopy와 함께 /L
스위치를 사용하여 명령을 실행했을 때 어떤 파일이 복사될 지를 나열하여 명령을 실행한 경우와 동일한 결과를 시뮬레이션 할 수 있습니다. 이렇게 하면 명령이 의도한 모든 파일을 복사할 것인지를 확인할 수 있습니다.
단일 파일 복사
Xcopy를 사용하여 어떤 옵션도 사용하지 않고 소스에서 대상으로 파일을 복사하는 가장 기본적인 작업은 다음과 같습니다. 예를 들어, 아래의 명령은 텍스트 파일을 대상 디렉토리로 복사하며, 파일 이름은 동일합니다.
또한 아래의 명령을 실행하여 소스 파일을 복사하고 대상 파일 이름을 변경할 수도 있습니다.
새 폴더로 파일 복사
Xcopy를 사용하면 파일을 복사하고 대상 디렉토리를 동시에 생성할 수 있습니다. 이를 위해 Xcopy 명령에 /I
옵션을 추가해야합니다.
예를 들어, 아래의 명령은 C:\Workarea\Demo 폴더의 파일을 D:\Workarea 폴더로 복사합니다. 대상 폴더가 존재하지 않으면 Xcopy는 /I
옵션을 사용하여 대상 폴더를 생성합니다.
모든 파일과 폴더를 재귀적으로 복사
한 폴더에서 다른 폴더로 파일을 복사하는 것 외에도 Xcopy를 사용하여 폴더와 파일을 재귀적으로 복사할 수 있습니다. 그리고 빈 폴더를 포함하거나 포함하지 않고 재귀적 복사를 수행할 수 있는 두 가지 방법이 있습니다.
모든 파일과 디렉토리를 복사하면서 빈 디렉토리를 무시하려면 Xcopy 명령어의 끝에 /S
옵션을 추가합니다. 아래에 표시된 것처럼
반면에 재귀적 복사 중 빈 디렉토리를 포함하려면 대신에 명령에 /E
옵션을 추가합니다.
숨겨진 및 시스템 파일 포함
Xcopy는 기본적으로 복사 작업에서 숨겨진 및 시스템 파일을 포함하지 않습니다. 그러나 Xcopy에 숨겨진 및 시스템 파일을 포함시키려면 명령에 /H
스위치를 추가합니다.
아래 명령은 숨겨진 및 시스템 파일을 포함하여 모든 파일을 재귀적으로 복사합니다. 이 명령은 또한 오류를 무시하고 대상 폴더를 생성하며 기존 파일을 덮어씁니다.
읽기 전용 파일 속성 보존
Xcopy가 처리하고 보존할 수 있는 다른 속성은 파일의 읽기 전용 속성입니다. Xcopy가 읽기 전용 파일을 복사할 때 기본적으로 대상에서 파일의 읽기 전용 속성을 제거합니다. Xcopy가 읽기 전용 속성을 제거하지 않도록 하려면 명령에 /K
스위치를 추가합니다.
예를 들어, 아래 명령은 읽기 전용 파일을 다른 위치로 복사하고, 결과적인 대상 파일은 여전히 읽기 전용 속성을 가지게 됩니다. 이 명령은 또한 대상 파일이 이미 존재하는 경우에는 해당 파일을 덮어씁니다.
읽기 전용으로 파일을 보존하는 부작용으로 인해 Xcopy는 나중에 동일한 파일을 덮어쓸 수 없습니다. 그러나 /R
스위치를 추가하여 Xcopy가 읽기 전용 파일을 덮어쓸 수 있습니다.
복사할 파일 필터링
소스 폴더와 하위 폴더에 여러 파일이 있는 경우 복사하려는 파일을 필터링하는 방법으로 와일드카드를 입력할 수 있습니다. Xcopy를 사용하면 다음과 같은 명령으로
원하는 파일만 재귀적으로 .cs 확장자가 있는 파일만 C 드라이브의 루트에서 E 드라이브의 루트로 복사합니다. 이 명령은 또한 오류를 무시하고 확인을 요청하지 않고 기존 파일을 덮어씁니다.
복사에서 파일과 폴더 제외하기
A powerful feature of Xcopy is its ability to exclude files from the copy process. To use this feature, you can leverage the /EXCLUDE
switch. This switch accepts the names of the file(s) that contain the exclusion lists.
먼저 제외 목록을 포함하는 파일을 만들거나 보유해야 합니다. 예를 들어 다음과 같은 항목을 포함하는 텍스트 파일인 Exclude.txt 파일을 가질 수 있습니다. 제외 파일에는 특정 파일 이름, 파일 확장자 및 폴더를 항목으로 포함할 수 있습니다.
제외를 사용하여 Xcopy를 실행하려면 아래 명령을 실행하고 제외 파일의 전체 경로를 /EXCLUDE
스위치에 지정하십시오. 이 명령은 C:\Workarea\XCopyDemo\Exclude.txt 파일을 사용합니다.
결과는 무엇인가요? Xcopy는 파일을 복사하지만 xyz.txt, Exclude.txt, .pdf 및 .png 확장자를 가진 모든 파일 및 exclude 디렉토리 하위의 모든 파일을 건너뜁니다.
차이 복사 수행
특정 위치에서 파일을 백업해야 할 때 Xcopy에는 차이 백업을 수행할 수 있는 옵션이 있습니다. 모든 파일을 복사하는 대신 차이 백업은 수정 날짜가 지정한 날짜 이후인 파일만 복사합니다. 이를 위해 /D:m-d-y
스위치를 사용합니다.
예를 들어, 2021년 4월 1일 이후에 수정된 파일만 복사하려면 아래 명령을 실행하십시오. 또한, 이 명령은 재귀적으로 복사를 수행하며 오류를 무시하고 대상지에 있는 기존 파일을 덮어씁니다.
/D
옵션으로 날짜를 지정하지 않으면 Xcopy는 대상 파일보다 새로운 소스 파일만 복사합니다.
아카이브 속성을 기반으로 파일 복사하기
일반적으로 백업 프로그램은 백업 작업 후 파일의 아카이브 속성을 제거합니다. 파일을 수정한 후(즉, 편집하고 저장한 후), Windows는 자동으로 파일의 아카이브 속성을 재설정합니다.
Xcopy를 사용하여 파일을 백업하는 스크립트를 만들 경우, 아카이브 속성을 사용하여 파일을 복사하거나 백업할지 여부를 결정할 수 있습니다.
아카이브 속성이 있는 파일을 복사하려면 /A
및 /M
스위치를 활용할 수 있습니다. 어떤 스위치를 사용할지는 파일의 아카이브 속성을 보존할지 여부에 따라 달라집니다.
다음 명령은 아카이브 속성이 있는 파일의 재귀적 복사를 수행합니다. 대상 파일은 /A
스위치로 인해 복사 후에도 아카이브 속성이 유지됩니다.
반면, 소스 파일의 아카이브 속성을 복사 후 대상지에서 제거하려면 /M
스위치를 지정하십시오.
파일 소유자 및 ACL 정보 보존
전체 프로필 폴더의 백업을 만드는 상상을 해보십시오. 각 파일은 다른 소유자 또는 고유한 권한을 가질 수 있습니다. 파일을 복원해야 할 경우, 동일한 소유자와 권한을 지키고 싶을 것입니다.
이렇게 하면 전체 프로세스가 원활해 보이며 사용자는 여전히 이전과 같은 파일에 대한 액세스 권한을 가질 수 있습니다. 그러나 먼저 기존 소유자와 액세스를 유지하면서 파일을 백업하는지 확인해야 합니다.
파일을 복사하고 소유자와 ACL 정보를 유지하려면 아래의 예시와 같이 xcopy
명령에 /O
매개변수를 추가하십시오.
소유자와 ACL 정보를 유지하는 것 외에도 파일의 감사 설정을 포함할 수도 있습니다. 파일 감사 설정을 복사하는 것은 조직에서 파일을 감사하기 위해 그룹 정책 개체 (GPO)를 적용하는 경우 유용할 수 있습니다.
Xcopy로 파일을 복사할 때 파일 감사 설정을 포함하려면 /X
스위치를 사용하십시오. /X
스위치는 /O
스위치도 함께 적용되므로 두 스위치를 동시에 사용할 필요가 없습니다.
네트워크를 통해 파일과 폴더 복사하기
Xcopy는 동일한 디스크 또는 다른 디스크의 위치 간에 파일을 복사할 수 있는데, 네트워크를 통해 파일을 복사하는 것도 가능합니다. 하지만, 네트워크를 통한 파일 복사는 항상 신뢰성이 높지 않습니다. 네트워크 연결은 일시적인 중단이 발생할 수 있으며, 어떤 경우에는 전체 연결 손실이 발생할 수도 있습니다.
다행히도, Xcopy를 재시작 가능한 모드에서 실행할 수 있습니다. 즉, 복사 진행 상황이 네트워크 오류로 인해 중지되더라도, 네트워크 연결을 다시 설정한 후에 복사를 재개할 수 있습니다. Xcopy를 재시작 가능한 모드에서 실행하려면 명령에 /Z
스위치를 추가해야 합니다.
예를 들어, 아래의 명령은 C:\Workarea 폴더에서 네트워크 위치로 재귀적인 파일 복사를 수행합니다. /Z
매개변수를 사용하면 Xcopy가 재시작 가능한 모드에서 실행됩니다.
/Z
스위치를 사용하면 Xcopy는 파일 복사 진행 상황을 백분율로 표시합니다.
버퍼되지 않은 I/O를 사용하여 파일 복사하기
버퍼된 I/O는 운영 체제가 파일 시스템 캐시에서 디스크 읽기와 쓰기를 버퍼링하는 방식을 말합니다. 버퍼링은 동일한 파일에 대한 후속 읽기와 쓰기를 가속화하지만, 그에는 비용이 따릅니다. 따라서, 대용량 파일을 복사할 때는 버퍼되지 않은 I/O(또는 원시 파일 복사)가 선호되는 방법입니다.
이 복사 방법은 파일 시스템 캐시 오버헤드를 줄이고 대량의 파일 데이터로 인해 파일 시스템 캐시가 쉽게 지워지는 것을 막습니다.
비버퍼 I/O를 사용하여 대용량 파일을 복사하려면 아래와 같이 Xcopy 명령에 /J
스위치를 추가할 수 있습니다.
확인을 포함한 파일 복사
다른 작업과 마찬가지로 파일 복사 작업은 항상 100% 성공적인 결과를 보장하지는 않을 수 있습니다. 가시적인 오류가 없어도 일부 파일은 전송 중에 손상될 수 있습니다.
Xcopy를 사용하면 소스 파일과 대상 파일의 크기를 기반으로 목적지와 소스 파일이 복사 후 동일한지를 확인하기 위해 /V
스위치를 사용할 수 있습니다. 동일한 소스와 대상 파일은 복사가 성공적이고 파일이 손상되지 않았음을 나타냅니다.
아래 명령은 C:\Workarea\XCopyDemo
에서 모든 파일을 C:\Workarea\Backup
으로 복사하고 /V
스위치를 사용하여 각 파일을 확인합니다. /F
스위치는 소스 및 대상 파일의 전체 경로를 표시합니다.
암호화된 파일 복사
Xcopy는 암호화를 지원하지 않는 대상에 암호화된 파일을 복사하는 기능도 제공합니다. /G
스위치를 사용하면 Xcopy는 암호화된 소스 파일을 복사하고 복호화된 대상 파일을 생성합니다.
이 복사 모드는 특히 네트워크 공유나 암호화 파일 시스템(EFS)이 아닌 볼륨에 암호화된 파일을 백업할 때 유용합니다.
폴더 구조 복사
일부 상황에서는 백업 스크립트나 프로그램이 파일을 소스에서 복사하기 전에 대상을 사전에 예약하는 경우도 있습니다. 필요한 경우, Xcopy를 사용하여 내용을 제외한 소스 폴더 구조를 복제할 수 있습니다.
이를 위해 Xcopy 명령을 /T
스위치와 함께 실행하면 됩니다. /T
스위치를 사용하면 Xcopy가 대상으로 디렉토리 트리 구조만 복사하고 비어있는 디렉토리는 무시합니다.
또한 아래의 예시 명령과 같이 /E
스위치를 추가하여 비어있는 디렉토리를 포함할 수도 있습니다.
일반적인 오류
문제가 발생할 수 있는 경우에는 발생할 가능성이 높습니다. 볼륨에 관계없이 파일을 복사할 때도 마찬가지입니다. 아래는 Xcopy에서 발생할 수 있는 일반적인 오류입니다.
잘못된 매개변수 개수
이 오류는 입력한 명령에 공백 문자가 포함되어 있는 경우에 주로 발생합니다. 이 오류를 피하기 위해 공백 문자가 포함된 소스 또는 대상 경로를 입력할 때는 경로를 큰따옴표로 둘러싸야 합니다.
예를 들어, 경로가 C:\Documents and Settings라면 경로를 “C:\Documents and Settings”와 같이 입력하세요.
순환 복사 수행 불가
이 오류는 복사 중인 소스 디렉토리에 대상 디렉토리가 포함되어 있는 경우 발생합니다. 이 경우 Xcopy는 루프에 빠져 오류가 발생합니다. Xcopy를 사용할 때는 모든 디렉토리와 서브디렉토리를 복사하는 경우 대상은 완전히 독립적인 디렉토리나 디스크여야 합니다.
구문 오류
이 오류는 명령어에 잘못된 또는 유효하지 않은 구문을 입력한 경우 발생합니다. 예를 들어, 경로를 따옴표로 지정했지만 끝 따옴표가 누락된 경우에 이 오류가 발생할 수 있습니다.
아래의 명령어는 대상 경로에서 닫는 이중 따옴표 문자가 누락된 예입니다.
종료 코드
Xcopy는 작업의 종료 코드를 반환하여 작업이 성공했는지 여부를 확인하는 데 유용합니다. 종료 코드는 작업이 받은 종료 코드에 기반하여 작업이 수행되는 경우 특히 유용합니다.
명령 프롬프트는 종료 코드를 %ErrorLevel%
변수에 저장합니다. 그런 다음 코드는 Xcopy 작업의 결과를 결정하기 위해 이 변수의 값을 검사할 수 있습니다.
아래는 모든 Xcopy 종료 코드를 나열한 테이블입니다.
Exit Code | Purpose |
0 | This exit code means that there were no errors. |
1 | This exit code means that Xcopy did not find any files to copy. |
2 | This exit code means that the Xcopy was terminated by pressing CTRL+C. |
4 | This exit code means that an initialization error happened either because of insufficient memory or disk space or because you’ve entered invalid syntax. |
5 | This exit code means that there was a disk write error. |
Xcopy와 스크립팅
Xcopy를 상호 작용적으로 사용하는 것 외에도, 스크립트를 사용하여 작업을 자동화하는 경우 Xcopy의 이점을 최대한 활용할 수 있습니다. 아래에는 Xcopy를 스크립트에서 사용하는 몇 가지 예제가 있습니다.
오류 처리를 포함한 Xcopy 배치 스크립트
이 예제 배치 스크립트는 오류 처리 논리를 사용하여 모든 파일을 재귀적으로 복사합니다. 그리고 오류 또는 종료 코드에 따라 스크립트는 오류의 원인을 보여주는 메시지를 반환합니다.
배치 파일을 생성하려면 선택한 텍스트 또는 코드 편집기를 열고 아래의 코드를 복사하여 편집기에 붙여넣은 다음, 파일을 copycomplete.bat로 저장하면 됩니다.
다음으로 스크립트를 실행하려면 명령 프롬프트 또는 PowerShell에서 스크립트의 이름을 호출한 다음 소스 및 대상 폴더를 입력하십시오.

Xcopy 배치 스크립트로 데이터 이동하기
Xcopy에는 소스에서 대상으로 파일과 폴더를 이동하는 기능이 내장되어 있지 않습니다. 그러나 임시 방편으로, 먼저 파일을 Xcopy하여 대상으로 복사한 다음, 소스에서 파일을 삭제하는 스크립트를 만들 수 있습니다.
아래 코드는 파일을 대상으로 복사합니다. 복사 프로세스가 성공적으로 완료되면, 스크립트는 소스에서 파일을 삭제합니다. 아래 코드를 복사하고 movefiles.bat이라는 새 파일에 저장하세요.
다음으로, 명령 프롬프트 또는 PowerShell에서 이전 예제와 같이 movefiles.bat 배치 파일을 실행하려면, 이름 다음에 소스 경로와 대상 경로를 지정하세요.
결론
대량으로 파일을 복사하거나 파일 백업을 생성하는 작업에 Xcopy는 작업을 더 쉽게 만들어주는 훌륭한 도구입니다. Xcopy는 많은 옵션을 제공하여 동작을 사용자의 요구에 맞게 사용자 정의할 수 있으며 정확하고 빠른 파일 복사 결과를 제공합니다.