Windows 11 Robocopy 멀티스레드 사용하여 복사 속도 높이는 방법

이 가이드는 Windows 11에서 Robocopy 멀티스레드 옵션을 사용해서 파일 복사 속도를 높이는 방법에 대해 설명합니다.

Windows 11에서 다른 드라이브로 파일을 복사해야 할 때는 일반적으로 파일을 선택하고 복사, 붙여넣기 프로세스를 사용하게 됩니다.

이 방법은 완벽하게 동작하지만 많은 파일을 전송하는데 시간이 오래 걸릴 수 있으므로, 복사 속도에 병목 현상이 발생할 수 있습니다.

이 때문에 많은 고급 사용자는 대안으로 Windows에 내장된 명령줄 도구인 ‘Robocopy(Robust File Copy)’를 사용합니다. 네트워크를 통해 다른 드라이브나 컴퓨터로 데이터를 빠르게 이동할 수 있는 다양한 기능을 제공하기 때문이죠.

특히 Robocopy 도구를 특별하게 만드는 한 가지 기능은 여러 파일을 동시에 복사할 수 있는 멀티스레드 기능입니다. 한 번에 하나의 파일만 복사하는 파일 탐색기의 복사 기능 대신 활용할 수 있습니다.

Windows 11에서 Robocopy 멀티스레드 사용하여 복사 속도 높이기

이 문서는 Windows 11에서 Robocopy 멀티스레드 기능을 사용하여 파일과 폴더를 다른 드라이브로 복사하려면 전송하는 방법을 살펴 봅니다.

01 Robocopy 멀티스레드 옵션 사용하는 방법

Windows 11에서 Robocopy 멀티스레드 기능을 사용하여 파일과 폴더를 다른 드라이브로 복사하려면 다음 단계를 수행합니다.

작업 관리자 성능 탭의 CPU 항목에서 논리 프로세서 개수 확인

먼저 단축키 Ctrl + Shift + ESC 키를 눌러 작업 관리자를 엽니다.

성능 탭의 CPU 항목을 클릭하고 ‘논리 프로세서’ 숫자를 확인, 시스템의 스레드 개수를 확인합니다.

Robocopy 도구를 사용하기 전 시스템에서 사용할 수 있는 스레드 개수를 확인하는데 도움이 됩니다.

🔦 참고 : CPU 스레드 개수가 16일 때 Robocopy 명령 사용 시 "/MT:16" 옵션으로 제한할 필요는 없습니다. 실제 사용 가능한 개수 이하로 설정하면 가장 안정적이고 효율적일 수 있지만, 원할 경우 32나 64까지 지정해도 됩니다. 다만 효율은 별개의 문제입니다.

🔗 Windows 11 CPU 코어 수 확인하는 방법

관리자 권한으로 Windows 터미널 실행

키보드 단축키 Win + R 키를 눌러 실행 대화 상자를 열고 wt 입력 후 Ctrl + Shift + Enter 키를 눌러 관리자 권한으로 터미널을 실행합니다.

Robocopy 멀티스레드 옵션 사용하여 파일 및 폴더 복사

다음 명령을 입력하고 Enter 키를 눌러 파일과 폴더를 다른 드라이브로 복사합니다.

robocopy C:\source\folder\ D:\target\folder /S /E /Z /ZB /R:3 /W:3 /TBD /NP /V /MT:16

위 명령에서 Source 및 Target 경로와 옵션을 변경합니다.

예를 들어 다음 명령은 C 드라이브 소스 파일 및 폴더에서 D 드라이브 대상 폴더로 데이터를 “16” 스레드를 사용하여 복사합니다.

robocopy C:\Users\HashTag\Downloads\7th_BirthDay D:\Robocopy_Test /S /E /Z /ZB /R:3 /W:3 /TBD /NP /V /MT:16
Robocopy 파일 복사 완료 후 결과 확인

파일 복사가 완료되면 파일 전송 성공 여부 및 속도 등 세부 정보를 확인할 수 있습니다.

