같은 1GB인데, 동영상 한 편보다 사진 폴더 복사가 느린 이유는?

· 업데이트: · · Windows, Windows 11, 파일 복사, 성능, SSD, NAS, ZIP, robocopy

같은 1GB라도 파일을 열고 만들고 닫는 작업의 횟수에 따라 복사 시간이 달라집니다. 파일 수와 대기 시간이 복사에 미치는 영향을 알아보고, ZIP과 병렬 복사를 같은 조건에서 비교하는 방법을 설명합니다.

그림의 실선은 항상 성립하는 관계, 점선은 조건이 붙는 관계입니다(성립 조건은 상세 페이지의 관계별 설명에 적혀 있습니다). 관계 전체 목록(총 11건, 근거와 확신도 포함)과 주요 개념의 정의는 지식 맵 상세 페이지에 정리되어 있습니다(일본어). 데이터: JSON-LD / Turtle

문제 / 질문

1GB 동영상은 금방 복사되었는데, 합계가 1GB인 사진 폴더는 좀처럼 끝나지 않습니다. SSD나 고속 LAN을 사용하는데도 작은 파일을 많이 옮기면 표시되는 전송 속도가 떨어지는 이유는 무엇일까요?

이 글에서는 “전체 용량이 같은데도 복사 시간이 달라지는 이유는 무엇인가?”와 “파일을 ZIP으로 하나로 묶거나 병렬로 복사하는 방법이 내 환경에서 도움이 되는지 어떻게 확인할 수 있는가?”라는 두 가지 질문에 답합니다. 파일이 사진이라는 이유만으로 속도 저하나 고장을 판단하지 않고, 파일 수와 파일을 실제로 사용할 수 있게 될 때까지 걸리는 시간을 비교합니다.

적용 환경

이 글은 Windows 11에서 로컬에 실제로 저장된 사진이나 문서 같은 일반 파일을 외장 드라이브 또는 SMB 공유로 연결된 NAS에 복사하는 일반 사용자를 대상으로 합니다. NAS는 네트워크를 통해 사용하는 저장 장치이며, SMB는 Windows 파일 공유에 주로 사용되는 통신 프로토콜입니다.

작업 예에서는 파일 탐색기, Windows PowerShell 5.1 이상의 Compress-Archive, Windows에 기본으로 포함된 robocopy를 사용합니다. 명령 예를 실행하려면 복사 원본에 대한 읽기 권한과 실험용 폴더 및 복사 대상에 파일을 만들고 쓸 수 있는 권한이 필요합니다. 관리자 권한으로 접근 제어를 우회하는 절차가 아닙니다.[S7: Compress-Archive] [S9: robocopy]

NAS 자체에서 ZIP의 압축을 해제하려면 해당 NAS 제품이 그 기능을 제공하고 사용자에게 그 기능을 사용할 권한이 있어야 합니다. 서버용 SMB 문서는 동작 원리를 설명하는 근거로 인용하며, 모든 NAS에 같은 설정이나 기능이 있다고 전제하지 않습니다.

이 설명은 2026년 9월 17일에 확인한 공식 문서를 바탕으로 합니다. 아래 수치 예는 명시한 가정에 따른 계산이며, 작업 내용은 독자가 자신의 환경에서 실행할 수 있는 확인 절차입니다. 특정 Windows PC, SSD 또는 NAS에서 측정한 결과가 아닙니다. 온라인에서만 사용할 수 있는 클라우드 파일을 내려받는 작업과 완전한 백업을 설계하는 방법은 이 글의 범위에 포함하지 않습니다.

답변 / 해결 방법

복사 시간을 결정하는 요인은 전체 바이트 수만이 아닙니다. 파일을 만들고 관리하고 처리를 마치는 작업을 파일마다 반복하면, 파일 내용을 전송하는 데 쓰이는 시간 외의 부담이 커집니다. SMB 공유에서는 원격 시스템이 요청을 처리하고 응답을 돌려줄 때까지 기다리는 시간도 영향을 줍니다. 파일을 ZIP으로 하나로 묶거나 robocopy로 병렬 복사하면 도움이 될 수 있지만, 반드시 더 빨라지는 것은 아닙니다.[S1: Slow SMB files transfer speed]

먼저 전체 크기와 파일 수를 모두 기록하고, 같은 경로를 거쳐 같은 최종 저장 위치로 복사하면서 각 방법을 비교합니다. ZIP은 ZIP을 만들고 전송한 뒤 필요하면 압축을 해제하기까지 걸린 시간을 모두 합쳐 비교합니다. 병렬 복사는 같은 데이터와 옵션을 사용하면서 병렬 처리 수만 바꾸어 비교합니다. 속도와 복사 성공 여부는 각각 따로 확인해야 합니다.

정의

파일 복사는 파일 내용을 다른 위치에 쓰는 작업만을 뜻하지 않습니다. 복사 대상에 파일을 만들고 필요한 특성, 날짜와 시간 등의 정보도 설정해야 합니다. 이 글에서는 파일마다 필요한 처리와 대기 시간을 내용 전송 시간과 구분하여 “파일당 추가 시간”이라고 부릅니다.[S2: CreateFileW function]

“작은 파일”은 사진을 달리 부르는 말이 아닙니다. 큰 사진 몇 장과 작은 이미지 수만 개는 조건이 서로 다릅니다. 비교할 때는 폴더의 “크기”에 해당하는 전체 내용 바이트 수와 파일 수를 함께 살펴야 하며, “디스크 할당 크기”만 맞추어서는 안 됩니다.

이사할 때 전체 무게가 같더라도 큰 상자 하나와 주소를 하나씩 확인해야 하는 소포 1만 개는 필요한 수고가 다릅니다. 마찬가지로 “1GB를 운반하는 작업”과 “파일 1만 개를 처리하는 작업”은 서로 다른 일입니다.

