AzCopy를 사용하여 Azure Storage 계정 간에 Blob 복사

AzCopy v10 명령줄 유틸리티를 사용하여 스토리지 계정 간에 Blob, 디렉터리, 컨테이너를 복사할 수 있습니다.

파일 업로드, blob 다운로드, Blob Storage와 동기화와 같은 다른 작업 형식의 예를 보려면 이 문서의 다음 단계 섹션에 있는 링크를 참조하세요.

AzCopy는 서버 간API를 사용하므로 스토리지 서버 간에 데이터가 직접 복사됩니다.

시작하기

AzCopy를 다운로드하고 스토리지 서비스에 인증 자격 증명을 제공하는 방법에 관해 알아보려면 AzCopy 시작 문서를 참조하세요.

참고 항목

이 문서의 예에서는 Microsoft Entra ID를 사용하여 권한 부여 자격 증명을 제공했으며 Microsoft Entra ID에 원본 및 대상 계정 모두에 대해 적절한 역할 할당이 있다고 가정합니다.

또는 각 AzCopy 명령의 원본 또는 대상 URL에 SAS 토큰을 추가할 수 있습니다. 예: azcopy copy 'https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path><SAS-token>' 'https://<destination-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path><SAS-token>'

지침

AzCopy 명령에 다음 지침을 적용합니다.

  • 원본과 대상 모두에 Microsoft Entra 권한 부여를 사용하는 경우 두 계정이 모두 동일한 Microsoft Entra 테넌트에 속해야 합니다.

  • 클라이언트는 원본 스토리지 계정과 대상 스토리지 계정 모두에 대한 네트워크 액세스 권한이 있어야 합니다. 각 스토리지 계정의 네트워크 설정을 구성하는 방법에 관한 내용은 Azure Storage 방화벽 및 가상 네트워크 구성을 참조하세요.

  • 프리미엄 블록 Blob 스토리지 계정에 복사하는 경우 s2s-preserve-access-tierfalse(예: --s2s-preserve-access-tier=false)로 설정하여 복사 작업에서 Blob의 액세스 계층을 생략합니다. 프리미엄 블록 blob 저장소 계정은 액세스 계층을 지원하지 않습니다.

  • AZCOPY_CONCURRENCY_VALUE 환경 변수의 값을 설정하여 복사 작업의 처리량을 늘릴 수 있습니다. 자세히 알아보려면 동시성 향상을 참조하세요.

  • 원본 blob에 인덱스 태그가 있으며 해당 태그를 유지하려면 대상 blob에 다시 적용해야 합니다. 인덱스 태그를 설정하는 방법에 관한 내용은 이 문서의 인덱스 태그를 사용하여 다른 스토리지 계정에 blob 복사 섹션을 참조하세요.

blob 복사

azcopy copy 명령을 사용하여 다른 스토리지 계정에 blob을 복사합니다.

이 예에서는 경로 인수를 작은따옴표(‘’)로 묶습니다. Windows 명령 셸(cmd.exe)을 제외하고 모든 명령 셸에서 작은따옴표를 사용합니다. Windows 명령 셸(cmd.exe)을 사용하는 경우 작은따옴표(‘’) 대신 큰따옴표(“”)로 경로 인수를 묶습니다.

Syntax

azcopy copy 'https://<source-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<blob-path>' 'https://<destination-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<blob-path>'

예제

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer/myTextFile.txt' 'https://mydestinationaccount.blob.core.windows.net/mycontainer/myTextFile.txt'

예제(Data Lake Storage 엔드포인트)

azcopy copy 'https://mysourceaccount.dfs.core.windows.net/mycontainer/myTextFile.txt' 'https://mydestinationaccount.dfs.core.windows.net/mycontainer/myTextFile.txt'

복사 작업은 동기식이므로 명령이 반환될 때 모든 파일이 복사되었음을 나타냅니다.

디렉터리 복사

azcopy copy 명령을 사용하여 다른 스토리지 계정에 디렉터리를 복사합니다.

이 예에서는 경로 인수를 작은따옴표(‘’)로 묶습니다. Windows 명령 셸(cmd.exe)을 제외하고 모든 명령 셸에서 작은따옴표를 사용합니다. Windows 명령 셸(cmd.exe)을 사용하는 경우 작은따옴표(‘’) 대신 큰따옴표(“”)로 경로 인수를 묶습니다.

Syntax

azcopy copy 'https://<source-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<directory-path>' 'https://<destination-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>' --recursive

예제

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer/myBlobDirectory' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive

예제(Data Lake Storage 엔드포인트)

azcopy copy 'https://mysourceaccount.dfs.core.windows.net/mycontainer/myBlobDirectory' 'https://mydestinationaccount.dfs.core.windows.net/mycontainer' --recursive

복사 작업은 동기식입니다. 명령이 반환할 때 모든 파일이 복사됩니다.

컨테이너 복사

azcopy copy 명령을 사용하여 다른 스토리지 계정에 컨테이너를 복사합니다.