이 정보는 자세한 정보를 출력하는 “/V” 옵션을 사용했을 때 나타납니다.

02 Robocopy 멀티스레드 옵션 설명

Robocopy 도구는 다양한 기능을 가지고 있으며, 위에 표시된 명령에서 다음 옵션을 사용하여 복사를 안정적이고 빠르게 수행할 수 있습니다.

  • /S : 하위 디렉터리를 복사하지만 비어 있는 디렉터리는 건너뜁니다.
  • /E : 비어 있는 디렉터리를 포함하여 하위 디렉터리를 복사합니다.
  • /Z : 재시작 모드에서 파일을 복사합니다.
  • /ZB : 재시작 가능 모드를 사용합니다. 액세스가 거부되면 백업 모드를 사용합니다.
  • /R:3 : 실패하기 전 3번 다시 시도합니다(다른 숫자를 지정할 수 있으며 기본값 100만).
  • /W:3 : 다시 시도하기 전에 3초 대기(다른 숫자를 지정할 수 있으며 기본값 30초).
  • /TBD : 공유 이름이 정의될 때까지 기다립니다(재시도 오류 67).
  • /NP : 진행률 표시 금지 – 복사 비율을 표시하지 않습니다.
  • /V : 건너뛴 파일을 보여주는 자세한 정보를 출력합니다.
  • /MT:n : n개의 스레드로 멀티스레드 복사를 수행합니다(기본값 8).
  • /compress : SMB 압축을 활성화하여 네트워크를 통한 전송 속도를 높입니다.

위 명령에서 가장 중요한 옵션은 “/MT” 입니다. 이 옵션은 Robocopy가 다중 스레드 모드로 파일을 복사할 수 있도록 구성하는 스위치입니다.

/MT 옵션 옆에 숫자를 설정하지 않으면 기본 값은 8, 이는 Robocopy에서 8개의 파일을 동시에 복사하려 한다는 것을 의미합니다.

그러나 Robocopy는 멀티스레드 숫자를 1개부터 최대 128개 까지 지원합니다.

이 명령에서는 “16”을 사용했지만, 더 높은 값으로 설정할 수 있습니다. 다만 값이 높을수록 리소스 사용량과 대역폭이 증가한다는 점만 유의하시기 바랍니다.

오래된 프로세서를 사용하는 경우 높은 값을 사용하면 오히려 성능에 악영향을 줄 수도 있습니다. 따라서 더 많은 스레드 개수로 명령을 실행하기 전에 테스트해보시기 바랍니다.

Robocopy 멀티스레드 테스트 방법(PowerShell 스크립트)

앞서 언급한 것처럼 CPU에서 사용 가능한 논리 프로세서 수는 동시에 처리할 수 있는 스레드의 물리적 한계를 뜻하지만, Robocopy 도구의 멀티스레드 옵션은 CPU 논리 프로세서 뿐만 아니라 I/O(디스크, 네트워크) 또한 크게 영향을 받습니다.

따라서 “/MT:16” 스위치를 구성해도 CPU에서 16 스레드만 사용하는 것은 아닙니다. Robocopy는 내부적으로 파일 단위로 스레드를 분배하므로, 실제 CPU 부하는 복사 파일 크기와 디스크 속도에 따라 달라질 수 있습니다.

예를 들어 일반 HDD에서 HDD 대상으로 복사하는 경우 I/O 병목 현상이 발생하므로, 오히려 너무 많은 스레드 개수는 비효율적일 수 있습니다. 그러나 SSD 간 파일 복사 시에는 스레드 수를 늘리면 속도를 향상 시킬 수 있습니다.

01 Robocopcy 멀티스레드 테스트 스크립트 작성

실제 대용량 파일을 복사하기 전 시스템에서 효율적인 스레드 개수를 파악할 수 있도록 멀티스레드 옵션 구성에 따른 실제 파일 복사 시간을 테스트 해 볼 수 있습니다.