전체 용량은 같지만 파일 수는 다른 경우데이터가 모두 합계 1GB이더라도 파일 하나와 많은 파일은 필요한 파일 관리 작업 횟수가 서로 다릅니다.합계 1GB의 데이터큰 파일 1개작은 파일 1만 개파일별 작업 횟수가 적음파일별 작업을 반복

그림 1: 바이트 수가 같다고 해서 파일 수도 같은 것은 아닙니다.

아래 설명용 데이터에서는 1GB를 1,000,000,000바이트로, 100KB를 100,000바이트로 계산합니다. 비교할 때는 Windows나 다른 도구에 반올림되어 표시된 값에 의존하지 말고 실제 바이트 수를 기록합니다.

역할

복사의 목적은 필요한 파일 묶음을 원하는 위치에서 사용할 수 있게 만드는 것입니다. 전송 창에 높은 MB/초 값이 표시되더라도 ZIP을 만들거나 압축을 해제하는 데 오래 걸리면 그 목적을 더 빨리 달성하는 것은 아닙니다.

ZIP은 전송할 파일을 하나로 묶고, 병렬 복사는 여러 파일을 처리하면서 생기는 대기 시간을 서로 겹치게 합니다. 한 파일이 응답을 기다리는 동안 다른 파일의 전송을 진행할 수 있는 것이며, 지연 시간을 더하는 방식이 아닙니다. 어느 방법도 네트워크 회선이나 디스크 자체를 더 빠르게 만들지는 않으며, 적합한 조건도 서로 다릅니다.[S1: Slow SMB files transfer speed] [S4: Performance Tuning for SMB File Servers]

복사 방법을 선택할 때의 목표같은 파일 묶음을 원하는 위치에 놓고 내용을 확인한 뒤, 실제로 사용할 수 있을 때까지 걸리는 시간을 비교합니다.같은 파일 묶음을 복사 대상에 저장복사 완료개수와 내용 확인사용 가능할 때까지 걸린 시간 비교

그림 2: 방법을 선택하는 목적은 같은 파일 묶음을 올바르게 사용할 수 있게 만드는 것입니다.

큰 파일 1개는 파일 수에 따른 차이를 관찰하기 위한 대조군입니다. 작은 파일 1만 개와 구조가 다르므로 실제 작업에서 그 파일들을 대신할 수는 없습니다. 실제 방법을 선택할 때는 원래의 개별 파일을 같은 최종 저장 위치에 놓는 것을 목표로 합니다.

구성

내용, 관리 정보와 복사 경로

파일을 복사할 때는 복사 원본을 열고, 복사 대상 파일을 만들고, 내용을 읽고 쓰고, 필요한 정보를 설정한 뒤 파일을 닫습니다. Windows에서 파일을 여는 작업에는 요청한 접근 권한과 다른 프로세스가 그 파일을 동시에 열 수 있는지를 정하는 공유 모드도 포함됩니다.[S2: CreateFileW function]

이름, 크기, 날짜와 시간처럼 파일을 관리하는 데 사용하는 정보를 메타데이터라고 합니다. NTFS는 MFT(마스터 파일 테이블) 등의 구조에 파일마다 관리 정보를 기록합니다. 따라서 사진을 복사하는 작업은 화소 데이터만 쓰면 끝나는 구조가 아닙니다.[S3: Master File Table]

파일 하나를 복사할 때 필요한 작업파일마다 복사 원본을 열고, 복사 대상 파일을 만들고, 내용을 전송하고, 정보를 관리한 뒤 파일을 닫아야 합니다.복사 원본 열기복사 대상 파일 만들기내용 읽기 및 쓰기정보를 설정하고 닫기다음 파일에서도 반복

그림 3: 개념적인 흐름입니다. 실제 처리 순서와 병렬 실행 방식은 복사 방법과 파일 시스템에 따라 달라집니다.

확인할 대상 비교할 때 같게 유지할 조건
파일 내용 전체 바이트 수, 파일 수, 내용, 압축 가능성.
저장 장치와 관리 작업 복사 원본 및 복사 대상 장치, 여유 공간, 파일 시스템, 동시에 발생하는 부하.
복사 경로와 방법 로컬 저장소 또는 SMB 공유, 네트워크, 복사 애플리케이션, 압축 해제를 실행하는 장치.

SSD를 사용하더라도 파일 관리 작업은 남아 있습니다. 큰 파일의 순차 전송 속도만으로 파일 1만 개의 복사 시간을 추정하거나, 작은 파일 복사를 모두 임의 입출력이라고 단정해서는 안 됩니다. 내용이 배치되는 방식과 파일별 처리 부담을 나누어 살펴야 합니다.[S3: Master File Table] [S1: Slow SMB files transfer speed]

작동 원리

전체 용량이 같은데도 시간이 달라지는 원리를 응답 대기, ZIP으로 파일을 하나로 묶는 효과, 압축 해제가 이루어지는 위치의 세 가지로 나누어 설명합니다.

NAS에서는 대역폭과 응답 대기가 서로 다르게 작용합니다

SMB 공유를 사용할 때 PC는 파일 작업을 요청한 뒤 원격 파일 시스템이 이를 처리하는 동안 기다리고, 처리된 응답이 돌아올 때까지 다시 기다릴 수 있습니다. 작은 파일을 많이 차례대로 복사하면 내용을 보내는 시간보다 파일 생성과 같은 작업에 걸리는 시간의 비중이 커져서 네트워크 대역폭을 충분히 사용하지 못할 수 있습니다.[S1: Slow SMB files transfer speed]

네트워크를 통한 파일 작업PC가 보낸 작업 요청은 네트워크를 거쳐 원격 파일 시스템에서 처리되고, 응답이 다시 PC로 돌아옵니다.PC가 파일 작업 요청요청이 네트워크를 통과원격 시스템이 파일 처리응답이 PC로 돌아옴

그림 4: 한 번에 많은 데이터를 운반하는 능력과 작업마다 빠르게 응답하는 능력은 서로 다릅니다.