이 예에서는 경로 인수를 작은따옴표(‘’)로 묶습니다. Windows 명령 셸(cmd.exe)을 제외하고 모든 명령 셸에서 작은따옴표를 사용합니다. Windows 명령 셸(cmd.exe)을 사용하는 경우 작은따옴표(‘’) 대신 큰따옴표(“”)로 경로 인수를 묶습니다.

Syntax

azcopy copy 'https://<source-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>' 'https://<destination-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>' --recursive

예제

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive

예제(Data Lake Storage 엔드포인트)

azcopy copy 'https://mysourceaccount.dfs.core.windows.net/mycontainer' 'https://mydestinationaccount.dfs.core.windows.net/mycontainer' --recursive

복사 작업은 동기식입니다. 명령이 반환할 때 모든 파일이 복사됩니다.

컨테이너, 디렉터리, blob 복사

azcopy copy 명령을 사용하여 다른 스토리지 계정에 모든 컨테이너, 디렉터리 및 blob을 복사합니다.

이 예에서는 경로 인수를 작은따옴표(‘’)로 묶습니다. Windows 명령 셸(cmd.exe)을 제외하고 모든 명령 셸에서 작은따옴표를 사용합니다. Windows 명령 셸(cmd.exe)을 사용하는 경우 작은따옴표(‘’) 대신 큰따옴표(“”)로 경로 인수를 묶습니다.

Syntax

azcopy copy 'https://<source-storage-account-name>.<blob or dfs>.core.windows.net/' 'https://<destination-storage-account-name>.<blob or dfs>.core.windows.net/' --recursive

예제

azcopy copy 'https://mysourceaccount.blob.core.windows.net/' 'https://mydestinationaccount.blob.core.windows.net' --recursive

예제(Data Lake Storage 엔드포인트)

azcopy copy 'https://mysourceaccount.dfs.core.windows.net/' 'https://mydestinationaccount.dfs.core.windows.net' --recursive

복사 작업은 동기식이므로 명령이 반환될 때 모든 파일이 복사되었음을 나타냅니다.

blob 복사 및 인덱스 태그 추가

Blob을 다른 스토리지 계정에 복사하고 Blob 인덱스 태그를 대상 Blob에 추가합니다.

Microsoft Entra 권한 부여를 사용하는 경우 보안 주체에 Storage Blob 데이터 소유자 역할이 할당되거나 사용자 지정 Azure 역할을 통해 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/writeAzure 리소스 공급자 작업에 대한 사용 권한이 부여되어야 합니다. SAS(공유 액세스 서명) 토큰을 사용하는 경우 해당 토큰은 t SAS 권한을 통해 blob의 태그에 대한 액세스를 제공해야 합니다.

태그를 추가하려면 URL로 인코딩된 키-값 쌍과 함께 --blob-tags 옵션을 사용합니다.

예를 들어, my tag 키와 my tag value 값을 추가하려면 --blob-tags='my%20tag=my%20tag%20value'를 대상 매개 변수에 추가합니다.

앰퍼샌드(&)를 사용하여 여러 인덱스 태그를 구분합니다. 예를 들어, my second tag 키와 my second tag value 값을 추가하려는 경우 전체 옵션 문자열은 --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'입니다.

다음 예에서는 --blob-tags 옵션 사용 방법을 보여 줍니다.

이 예에서는 경로 인수를 작은따옴표(‘’)로 묶습니다. Windows 명령 셸(cmd.exe)을 제외하고 모든 명령 셸에서 작은따옴표를 사용합니다. Windows 명령 셸(cmd.exe)을 사용하는 경우 작은따옴표(‘’) 대신 큰따옴표(“”)로 경로 인수를 묶습니다.

Blob 예


azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer/myTextFile.txt' 'https://mydestinationaccount.blob.core.windows.net/mycontainer/myTextFile.txt' --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

디렉터리 예

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer/myBlobDirectory' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

컨테이너 예

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

계정 예

azcopy copy 'https://mysourceaccount.blob.core.windows.net/' 'https://mydestinationaccount.blob.core.windows.net' --recursive --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

복사 작업은 동기식입니다. 명령이 반환할 때 모든 파일이 복사됩니다.

참고 항목

원본의 디렉터리, 컨테이너 또는 계정을 지정하는 경우 대상에 복사되는 모든 Blob에는 명령에서 지정한 것과 같은 태그가 있습니다.

선택적 플래그를 사용하여 복사

선택적 플래그를 사용하여 복사 작업을 조정할 수 있습니다. 다음은 몇 가지 예제입니다.

시나리오 Flag
블록, 페이지 또는 추가 Blob으로 blob을 복사합니다. --blob-type=[BlockBlob|PageBlob|AppendBlob]
특정 액세스 계층(예: 보관 계층)에 복사합니다. --block-blob-tier=[None|Hot|Cool|Archive]
자동으로 파일의 압축을 풉니다. --decompress=[gzip|deflate]

전체 목록을 보려면 옵션을 참조하세요.

다음 단계

다음 문서에서 더 많은 예제를 찾아보세요.

이러한 문서를 참조하여 설정을 구성하고, 성능을 최적화하고, 문제를 해결하세요.