⚠️ 주의 : 충분한 테스트를 거쳤지만 실제 중요한 데이터를 사용하지 않고, 임시로 만든 테스트 파일을 이용하는 것을 권장 드립니다. 필요한 경우 더미 파일 세트를 만들어 사용할 수도 있습니다.
Robocopy 멀티스레드 테스트 스크립트 생성

키보드 단축키 Win + R 키를 눌러 실행 대화 상자를 열고 notepad 입력 후 Enter 키를 눌러 메모장 앱을 실행합니다.

메모장 앱에서 다음 PowerShell 스크립트를 복사하고 붙여넣습니다.

# Robocopy 멀티스레드 성능 비교 스크립트

# 원본 및 대상 폴더 경로 설정
$source = "C:\SourceFolder"   # 복사할 폴더 경로 (수정 필요)
$destBase = "D:\Test_TargetFolder"  # 테스트 복사 대상 기본 경로 (수정 필요)

# 테스트할 스레드 수 목록
$threadCounts = @(8, 16, 32)

# 결과 저장용
$results = @()

Write-Host "`n==== Robocopy /MT 성능 테스트 시작 ====" -ForegroundColor Cyan

foreach ($mt in $threadCounts) {
    $dest = "$destBase`_$mt"
    Write-Host "`n[테스트] /MT:$mt 로 복사 중..." -ForegroundColor Yellow

    # 대상 폴더 초기화
    if (Test-Path $dest) { Remove-Item $dest -Recurse -Force }
    New-Item -ItemType Directory -Path $dest | Out-Null

    # 시간 측정 시작
    $startTime = Get-Date

    # Robocopy 실행
    robocopy $source $dest /E /MT:$mt /NFL /NDL /NJH /NJS /NP /R:0 /W:0 | Out-Null

    # 시간 측정 종료
    $endTime = Get-Date
    $duration = ($endTime - $startTime).TotalSeconds

    Write-Host "완료 - 걸린 시간: $duration 초" -ForegroundColor Green

    # 결과 저장
    $results += [PSCustomObject]@{
        MT_Thread = $mt
        Duration_Seconds = [math]::Round($duration, 2)
    }

    # 테스트 후 대상 폴더 삭제 (용량 관리)
    Write-Host "테스트 폴더 삭제 중..." -ForegroundColor DarkGray
    try {
        Remove-Item $dest -Recurse -Force -ErrorAction Stop
        Write-Host "$dest 폴더 삭제 완료" -ForegroundColor DarkGreen
    } catch {
        Write-Host "$dest 폴더 삭제 실패: $($_.Exception.Message)" -ForegroundColor Red
    }
}

Write-Host "`n==== 테스트 완료! 결과 요약 ====" -ForegroundColor Cyan
$results | Sort-Object Duration_Seconds | Format-Table -AutoSize

위 코드에서 사용된 옵션의 대략적인 설명은 다음과 같습니다.

  • C:\SourceFolder : 복사 원본 폴더
  • D:\Test_TargetFolder : 테스트 복사 대상 폴더 (자동으로 _8, _16, _32 형태로 생성)
  • /E : 하위 폴더 포함 복사
  • /NFL /NDL /NJH /NJS /NP : 로그를 간결하게 해서 성능 측정에 집중
  • /R:0 /W:0 : 복사 실패 시 다시 시도 안 함
파일 저장 시 확장자는 ps.1 지정

Robocopy 코드를 붙여 넣고 내용 수정 후 다음과 같이 파일을 저장합니다.

파일 이름은 사용자가 식별하기 쉬운 이름을 사용하되 확장자는 반드시 “.ps1”으로 지정합니다. 또한 파일 형식은 “모든 파일 (*.*)“, 인코딩은 “ANSI” 설정 후 저장하시기 바랍니다.

(선택 사항) 테스트 용도 더미 파일 생성 PowreShell 스크립트

실제 중요한 데이터는 사용하지 않고, 임시로 만든 더미 파일을 사용하고 싶다면 다음 스크립트를 사용하시기 바랍니다.

# 테스트 더미 파일 생성 (약 10MB 파일 100개)
$path = "D:\SourceFolder" # 테스트 소스 폴더 경로 (수정 필요)
if (!(Test-Path $path)) { New-Item -ItemType Directory -Path $path | Out-Null }