대역폭은 도로의 차선 수에, 지연 시간은 응답이 도착할 때까지 걸리는 시간에 비유할 수 있습니다. 바이러스 백신 검사도 파일마다 필요한 처리 시간에 영향을 줄 수 있습니다.[S1: Slow SMB files transfer speed]

그렇다고 해서 파일마다 항상 고정된 횟수로 네트워크 통신이 발생한다는 뜻은 아닙니다. SMB는 여러 작업 요청을 한꺼번에 보낼 수 있으며, 캐시와 병렬 처리도 대기 방식에 영향을 줍니다. 가정용 LAN과 원격 공유 폴더를 같은 조건으로 보아서는 안 됩니다.[S5: Sending Compounded Requests] [S8: File Caching]

ZIP의 압축 효과와 파일을 하나로 묶는 효과를 따로 평가합니다

ZIP은 데이터를 압축할 수도 있고, 여러 파일을 하나의 컨테이너로 묶을 수도 있습니다. JPEG 데이터는 이미 압축된 형식이므로 JPEG 파일을 ZIP으로 묶어도 용량이 크게 줄지 않을 수 있습니다. 그래도 전송해야 할 파일 수를 1만 개에서 1개로 줄이는 효과는 별도로 남습니다.[S6: Zip and unzip files]

ZIP의 두 가지 역할파일을 하나로 묶으면 전송할 파일 수가 달라지고, 압축하면 전송할 바이트 수가 달라집니다. 두 효과는 서로 구분됩니다.사진을 ZIP으로 하나로 묶기파일 1개 전송용량 변화는 내용에 따라 다름

그림 5: 압축률이 낮더라도 ZIP으로 전송할 파일 수는 줄일 수 있습니다.

최종적으로 사진을 일반 폴더 안의 개별 파일로 사용해야 한다면 다음 합계를 비교합니다.

ZIP을 사용할 때 걸리는 시간 = ZIP 만들기 + ZIP 전송 + 압축 해제

ZIP을 만들 때는 작은 파일을 하나씩 읽고, 압축을 해제할 때는 압축 해제 대상에 작은 파일을 다시 하나씩 만듭니다. 파일별 작업이 없어지는 것이 아니라, 그 작업이 이루어지는 위치와 파일을 운반하는 형태가 달라지는 것입니다. 전송 전후의 처리 부담이 크다면 파일을 하나로 묶지 않는 편이 더 빠를 수도 있습니다.[S1: Slow SMB files transfer speed]

어느 장치에서 압축을 해제하는지 구분합니다

ZIP을 받는 쪽의 PC로 보낸 뒤 그 PC의 로컬 드라이브에서 압축을 해제하면 작은 파일을 네트워크를 통해 하나씩 만들 필요가 없습니다. Microsoft도 원격으로 압축을 해제하는 대신 전송 대상 시스템에서 압축을 해제하는 방법을 설명합니다.[S1: Slow SMB files transfer speed]

전송 대상에서 압축을 해제하는 경우와 PC에서 공유 폴더로 압축을 해제하는 경우전송 대상이 내부에서 직접 압축을 해제하는 경로와 PC가 압축을 해제한 파일을 공유 대상에 쓰는 경로를 구분합니다.ZIP을 전송 대상으로 보냄전송 대상이 내부에서 압축 해제PC의 애플리케이션에서 압축 해제작은 파일을 공유 대상에 전송

그림 6: ZIP 파일이 NAS에 저장되어 있다고 해서 압축 해제 작업도 NAS 내부에서 이루어지는 것은 아닙니다.

PC의 파일 탐색기에서 NAS에 저장된 ZIP을 열고 같은 공유 폴더를 압축 해제 대상으로 지정하면, PC가 압축을 해제한 작은 파일을 NAS에 다시 씁니다. 이 경로에서는 세분화된 네트워크 파일 작업이 다시 발생하므로, NAS 자체 기능으로 NAS 내부에서 압축을 해제하는 방법과 구분해야 합니다.

NAS가 자체적으로 압축을 해제할 수 없다면 실제로 사용할 수 있는 전체 경로를 측정합니다. NAS 내부에서 압축을 해제하는 경우와 PC의 로컬 저장소에 압축을 해제하는 경우는 최종 저장 위치가 다르므로, 같은 작업의 속도인 것처럼 직접 비교할 수 없습니다.

구체적인 예

여기서는 설명을 위한 계산과 절차에서 만들 비교용 데이터를 제시합니다. 어느 쪽도 특정 컴퓨터에서 측정한 속도가 아닙니다.

1GB와 파일 1만 개에 대한 단순화된 계산

다음은 모든 작업이 서로 겹치지 않고 차례대로 실행된다고 가정한 개념 모델입니다. Windows가 실제로 사용하는 정확한 계산식은 아닙니다.

복사 시간 ≒ 전체 바이트 수 ÷ 내용 전송 속도
           + 파일 수 × 파일당 추가 시간

설명을 위해 내용 전송 속도를 100MB/초, 파일당 추가 시간을 2밀리초로 가정합니다. 여기서는 1GB가 1,000MB이므로 내용을 전송하는 데 10초가 걸립니다. 파일별 추가 시간은 파일 1개일 때 0.002초, 파일 1만 개일 때 20초이므로 후자의 예시 합계는 약 30초가 됩니다.

복사 시간을 두 가지 요소로 나누어 생각하기전체 용량으로 결정되는 전송 시간과 파일 수에 따라 누적되는 추가 시간을 구분합니다.전체 용량으로 결정되는 시간전체 복사 시간파일 수로 결정되는 추가 시간

그림 7: 파일 수가 늘어나면 데이터 양만으로는 드러나지 않던 시간이 복사에 영향을 주게 됩니다.

이 값은 가정을 바탕으로 계산한 것입니다. 병렬 처리, 캐시, CPU 제한과 저장 장치의 제약을 생략했으므로 실제 장치에서 30초가 걸릴 것이라고 예측하는 데 사용할 수 없습니다.

큰 파일, 작은 파일 묶음과 무압축 ZIP

비교용 데이터의 구성

보유한 동영상과 사진으로도 경향을 관찰할 수 있지만, 그러한 파일은 내용과 압축 가능성까지 서로 다릅니다. 다음 생성 절차에서는 같은 바이트열을 하나의 큰 파일과 여러 작은 파일에 각각 쓰고, 작은 파일들로 무압축 ZIP도 만듭니다.

사례 구성 전체 내용
A one.bin이라는 1GB 파일 1개. 1,000,000,000바이트.
B 각각 100KB인 part-00000.bin부터 part-09999.bin까지의 파일 1만 개. 1,000,000,000바이트.
C B의 small 폴더를 담은 무압축 small.zip. 압축을 해제한 내용은 B와 같고, ZIP 자체의 관리 정보가 추가됨.
세 가지 형태의 비교용 데이터전체 내용이 같은 큰 파일 하나와 작은 파일 묶음을 만든 뒤, 작은 파일들로 무압축 ZIP도 만듭니다.같은 합계 1GB 준비1GB 파일 1개100KB 파일 1만 개같은 내용을 무압축 ZIP으로 묶기

그림 8: 무압축 ZIP을 사용하면 압축으로 인한 크기 변화와 파일을 하나로 묶는 효과를 따로 관찰할 수 있습니다.

A와 B의 전체 내용은 같지만 C의 ZIP 파일 크기까지 정확히 1,000,000,000바이트가 되는 것은 아닙니다. 의사 난수 바이트로 만든 .bin 파일은 실제 사진이나 동영상으로 열 수 없으며, 사진의 품질을 검사하거나 실제 미디어 파일을 처리하는 애플리케이션의 동작을 재현하는 데이터도 아닙니다.

절차

먼저 파일 탐색기에서 비교하고, 필요한 경우에만 robocopy의 병렬 처리 수준을 비교합니다. 중요한 사진이나 문서가 아닌 실험용 데이터를 사용하고, 복사와 이동을 혼동하지 마십시오.

도중에 보호 기능, SMB 서명, 동기화 설정 등을 변경하지 마십시오. 쓰기 권한이나 NAS 작업이 관리되는 환경에서는 설정을 우회하지 말고 담당 관리자에게 문의하십시오.[S10: SMB signing overview]

전체 크기가 같은 실험용 파일 만들기

Windows PowerShell 5.1 이상을 사용하고 임시 폴더가 로컬 드라이브에 있는지 확인합니다. A와 B를 합하면 약 2GB, ZIP까지 만들면 약 3GB를 사용합니다. 복사 원본이 있는 드라이브에 최소 5GB의 여유 공간을 확보하고, 복사 대상에도 여러 차례의 복사 및 압축 해제 작업에 필요한 공간을 확보하십시오. 다음 PowerShell 예제는 동일한 PowerShell 세션에서 순서대로 실행합니다.

같은 바이트열로 두 가지 비교용 데이터 만들기매번 생성한 100000바이트의 의사 난수를 큰 파일에 이어 쓰고, 같은 데이터를 작은 파일로도 저장합니다.100000바이트 생성one.bin에 이어 쓰기별도의 part 파일로 저장10000회 반복

그림 9: 생성한 동일한 데이터를 양쪽에 기록하여 전체 내용의 바이트 수를 같게 만듭니다.

  1. 기존 데이터를 사용하지 않고 새 실험용 폴더에서 작업하는지 확인합니다.

    이 코드는 고유한 이름의 copylab 폴더를 만듭니다. 화면에 표시된 생성 위치를 기록하십시오. 실행 도중 같은 절차를 다시 시작하지 마십시오. 오류가 발생하면 해당 실행에서 만든 데이터는 비교에서 제외합니다.

  2. 다음 코드를 실행하여 큰 파일 하나와 작은 파일 묶음을 만듭니다.

    $ErrorActionPreference = 'Stop'
    $lab = Join-Path ([System.IO.Path]::GetTempPath()) ('copylab-' + [guid]::NewGuid().ToString('N'))
    $drive = New-Object System.IO.DriveInfo ([System.IO.Path]::GetPathRoot($lab))
    if ($drive.AvailableFreeSpace -lt 5GB) {
        throw '실험용 드라이브에 5GB 이상의 여유 공간을 확보하십시오.'
    }
    $largeDir = Join-Path $lab 'large'
    $smallDir = Join-Path $lab 'small'
    [System.IO.Directory]::CreateDirectory($largeDir) | Out-Null
    [System.IO.Directory]::CreateDirectory($smallDir) | Out-Null
    Write-Host "생성 위치: $lab"
        
    $fileCount = 10000
    $buffer = New-Object byte[] 100000
    $random = New-Object System.Random 20260905
    $large = [System.IO.File]::Open(
        (Join-Path $largeDir 'one.bin'),
        [System.IO.FileMode]::CreateNew,
        [System.IO.FileAccess]::Write,
        [System.IO.FileShare]::None
    )
    try {
        for ($i = 0; $i -lt $fileCount; $i++) {
            $random.NextBytes($buffer)
            $name = 'part-{0:D5}.bin' -f $i
            [System.IO.File]::WriteAllBytes((Join-Path $smallDir $name), $buffer)
            $large.Write($buffer, 0, $buffer.Length)
        }
    }
    finally {
        $large.Dispose()
    }
    Write-Host "준비가 끝났습니다. 각 데이터 묶음의 내용은 $([long]$fileCount * $buffer.Length)바이트입니다."
    
  3. 준비 완료 메시지를 확인한 후 large와 small의 항목 수와 전체 크기를 확인합니다.

    large 안의 one.bin은 1,000,000,000바이트이고, small 안에는 각각 100,000바이트인 파일 10000개가 있어야 합니다. 폴더 속성 등에서 내용의 전체 바이트 수를 확인합니다. 완료 메시지만으로는 나중에 만든 복사본까지 올바르다고 확인한 것으로 간주할 수 없습니다.