for ($i = 1; $i -le 100; $i++) {
    $file = "$path\File_$i.bin"
    fsutil file createnew $file 10485760 | Out-Null
}

테스트 더미 파일을 먼저 생성한 다음 Robocopy 테스트 수행 시 실제 복사는 진행되지만, 중요 데이터는 건드리지 않습니다.

02 Robocopcy 멀티스레드 테스트 수행

Robocopy 멀티스레드 테스트 준비가 완료되면, 저장된 PowerShell 스크립트 파일을 사용하여 테스트를 수행합니다.

관리자 권한으로 Windows 터미널 실행

키보드 단축키 Win + R 키를 눌러 실행 대화 상자를 열고 wt 입력 후 Ctrl + Shift + Enter 키를 눌러 관리자 권한으로 터미널을 실행합니다.

PowerShell 스크립트 파일 실행 전 스크립트 실행 정책 설정

다음 명령을 입력하고 Enter 키를 눌러 스크립트 실행 정책을 변경합니다.

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

PowerShell에서 보안 차단 없이 스크립트를 실행할 수 있도록 설정하는 명령입니다.

Robocopy 멀티스레드 테스트 스크립트 수행

스크립트 파일이 있는 경로로 이동한 다음 스크립트 파일을 실행합니다.

cd "C:\Scripts\Files\Path"
./Script_file.ps1

테스트가 완료되면 각 /MT 값에 따른 소요 시간이 정리되어 출력 됩니다.

출력 결과물을 확인하면 /MT 값이 높을 때 소요 시간이 더 줄어드는 것을 확인할 수 있습니다.

스크립트 파일에서 /MT 옵션 값 수정

필요한 경우 스크립트 파일에서 스레드 숫자를 변경하여 테스트할 수 있습니다.

# 테스트할 스레드 수 목록
$threadCounts = @(8, 16, 32, 64, 128)
Robocopy 멀티스레드 테스트

다만 앞서 언급한 것처럼 복사하려는 파일의 크기, 개수와 HDD, SDD, 네트워크 등 여러 가지 요소로 인하여 /MT 값이 높다고 무조건 좋은 성능을 보여주는 것은 아닙니다.

위 테스트 결과와 같이 8/16/32 소요 시간 대비, 64/128 지정 시 오히려 시간이 더 오래 걸리는 것을 확인할 수 있습니다.

Robocopy 멀티스레드 테스트

또한 특정 상황에서는 테스트 수행 시 8/16/32/64/128 순서대로, 오히려 실제 사용 가능한 논리 프로세서 개수보다 낮게 설정한 값이 오히려 더 빠른 경우도 있었습니다.

따라서 단순히 CPU 스레드 수가 아닌 여러 가지 상황을 종합적으로 고려하여 /MT 값을 사용하는 것이 좋습니다.

마치며

Robocopy /MT 옵션을 사용하여 스레드 수를 높이면 동시에 여러 파일을 복사할 수 있어 속도가 향상 될 수 있지만, 시스템 리소스 사용량도 함께 증가합니다.

따라서 무조건 높은 값을 지정하는 것이 최선은 아니며, 디스크 성능과 네트워크 환경에 따라 적절한 스레드 수를 조정하는 것이 중요합니다.

본문에서 살펴본 것처럼 테스트 스크립트를 직접 실행해 보면, /MT 값에 따라 복사 속도나 CPU 점유율이 어떻게 달라지는지 실질적으로 체감할 수 있습니다.

이러한 테스트를 통해 가장 효율적인 설정을 찾는 것이 Robocopy 도구를 제대로 활용하는 첫걸음이라고 할 수 있습니다.

🔗 Windows 11 Robocopy 네트워크 파일 복사 방법
🔗 Windows 11 Robocopy 파일 및 폴더 복사 제외 방법
🔗 Windows 11 Robocopy 손상된 파일을 건너뛰고 복사하는 방법

Leave a Comment