하나의 실험용 폴더에 A와 B가 만들어집니다. 동일한 바이트열을 파일 하나로도 쓰고 여러 파일로 나누어 쓰므로 두 데이터 묶음 모두 1,000,000,000바이트입니다. 의사 난수 데이터는 0으로만 채운 파일이 지나치게 잘 압축되는 상황을 피하기 위한 것이며, 실제 사진 묶음과 같은 성능 특성을 보장하지는 않습니다.

압축하지 않은 ZIP을 만들고 생성 시간 기록하기

앞의 파일 생성 절차가 정상적으로 끝났고, 동일한 PowerShell 세션에 $lab과 $smallDir가 계속 정의되어 있는지 확인합니다. 이 절차는 생성한 일반 파일만을 대상으로 합니다. Compress-Archive에는 숨김 파일을 제외하는 등의 제한이 있으므로 이 예제를 중요한 폴더의 전체 백업에 사용하지 마십시오.

  1. 동일한 PowerShell 세션에서 다음 코드를 실행합니다.

    $zip = Join-Path $lab 'small.zip'
    $watch = [System.Diagnostics.Stopwatch]::StartNew()
    Compress-Archive -LiteralPath $smallDir -DestinationPath $zip -CompressionLevel NoCompression
    $watch.Stop()
    Write-Host "ZIP 생성 시간: $($watch.Elapsed.TotalSeconds)초"
    Write-Host "ZIP 크기: $((Get-Item -LiteralPath $zip).Length)바이트"
    

    NoCompression은 파일 내용을 압축하지 않고 ZIP에 저장하는 옵션입니다. 그래도 아카이브 관리 정보는 포함됩니다.[S7: Compress-Archive]

  2. ZIP을 만드는 데 걸린 시간(초)과 ZIP 파일의 바이트 수를 기록합니다.

    small.zip이 생성되었는지 확인합니다. 압축을 해제하면 파일이 small 폴더 안에 들어가므로, 나중에 항목 수를 확인할 때는 그 폴더의 내용을 비교합니다. 생성에 실패한 실행은 제외하고, 다시 시도하기 전에 원래 실험용 데이터와 여유 공간을 확인하십시오.

B와 같은 파일 묶음을 담은 C와 ZIP 생성 시간 기록이 준비됩니다. A와 B를 만드는 데 걸린 시간은 실험 준비에 해당하지만, ZIP 생성 시간은 ZIP을 이용하는 방법에 필요한 비용이므로 비교에 포함합니다.

같은 경로로 복사하고 필요한 압축 해제까지 측정하기

복사 원본과 복사 대상 장치, 연결, 응용 프로그램, 동시에 발생하는 부하를 동일하게 유지합니다. 매번 새롭고 비어 있는 복사 대상을 준비할 수 있는 권한과 용량이 필요합니다. 복사 후 검증은 측정 시간에서 제외하며, B와 C를 같은 최종 저장 위치에서 사용할 수 있는 상태로 만드는 것을 비교 목표로 삼습니다.

비교 조건을 맞추는 절차복사 경로와 방법을 고정하고, 순서를 바꾸어 비어 있는 복사 대상에 여러 차례 복사한 뒤 완료 후 내용도 확인합니다.같은 장치·경로·방법매번 비어 있는 복사 대상순서를 바꾸어 여러 차례 측정항목 수와 내용도 확인

그림 10: 이미 복사된 파일을 건너뛰어 줄어든 시간을 전송 속도가 향상된 것으로 혼동하지 마십시오.

  1. 장치, 경로, 복사 방법과 압축 해제를 수행하는 장치를 기록합니다.

    같은 물리 드라이브 안에서 이루어지는 복사와 서로 다른 장치 사이의 복사를 섞어 비교하지 마십시오. 온라인에서만 사용할 수 있는 클라우드 파일은 사용하지 말고, 바이러스 백신과 동기화 조건도 동일하게 유지합니다. NAS 자체에 압축 해제 기능이 없다면 PC에서 공유된 복사 대상으로 압축을 해제하는 경로라고 기록합니다.

  2. A, B, C를 하나씩 파일 탐색기에서 새롭고 비어 있는 복사 대상으로 복사합니다.

    ‘이동’은 사용하지 마십시오. 복사를 시작한 시점부터 완료 표시가 닫힐 때까지 모든 사례에 같은 기준을 적용해 측정하고, 예상 남은 시간이나 순간적으로 표시되는 속도가 아니라 실제 소요 시간을 기록합니다. 기존 파일을 건너뛰거나 덮어쓸지 묻는 메시지가 나온 실행은 동일 조건 비교에 사용하지 마십시오.

  3. C를 개별 파일로 사용해야 한다면 압축 해제 시간도 측정합니다.

    압축을 해제해야 하는 비교에서는 ZIP 생성, 전송, 압축 해제 시간을 합산합니다. 앞에서 측정한 ZIP 생성 시간을 각 비교의 고정 생성 비용으로 포함하고, 하나의 ZIP을 여러 번 다시 사용하는 운용 방식은 별도 조건으로 기록합니다. 최종 저장 위치가 같더라도 압축 해제를 PC에서 수행했는지, NAS 자체에서 수행했는지를 반드시 기록합니다.

  4. 순서를 바꾸어 각 사례를 예를 들어 세 차례씩 측정하고 중앙값과 변동 범위를 기록합니다.

    새 복사 대상을 사용해도 읽기 측의 캐시는 사라지지 않습니다. 두 번째 읽기만 빨라지는 경우와 내용 확인을 위한 읽기가 다음 실행에 미치는 영향도 기록합니다. 이 절차는 일반적인 복사 작업과 비슷한 상황의 경향을 살펴보기 위한 것이며, 캐시를 완전히 배제한 저장 매체 성능 측정은 아닙니다.[S8: File Caching]

A, B, C의 소요 시간과 측정 조건이 기록됩니다. 아래 ‘확인’의 기록표에서는 A를 대조군으로 사용하고, B와 C는 같은 파일 묶음을 배치하는 서로 다른 방법으로 비교하며, 성공한 실행만 속도 판단에 사용합니다.

ZIP이 적합하지 않을 때 robocopy 병렬 처리 수준 비교하기

실험용 데이터를 만든 동일한 PowerShell 세션을 사용합니다. $smallDir가 해당 데이터를 가리키는지, $lab에 로그를 쓸 수 있는지, 복사 대상의 상위 폴더에 쓰기 권한이 있는지 확인합니다. 원본 데이터는 그대로 두고 실행할 때마다 새로운 복사 대상을 만듭니다. /MIR, /PURGE, /MOVE처럼 데이터를 삭제할 수 있는 옵션은 추가하지 마십시오.

파일별 대기 시간을 서로 겹치기여러 파일을 동시에 처리하면 한 파일이 응답을 기다리는 동안 다른 파일을 전송할 수 있습니다.여러 파일을 동시에 처리파일 A는 응답 대기 중파일 B는 전송 중대기 시간을 서로 겹치기

그림 11: 병렬 처리는 대기 시간을 서로 겹치게 하는 방법이며, 회선이나 디스크 자체를 더 빠르게 만들지는 않습니다.

  1. 개별 파일을 즉시 사용해야 하거나 변경된 파일을 반복해서 보내야 하는 경우처럼 ZIP을 사용하지 않는 목적을 확인합니다.

    robocopy의 /MT 옵션은 여러 파일을 병렬로 처리합니다. 한 작업이 응답을 기다리는 동안 다른 파일 전송을 진행할 수 있지만, 회선이나 장치 자체의 속도가 빨라지는 것은 아닙니다.[S9: robocopy] [S4: Performance Tuning for SMB File Servers]

  2. $targetRoot를 자신이 쓸 수 있는 복사 대상으로 변경한 후 다음 코드를 실행합니다.

    $targetRoot = '\\NAS\share\CopyLab' # 자신의 복사 대상으로 변경
    $runId = [guid]::NewGuid().ToString('N')
    $target = Join-Path $targetRoot ('small-mt8-' + $runId)
    $log = Join-Path $lab ('robocopy-' + $runId + '.log')
    robocopy $smallDir $target /E /MT:8 /R:1 /W:1 /XJ "/LOG:$log"
    $code = $LASTEXITCODE
    if ($code -ge 8) {
        throw "복사 실패가 보고되었습니다. 종료 코드=$code; 로그=$log"
    }
    Write-Host "종료 코드=$code. 로그에서 복사됨, 건너뜀, 불일치, 실패 항목 수를 확인하고 복사 대상의 내용도 검증하십시오: $log"
    

    예시에 나온 NAS 이름과 공유 이름을 실제 값으로 바꾸십시오. 명령을 실행하기 직전부터 완료될 때까지 동일한 기준으로 시간을 측정하고, 화면에 표시된 로그 위치와 종료 코드를 모두 보관합니다.

  3. /MT:1과 /MT:8을 같은 방법으로 비교하고 병렬 처리 수준 이외의 모든 조건을 동일하게 유지합니다.

    다시 실행할 때마다 새로운 GUID가 포함된 복사 대상과 로그가 만들어집니다. 예제 폴더 이름의 small-mt8 부분은 조건을 구분하기 위한 것이므로 /MT:1을 시험할 때는 그 부분도 small-mt1으로 바꾸면 기록을 구분할 수 있습니다. ZIP 사용 여부와 병렬 처리 수준을 동시에 변경한 뒤 어느 한쪽의 효과만 판단해서는 안 됩니다.

    /MT:8은 비교를 시작하기 위한 값일 뿐 최적값이 아닙니다. 병렬 처리 수준이 지나치게 높으면 상대 시스템의 부하가 증가하여 복사가 더 느려질 수 있습니다. 오류가 발생한 실행을 속도 향상의 성공 사례로 취급하지 말고 로그와 복사 대상의 내용을 확인하십시오.[S1: Slow SMB files transfer speed]

동일한 B 파일 묶음에 대해 각 병렬 처리 수준의 소요 시간, 로그, 내용 확인 결과가 기록됩니다. 종료 코드가 8 이상이면 실패가 포함된 것이므로 예제 코드가 중단되지만, 종료 코드가 0~7이어도 다음 확인 절차는 반드시 수행해야 합니다.

확인

완료 여부는 “내용이 빠짐없이 복사되었는가”와 “같은 조건에서 파일을 사용할 수 있을 때까지 걸리는 시간이 줄었는가”를 나누어 판단합니다. 복사 완료 표시나 종료 코드만으로 무결성 확인을 대신해서는 안 됩니다.

항목 수, 내용 및 명령 실행 결과 대조

예상 결과와 실패 시 돌아가야 할 단계
확인 대상 예상 결과 일치하지 않을 때
A의 복사 대상 1,000,000,000바이트인 one.bin 파일 1개. 해당 시도를 제외하고 생성된 원본, 복사 대상 및 로그를 확인합니다.
B의 복사 대상 part-00000.bin부터 part-09999.bin까지 10,000개 파일, 합계 1,000,000,000바이트. 건너뛴 파일, 실패한 파일 또는 이전 결과가 복사 대상에 섞였는지 확인합니다.
C의 압축 해제 결과 small 폴더 안의 상대 파일 이름, 항목 수 및 전체 바이트 수가 B와 동일합니다. 압축 해제된 폴더의 계층을 확인하고 ZIP 생성, 전송 또는 압축 해제 중 어느 단계에서 파일이 누락되었는지 조사합니다.

항목 수와 크기가 같더라도 내용까지 동일하다는 사실은 입증되지 않습니다. 필요한 경우에는 측정 시간에 포함하지 않고 원본과 복사 대상에서 서로 대응하는 파일의 해시를 대조합니다. 확인을 위한 읽기 작업은 다음 시도의 캐시 상태에도 영향을 줄 수 있으므로 언제 수행했는지 기록하십시오.

시간을 비교하기 전에 내용 확인항목 수와 크기를 확인하고 필요하면 해시도 대조하여, 불일치나 실패가 있는 시도를 속도 향상에 성공한 결과로 취급하지 않는 흐름입니다.예아니요예아니요항목 수와 크기 확인일치하는가?필요하면 해시도 대조해당 시도를 제외하고 조사불일치나 실패가 없는가?같은 조건의 시간 비교

그림 12: 화면에 표시되는 속도와 복사된 내용의 정확성은 별도로 확인합니다.

robocopy 옵션과 종료 코드
옵션 또는 결과 이 예에서의 의미
/E 빈 디렉터리를 포함한 모든 하위 디렉터리를 복사합니다.
/MT:8 8개 스레드로 병렬 복사합니다. /MT:1과 비교하기 위한 조건입니다.
/R:1 /W:1 실패했을 때 한 번 다시 시도하고, 재시도 전에 1초 동안 기다립니다.
/XJ 접합 지점을 제외합니다. 이 비교에서는 생성한 일반 파일만 다룹니다.
/LOG 각 실행 결과를 별도의 로그에 기록합니다.
종료 코드 1 정상적으로 복사된 경우에도 반환될 수 있습니다. 0이 아니라는 이유만으로 실패로 판단하지 않습니다.
종료 코드 8 이상 적어도 하나의 복사 실패가 발생했습니다. 속도 비교를 중단하고 로그를 조사합니다.
종료 코드 0–7 이 범위의 코드만으로는 무결성이 보장되지 않습니다. 복사, 건너뜀, 불일치 및 실패 항목 수와 실제 파일을 확인합니다.

옵션과 종료 코드는 Microsoft의 robocopy 문서에서 확인할 수 있습니다. 기본적으로 복사되는 정보는 데이터, 특성, 날짜와 시간이며, 이 예는 ACL 등을 포함한 모든 정보를 보존하는 완전한 백업 방법이 아닙니다.[S9: robocopy]

실제 측정값 기록

결과를 기록하기 위한 표

다음 표에는 측정 결과가 미리 입력되어 있지 않습니다. 각 시도의 조건, 순서, 압축 해제 위치 및 오류 발생 여부를 기록하고, 중앙값뿐 아니라 개별 측정 시간과 편차도 남깁니다.

사례 생성 시간 전송 시간 압축 해제 시간 사용할 수 있을 때까지의 총시간
A: 큰 파일 1개 비교 준비 과정이므로 제외 직접 측정하여 기록 필요 없음 전송 시간이며 대조군으로 사용
B: 작은 파일 10,000개 비교 준비 과정이므로 제외 직접 측정하여 기록 필요 없음 전송 시간
C: B의 무압축 ZIP ZIP 생성 시간 기록 직접 측정하여 기록 필요한 경우 기록 생성+전송+압축 해제

B와 C는 동일한 파일 묶음을 같은 최종 저장 위치에서 사용할 수 있다는 조건으로 판단합니다. ZIP을 보관하기만 하는 용도라면 압축 해제가 필요하지 않지만, 이는 개별 파일을 사용하는 경우와 다른 조건입니다. 여러 차례 측정한 결과의 범위가 서로 겹친다면 관찰된 편차를 넘어 속도가 향상되었다고 단정할 수 없습니다.

속도 저하와 실패 구분

많은 작은 파일만 느린지, 큰 파일도 느린지, 같은 파일을 로컬 저장소로 복사할 때는 어떤지를 나누어 확인합니다. 전송 도중부터 속도가 낮아지는 경우에는 캐시도 영향을 줄 수 있으므로 화면에 표시되는 속도만으로 원인을 특정할 수 없습니다.[S8: File Caching] [S1: Slow SMB files transfer speed]

복사 속도 저하의 범위 구분작은 파일에서만 느린 경우와 데이터 형태에 관계없이 느린 경우를 나누어 조사합니다.예아니요작은 파일만 느린가?파일 수와 대기 시간 확인장치, 연결 및 부하도 조사실패나 연결 끊김 여부도 확인

그림 13: 작은 파일을 복사할 때 속도가 충분히 나오지 않는 현상은 복사 실패나 장치 이상과 같은 문제가 아닙니다.

복사가 실패하거나 연결이 끊기거나 성능이 이전보다 갑자기 크게 나빠졌다면 파일 수만으로 설명하고 조사를 끝내서는 안 됩니다. 비교를 중단하고 중요한 데이터를 보존하는 일을 우선한 뒤 로그, 연결, 여유 공간 및 장치 상태를 확인합니다. 관리되는 환경에서는 조건과 로그를 담당자에게 전달합니다.

정리 작업은 화면에 표시된 copylab 폴더와 각 시도의 복사 대상이 자신이 만든 실험용 데이터인지 확인한 뒤 수행합니다. 자동 삭제 명령은 제공하지 않습니다. 원본 사진이나 문서를 삭제하지 마십시오.

제약

이 비교로 알 수 있는 것과 알 수 없는 것

이 설명은 파일 수가 소요 시간에 영향을 줄 수 있는 원리를 보여 주지만, 독자가 사용하는 장치의 근본 원인을 확정하는 진단은 아닙니다. 수치 예는 가정에 따른 것이며 비교 절차도 이미 측정된 결과가 아닙니다. ZIP 사용이나 병렬 처리 수를 변경한다고 해서 반드시 빨라지는 것은 아닙니다.

매번 새롭고 비어 있는 복사 대상을 사용하더라도 운영 체제의 읽기 캐시와 장치 상태까지 완전히 동일하게 맞출 수는 없습니다. 복사 창이 닫힐 때까지 걸린 시간은 모든 쓰기 내용이 정전 후에도 보존될 수 있는 상태가 될 때까지의 시간을 측정한 것도 아닙니다. 이를 확인하려고 복사 직후 외장 장치를 분리하지 말고, 일반적인 안전 제거 절차를 사용하십시오.[S8: File Caching]

백업과 보호 기능은 별도의 요구 사항

생성한 .bin 파일과 무압축 ZIP은 비교용 데이터입니다. Compress-Archive에는 숨김 파일을 제외하는 등의 제한이 있으며, 일반적인 robocopy 옵션도 모든 특성과 권한을 보존하지는 않습니다. 중요한 데이터의 완전한 백업을 이 속도 비교만으로 설계하지 마십시오.[S7: Compress-Archive] [S9: robocopy]

이 글에서는 속도를 높이기 위해 바이러스 백신을 중지하거나 SMB 서명을 비활성화하는 방법을 권장하지 않습니다. SMB 서명은 통신 내용이 변조되는 등의 위협으로부터 보호하는 기능입니다. 관리되는 PC의 설정을 우회하지 말고 담당자와 상의하십시오.[S10: SMB signing overview]

더 빠른 장치를 구매하기 전에 전체 크기와 파일 수, 실제 복사 경로 및 파일을 사용할 수 있을 때까지 걸린 총시간을 함께 살펴보는 것이 출발점입니다. 개선 방법을 채택할지 결정하는 과정과 복사된 내용이 정확한지 확인하는 과정을 분리하지 마십시오.

참고 자료

다음 자료는 2026년 9월 17일에 확인했습니다. 각 자료가 뒷받침하는 내용도 함께 설명합니다. 서버용 문서의 설정 예를 일반 사용자 환경이나 모든 NAS에 그대로 적용해서는 안 됩니다.

[S1] Microsoft Learn, Slow SMB files transfer speed. 많은 작은 파일을 처리할 때 발생하는 파일 생성, 통신 및 검사 부담과 병렬 복사, 전송 대상에서의 압축 파일 해제에 관한 설명을 뒷받침합니다.

[S2] Microsoft Learn, CreateFileW function. 파일을 열고 생성하는 작업, 요청하는 접근 권한 및 공유 모드를 설명합니다.

[S3] Microsoft Learn, Master File Table. NTFS가 각 파일의 관리 정보를 유지하는 방식을 설명합니다.

[S4] Microsoft Learn, Performance Tuning for SMB File Servers. 작은 파일을 복사할 때 사용하는 robocopy 병렬 처리와 로그 출력에 관한 설명을 뒷받침합니다.

[S5] Microsoft Open Specifications, Sending Compounded Requests. SMB2에서 서로 관련된 여러 작업을 하나로 묶어 전송하는 방식을 설명합니다.

[S6] Microsoft Support, Zip and unzip files. ZIP을 사용해 여러 파일을 하나로 묶는 기능과 JPEG처럼 이미 압축된 형식은 추가로 압축해도 크기가 많이 줄지 않을 수 있다는 설명을 뒷받침합니다.

[S7] Microsoft Learn, Compress-Archive. NoCompression 옵션과 숨김 파일 제외 등의 제한 사항을 설명합니다.

[S8] Microsoft Learn, File Caching. 시스템 파일 캐시와 쓰기 내용을 지연하여 반영하는 방식을 설명합니다.

[S9] Microsoft Learn, robocopy. 병렬 처리 수, 재시도, 로그, 복사 옵션 및 종료 코드를 설명합니다.

[S10] Microsoft Learn, SMB signing overview. SMB 서명의 보호 목적과 운영 시 고려 사항을 설명합니다.

같은 태그를 공유하는 최신 기사입니다. 더 가까운 주제로 지식을 넓힐 수 있습니다.

이 기사와 가까운 토픽 페이지입니다. 기사를 출발점 삼아 관련 서비스와 다른 기사로 이어집니다.

이 기사는 다음 서비스 페이지로 이어집니다. 가까운 입구부터 확인해 주세요.

자주 묻는 질문

이 기사 주제에 대해 상담 시 자주 나오는 질문을 모았습니다.

용량이 같은데 사진 폴더의 복사가 느린 이유는 무엇입니까?
복사는 내용을 전송하는 것만이 아닙니다. 파일을 만들고, 정보를 관리하고, 닫는 처리 등이 파일마다 발생합니다. 작은 파일이 많으면 이 처리와 대기 시간의 비중이 커집니다. 사진이라는 형식 자체보다, 파일 수와 하나당 크기가 중요합니다.
SSD나 빠른 LAN에서도 작은 파일의 복사는 느려집니까?
그렇습니다. SSD라도 파일 관리 처리는 남고, NAS 등으로 복사할 때는 통신과 상대 쪽 처리를 기다리는 시간도 더해집니다. 큰 파일을 연속으로 전송했을 때의 속도와, 다수의 작은 파일을 처리하는 속도는 별개입니다.
JPEG를 ZIP으로 만들어도 작아지지 않는다면 묶는 의미가 없습니까?
용량이 거의 줄지 않더라도, 전송할 파일을 하나로 묶는 효과는 있습니다. 다만 ZIP의 생성과 압축 해제에도 시간이 걸립니다. 압축 해제가 필요한 용도라면 생성·전송·압축 해제의 합계 시간으로 비교합니다.
ZIP을 NAS로 보낸 뒤 PC에서 공유 폴더에 풀어도 빨라집니까?
그 방법은 압축 해제된 작은 파일을 PC에서 NAS로 쓰기 때문에, 네트워크 너머의 파일 생성이 다시 발생합니다. NAS 자신의 기능으로 내부에서 푸는 경우와 구분하고, 압축 해제까지 포함해 측정하십시오.
robocopy의 병렬 복사는 늘릴수록 빨라집니까?
아닙니다. 병렬화는 파일 처리의 대기 시간을 겹칠 수 있는 반면, 스토리지나 NAS의 부하도 늘립니다. 적은 병렬 수부터 같은 조건에서 비교하고, 복사의 실패나 누락도 로그로 확인합니다.

저자 프로필

기사 저자의 프로필 페이지입니다.

Go Komura

합동회사 코무라소프트 대표

Windows 소프트웨어 개발, 기술 상담, 장애 조사를 중심으로 재현이 어려운 장애 조사와 기존 자산이 남아 있는 프로젝트에 강점이 있습니다.

블로그 목록으로 돌아가기