이 Copy Blob
작업은 Blob을 스토리지 계정 내의 대상으로 복사합니다.
버전 2012-02-12 이상에서는 작업의 원본 Copy Blob
이 모든 Azure Storage 계정의 커밋된 Blob일 수 있습니다.
버전 2015-02-21부터 작업의 원본 Copy Blob
은 모든 Azure Storage 계정의 Azure 파일일 수 있습니다.
비고
2012년 6월 7일 또는 그 이후에 만든 스토리지 계정만 다른 스토리지 계정에서 작업을 복사할 수 있습니다 Copy Blob
.
요청
다음과 같이 Copy Blob
요청을 생성할 수 있습니다. HTTPS를 사용하는 것이 좋습니다.
myaccount를 스토리지 계정의 이름으로, mycontainer를 컨테이너 이름으로, myblob을 대상 Blob의 이름으로 바꿉니다.
버전 2013-08-15부터 원본 Blob과 동일한 계정에 있는 경우 대상 Blob에 대한 SAS(공유 액세스 서명)를 지정할 수 있습니다. 버전 2015-04-05부터 다른 스토리지 계정에 있는 경우 대상 Blob에 대한 공유 액세스 서명을 지정할 수도 있습니다.
PUT 메서드 요청 URI | HTTP 버전 |
---|---|
https://myaccount.blob.core.windows.net/mycontainer/myblob |
HTTP/1.1 |
에뮬레이트된 스토리지 서비스에 대한 URI
에뮬레이트된 스토리지 서비스에 대해 요청할 때 에뮬레이터 호스트 이름 및 Azure Blob Storage 포트를 로 127.0.0.1:10000
지정한 다음 에뮬레이트된 스토리지 계정의 이름을 지정합니다.
PUT 메서드 요청 URI | HTTP 버전 |
---|---|
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob |
HTTP/1.1 |
자세한 내용은 로컬 Azure Storage 개발에 Azurite 에뮬레이터 사용을 참조하세요.
URI 매개 변수
요청 URI에 다음 추가 매개 변수를 지정할 수 있습니다.
매개 변수 | 설명 |
---|---|
timeout |
선택 사항입니다.
timeout 매개 변수는 초 단위로 표현됩니다. 자세한 내용은 Blob Storage 작업에 대한 시간 제한 설정을 참조하세요. |
요청 헤더
다음 표에서는 필수 및 선택적 요청 헤더에 대해 설명합니다.
요청 헤더 | 설명 |
---|---|
Authorization |
필수 사항입니다. 권한 부여 체계, 계정 이름 및 서명을 지정합니다. 자세한 내용은 Azure Storage대한 요청 권한 부여를 참조하세요. |
Date 또는 x-ms-date |
필수 사항입니다. 요청에 대한 UTC(협정 세계시)를 지정합니다. 자세한 내용은 Azure Storage대한 요청 권한 부여를 참조하세요. |
x-ms-version |
모든 권한 있는 요청에 필요합니다. 자세한 내용은 Azure Storage 서비스에 대한 버전 관리를 참조하세요. |
x-ms-meta-name:value |
선택 사항입니다. Blob과 연결된 사용자 정의 이름/값 쌍을 지정합니다. 이름/값 쌍을 지정하지 않으면 작업은 원본 Blob 또는 파일의 메타데이터를 대상 Blob으로 복사합니다. 하나 이상의 이름/값 쌍을 지정하면 지정된 메타데이터를 사용하여 대상 Blob이 만들어지고 메타데이터는 원본 Blob 또는 파일에서 복사되지 않습니다. 버전 2009-09-19부터 메타데이터 이름은 C# 식별자에 대한 명명 규칙을 준수해야 합니다. 자세한 내용은 컨테이너, Blob 및 메타데이터 이름 지정 및 참조를 참조하세요. |
x-ms-tags |
선택 사항입니다. Blob에서 지정된 쿼리 문자열로 인코딩된 태그를 설정합니다. 태그는 복사 소스에서 복사되지 않습니다. 자세한 내용은 설명참조하세요. 버전 2019-12-12 이상에서 지원됩니다. |
x-ms-source-if-modified-since |
선택 사항입니다.
DateTime 값입니다. 지정된 날짜/시간 이후 원본 Blob이 수정된 경우에만 Blob을 복사하도록 이 조건부 헤더를 지정합니다. 원본 Blob이 수정되지 않은 경우 Blob Storage는 상태 코드 412(사전 조건 실패)를 반환합니다. 원본이 Azure 파일인 경우 이 헤더를 지정할 수 없습니다. |
x-ms-source-if-unmodified-since |
선택 사항입니다.
DateTime 값입니다. 지정된 날짜/시간 이후 원본 Blob이 수정되지 않은 경우에만 Blob을 복사하도록 이 조건부 헤더를 지정합니다. 원본 Blob이 수정된 경우 Blob Storage는 상태 코드 412(사전 조건 실패)를 반환합니다. 원본이 Azure 파일인 경우 이 헤더를 지정할 수 없습니다. |
x-ms-source-if-match |
선택 사항입니다.
ETag 값입니다. 이 조건부 헤더를 지정하여 해당 ETag 값이 지정된 값과 일치하는 경우에만 원본 Blob을 복사합니다. 값이 일치하지 않으면 Blob Storage는 상태 코드 412(사전 조건 실패)를 반환합니다. 원본이 Azure 파일인 경우 이 헤더를 지정할 수 없습니다. |
x-ms-source-if-none-match |
선택 사항입니다.
ETag 값입니다. 값이 지정된 값과 일치하지 않는 경우에만 ETag Blob을 복사하도록 이 조건부 헤더를 지정합니다. 값이 동일하면 Blob Storage는 상태 코드 412(사전 조건 실패)를 반환합니다. 원본이 Azure 파일인 경우 이 헤더를 지정할 수 없습니다. |
If-Modified-Since |
선택 사항입니다.
DateTime 값입니다. 지정된 날짜/시간 이후 대상 Blob이 수정된 경우에만 Blob을 복사하려면 이 조건부 헤더를 지정합니다. 대상 Blob이 수정되지 않은 경우 Blob Storage는 상태 코드 412(사전 조건 실패)를 반환합니다. |
If-Unmodified-Since |
선택 사항입니다.
DateTime 값입니다. 지정된 날짜/시간 이후 대상 Blob이 수정되지 않은 경우에만 Blob을 복사하도록 이 조건부 헤더를 지정합니다. 대상 Blob이 수정된 경우 Blob Storage는 상태 코드 412(사전 조건 실패)를 반환합니다. |
If-Match |
선택 사항입니다.
ETag 값입니다.
ETag 이 조건부 헤더의 값을 지정하여 지정된 ETag 값이 기존 대상 Blob의 값과 일치하는 ETag 경우에만 Blob을 복사합니다. 값이 일치하지 않으면 Blob Storage는 상태 코드 412(사전 조건 실패)를 반환합니다. |
If-None-Match |
선택 사항입니다.
ETag 값 또는 와일드카드 문자(*)입니다.ETag 지정된 ETag 값이 대상 Blob의 값과 일치하지 ETag 않는 경우에만 Blob을 복사하도록 이 조건부 헤더의 값을 지정합니다.와일드카드 문자(*)를 지정하여 대상 Blob이 없는 경우에만 작업을 수행합니다. 지정된 조건이 충족되지 않으면 Blob Storage는 상태 코드 412(사전 조건 실패)를 반환합니다. |
x-ms-copy-source:name |
필수 사항입니다. 원본 Blob 또는 파일의 이름을 지정합니다. 버전 2012-02-12부터 이 값은 Blob을 지정하는 최대 2KiB(키비바이트) 길이의 URL일 수 있습니다. 값은 요청 URI에 표시되는 대로 URL로 인코딩되어야 합니다. 동일한 스토리지 계정의 원본 Blob에 대한 읽기 작업은 공유 키를 통해 권한을 부여할 수 있습니다. 버전 2017-11-09부터 Microsoft Entra ID를 사용하여 원본 Blob에 대한 읽기 작업에 권한을 부여할 수도 있습니다. 그러나 원본이 다른 스토리지 계정의 Blob인 경우 원본 Blob이 공용이거나 공유 액세스 서명을 통해 액세스 권한을 부여해야 합니다. 원본 Blob이 공용인 경우 복사 작업을 수행하는 데 권한 부여가 필요하지 않습니다. 버전 2015-02-21부터 원본 개체는 Azure Files의 파일일 수 있습니다. 원본 개체가 Blob에 복사될 파일인 경우 원본 파일은 동일한 계정에 있든 다른 계정에 있든 관계없이 공유 액세스 서명을 통해 권한을 부여받아야 합니다. 2012년 6월 7일 또는 그 이후에 만든 스토리지 계정만 다른 스토리지 계정에서 작업을 복사할 수 있습니다 Copy Blob .다음은 원본 개체 URL의 몇 가지 예입니다. - https://myaccount.blob.core.windows.net/mycontainer/myblob - https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime> - https://myaccount.blob.core.windows.net/mycontainer/myblob?versionid=<DateTime> 원본 개체가 Azure Files의 파일인 경우 원본 URL은 다음 형식을 사용합니다. URL에는 파일에 대한 유효한 SAS 토큰이 포함되어야 합니다. - https://myaccount.file.core.windows.net/myshare/mydirectorypath/myfile?sastoken 2012-02-12 이전 버전에서는 동일한 계정 내에서만 Blob을 복사할 수 있으며 원본 이름은 다음 형식을 사용할 수 있습니다. - 명명된 컨테이너의 Blob: /accountName/containerName/blobName - 명명된 컨테이너의 스냅샷: /accountName/containerName/blobName?snapshot=<DateTime> - 루트 컨테이너의 Blob: /accountName/blobName - 루트 컨테이너의 스냅샷: /accountName/blobName?snapshot=<DateTime> |
x-ms-lease-id:<ID> |
대상 Blob에 활성 임대가 있는 경우 필요합니다. 이 헤더에 지정된 임대 ID는 대상 Blob의 임대 ID와 일치해야 합니다. 요청에 임대 ID가 포함되지 않거나 ID가 유효하지 않으면 상태 코드 412(사전 조건 실패)로 작업이 실패합니다. 이 헤더를 지정하고 대상 Blob에 현재 활성 임대가 없는 경우 상태 코드 412(사전 조건 실패)로 작업이 실패합니다. 버전 2012-02-12 이상에서 이 값은 임대된 Blob에 대한 활성 무한 임대를 지정해야 합니다. 유한 기간 임대 ID가 상태 코드 412(사전 조건 실패)로 실패합니다. |
x-ms-source-lease-id: <ID> |
2012-02-12 이전 버전의 경우 선택 사항입니다(2012-02-12 이상에서는 지원되지 않음). 제공된 임대 ID가 원본 Blob의 활성 임대 ID와 일치하는 경우에만 작업을 수행 Copy Blob 하도록 이 헤더를 지정합니다.이 헤더를 지정하고 원본 Blob에 현재 활성 임대가 없는 경우 상태 코드 412(사전 조건 실패)로 작업이 실패합니다. |
x-ms-client-request-id |
선택 사항입니다. 로깅이 구성될 때 로그에 기록되는 1KiB 문자 제한으로 클라이언트에서 생성된 불투명 값을 제공합니다. 이 헤더를 사용하여 클라이언트 쪽 활동과 서버가 수신하는 요청의 상관 관계를 지정하는 것이 좋습니다. |
x-ms-access-tier |
선택 사항입니다. 대상 Blob에 설정할 계층을 지정합니다. 이 헤더는 버전 2017-04-17 이상에서만 프리미엄 계정의 페이지 Blob에 대한 것입니다. 지원되는 계층의 전체 목록은 VM용 고성능 프리미엄 스토리지 및 관리 디스크를 참조하세요. 이 헤더는 버전 2018-11-09 이상에서 블록 Blob에 대해 지원됩니다. 블록 Blob 계층화는 Blob Storage 또는 범용 v2 계정에서 지원됩니다. 유효한 값은 Hot , Cool , Cold 및 Archive 입니다.
참고:Cold 계층은 버전 2021-12-02 이상에서 지원됩니다. 블록 Blob 계층화에 대한 자세한 내용은 핫, 쿨 및 보관 스토리지 계층을 참조하세요. |
x-ms-rehydrate-priority |
선택 사항입니다. 보관된 Blob을 다시 수화할 우선 순위를 나타냅니다. 이 헤더는 블록 Blob에 대해 버전 2019-02-02 이상에서 지원됩니다. 유효한 값은 High 및 Standard 입니다. Blob에 대한 우선 순위는 한 번만 설정할 수 있습니다. 이 헤더는 동일한 Blob에 대한 후속 요청에서 무시됩니다. 이 헤더가 없는 기본 우선 순위는 Standard 입니다. |
x-ms-seal-blob |
선택 사항입니다. 버전 2019-12-12 이상에서 지원됩니다. 이 헤더는 추가 Blob에만 유효합니다. 복사 작업이 완료된 후 대상 Blob을 봉인합니다. |
x-ms-immutability-policy-until-date |
버전 2020-06-12 이상. Blob에 설정할 보존 날짜를 지정합니다. Blob을 수정 또는 삭제로부터 보호할 수 있는 날짜입니다. RFC1123 형식을 따릅니다. |
x-ms-immutability-policy-mode |
버전 2020-06-12 이상. Blob에 설정할 불변성 정책 모드를 지정합니다. 유효한 값은 unlocked 및 locked 입니다. 값은 unlocked 사용자가 보존 기간을 늘리거나 줄여 정책을 변경할 수 있음을 나타냅니다. 값은 locked 이러한 작업이 금지됨을 나타냅니다. |
x-ms-legal-hold |
버전 2020-06-12 이상. Blob에 설정할 법적 보존을 지정합니다. 유효한 값은 true 및 false 입니다. |
이 작업은 지정된 조건이 충족되는 경우에만 성공할 수 있도록 및 x-ms-source-if-tags
조건부 헤더를 지원합니다x-ms-if-tags
. 자세한 내용은 Blob Storage 작업대한 조건부 헤더 지정을 참조하세요.
요청 메시지 본문
없음.
응답
응답에는 HTTP 상태 코드와 응답 헤더 집합이 포함됩니다.
상태 코드
버전 2012-02-12 이상에서 성공적인 작업은 상태 코드 202(수락됨)를 반환합니다.
2012-02-12 이전 버전에서는 작업이 성공하면 상태 코드 201(생성됨)이 반환됩니다.
상태 코드에 대한 자세한 내용은 상태 및 오류 코드참조하세요.
응답 헤더
이 작업에 대한 응답에는 다음 헤더가 포함됩니다. 응답에는 추가 표준 HTTP 헤더도 포함될 수 있습니다. 모든 표준 헤더는 HTTP/1.1 프로토콜 사양준수합니다.
응답 헤더 | 설명 |
---|---|
ETag |
버전 2012-02-12 이상에서는 복사가 완료되면 이 헤더에 ETag 대상 Blob의 값이 포함됩니다. 복사가 완료되지 않은 경우 헤더에는 복사 작업 시작 시 생성된 빈 Blob의 값이 포함됩니다 ETag .2012-02-12 이전 버전에서 이 헤더는 ETag 대상 Blob의 값을 반환합니다.버전 2011-08-18 이상에서는 ETag 값이 따옴표로 묶여 있습니다. |
Last-Modified |
대상 Blob에 대한 복사 작업이 완료된 날짜/시간을 반환합니다. |
x-ms-request-id |
만들어진 요청을 고유하게 식별합니다. 이 헤더를 사용하여 요청 문제를 해결할 수 있습니다. 자세한 내용은 API 작업문제 해결을 참조하세요. |
x-ms-version |
요청을 실행하는 데 사용되는 Blob Storage의 버전을 나타냅니다. 이 헤더는 버전 2009-09-19 이상에 대해 수행된 요청에 대해 반환됩니다. |
Date |
서비스에서 응답을 보낸 시간을 나타내는 UTC 날짜/시간 값입니다. |
x-ms-copy-id: <id> |
버전 2012-02-12 이상. 이 복사 작업에 대한 문자열 식별자를 제공합니다.
Get Blob 또는 Get Blob Properties 사용하여 이 복사 작업의 상태를 확인하거나 Abort Copy Blob 전달하여 보류 중인 복사 작업을 취소합니다. |
x-ms-copy-status: <success ¦ pending> |
버전 2012-02-12 이상. 복사 작업의 상태를 나타내며 다음 값을 사용합니다. - success : 작업이 성공적으로 완료되었습니다.- pending : 작업이 진행 중입니다. |
x-ms-version-id: <DateTime> |
버전 2019-12-12 이상. 버전별로 Blob을 고유하게 식별합니다. 후속 요청에서 이 불투명 값을 사용하여 이 버전의 Blob에 액세스할 수 있습니다. |
x-ms-client-request-id |
요청 및 해당 응답 문제를 해결하는 데 사용할 수 있습니다. 이 헤더의 값은 요청에 있고 값이 최대 1,024개의 표시되는 ASCII 문자인 경우 x-ms-client-request-id 헤더의 값과 같습니다. 요청에 x-ms-client-request-id 헤더가 없으면 이 헤더가 응답에 표시되지 않습니다. |
응답 메시지 본문
없음.
샘플 응답
다음 코드는 Blob 복사 요청에 대한 샘플 응답입니다.
Response Status:
HTTP/1.1 202 Accepted
Response Headers:
Last-Modified: <date>
ETag: "0x8CEB669D794AFE2"
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: cc6b209a-b593-4be1-a38a-dde7c106f402
x-ms-version: 2015-02-21
x-ms-copy-id: 1f812371-a41d-49e6-b123-f4b542e851c5
x-ms-copy-status: pending
x-ms-version-id: <DateTime>
Date: <date>
승인
Azure Storage에서 데이터 액세스 작업을 호출할 때 권한 부여가 필요합니다. 다음 표에서는 Copy Blob
작업의 대상 및 원본 개체에 권한을 부여하는 방법을 설명합니다.
객체 유형 | Microsoft Entra ID 권한 부여 | SAS(공유 액세스 서명) 권한 부여 | 공유 키 권한 부여(또는 Shared Key Lite) |
---|---|---|---|
대상 Blob | 예 | 예 | 예 |
동일한 스토리지 계정의 원본 Blob | 예 | 예 | 예 |
다른 스토리지 계정의 원본 Blob | 아니오 | 예 | 아니오 |
요청이 요청 헤더에 x-ms-tags
태그를 지정하는 경우 호출자는 Blob 태그 설정 작업의 권한 부여 요구 사항을 충족해야 합니다.
아래 설명된 대로 Copy Blob
작업에 권한을 부여할 수 있습니다. 다른 스토리지 계정의 원본 Blob은 읽기(r) 권한이 있는 SAS 토큰을 통해 별도로 권한을 부여해야 합니다. 원본 Blob 권한 부여에 대한 자세한 내용은 요청 헤더 x-ms-copy-source
에 대한 세부 정보를 참조하세요.
중요합니다
Microsoft는 관리 ID와 함께 Microsoft Entra ID를 사용하여 Azure Storage에 대한 요청을 승인하는 것이 좋습니다. Microsoft Entra ID는 공유 키 권한 부여에 비해 뛰어난 보안 및 사용 편의성을 제공합니다.
- Microsoft Entra ID(권장)
-
SAS(공유 액세스 서명)
-
공유 키
Azure Storage는 Microsoft Entra ID를 사용하여 Blob 데이터 요청에 대해 권한을 부여하는 것을 지원합니다. Microsoft Entra ID를 사용하면 Azure RBAC(Azure 역할 기반 액세스 제어)를 사용하여 보안 주체에 권한을 부여할 수 있습니다. 보안 주체는 사용자, 그룹, 애플리케이션 서비스 주체 또는 Azure 관리 ID일 수 있습니다. 보안 주체는 OAuth 2.0 토큰을 반환하기 위해 Microsoft Entra ID에 의해 인증됩니다. 그런 다음 토큰을 사용하여 Blob service에 대한 요청을 승인할 수 있습니다.
Microsoft Entra ID를 사용한 권한 부여에 대한 자세한 내용은 Microsoft Entra ID사용하여 Blob에 대한 액세스 권한 부여를 참조하세요.
권한
아래에는 Microsoft Entra 사용자, 그룹, 관리 ID 또는 서비스 주체가 Copy Blob
작업을 호출하는 데 필요한 RBAC 작업과 이 작업을 포함하는 최소 권한의 기본 제공 Azure RBAC 역할이 나와 있습니다.
대상 Blob
- Azure RBAC 작업:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write (기존 Blob에 쓰는 경우) 또는 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action (대상에 새 Blob을 쓰는 경우)
- 최소 권한 기본 제공 역할:Storage Blob 데이터 기여자
동일한 스토리지 계정 내의 원본 Blob
- Azure RBAC 작업:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
- 최소 권한 기본 제공 역할:Storage Blob 데이터 읽기 권한자
Azure RBAC를 사용하여 역할을 할당하는 방법에 대한 자세한 내용은 Blob 데이터액세스하기 위한 Azure 역할 할당을 참조하세요.
비고
버전 2012-02-12 이상에서는 Copy Blob
작업을 비동기적으로 완료할 수 있습니다. 이 작업은 복사 작업을 확인하거나 취소하는 데 사용할 수 있는 복사 ID를 반환합니다. 복사 작업의 비동기 특성으로 인해 Blob Storage는 최선을 다해 Blob을 복사합니다. Blob 서비스는 서버 리소스가 다른 작업에서 사용되지 않을 때 Blob을 복사하므로 복사가 즉시 시작되거나 지정된 시간 내에 완료된다는 보장이 없습니다.
복사 작업의 원본 Blob은 블록 Blob, 추가 Blob, 페이지 Blob 또는 스냅샷일 수 있습니다. 대상 Blob이 이미 있는 경우 원본 Blob과 동일한 Blob 유형이어야 합니다. 기존 대상 Blob을 덮어씁니다. 복사 작업이 진행되는 동안에는 대상 Blob을 수정할 수 없습니다.
버전 2015-02-21 이상에서는 복사 작업의 원본이 Azure Files의 파일일 수도 있습니다. 원본이 파일인 경우 대상은 블록 Blob이어야 합니다.
계정 내에서 보류 중인 Copy Blob
여러 작업이 순차적으로 처리될 수 있습니다. 대상 Blob에는 미해결 Copy Blob
작업이 하나만 있을 수 있습니다. 즉, Blob은 보류 중인 Copy Blob
여러 작업의 대상이 될 수 없습니다. 이미 보류 중인 복사 작업이 있는 대상 Blob에 Blob을 복사하려는 시도는 상태 코드 409(충돌)와 함께 실패합니다.
2012년 6월 7일 또는 그 이후에 만든 스토리지 계정만 다른 스토리지 계정에서 작업을 복사할 수 있습니다 Copy Blob
. 다른 스토리지 계정에서 2012년 6월 7일 이전에 만든 계정으로 복사하려고 하면 상태 코드 400(잘못된 요청)으로 실패합니다.
Copy Blob
작업은 항상 전체 원본 Blob 또는 파일을 복사합니다. 바이트 범위 또는 블록 집합 복사는 지원되지 않습니다.
작업은 Copy Blob
다음과 같은 형식을 사용할 수 있습니다.
원본 Blob을 다른 이름의 대상 Blob에 복사할 수 있습니다. 대상 Blob은 동일한 Blob 유형(블록, 추가 또는 페이지)의 기존 Blob이거나 복사 작업에서 만드는 새 Blob일 수 있습니다.
원본 Blob을 이름이 같은 대상 Blob에 복사하여 대상 Blob을 효과적으로 대체할 수 있습니다. 이러한 복사 작업은 커밋되지 않은 블록을 제거하고 Blob의 메타데이터를 덮어씁니다.
Azure Files의 원본 파일을 대상 Blob에 복사할 수 있습니다. 대상 Blob은 기존 블록 Blob일 수도 있고 복사 작업에서 만드는 새 블록 Blob일 수도 있습니다. 파일에서 페이지 Blob 또는 추가 Blob으로 복사하는 것은 지원되지 않습니다.
기본 Blob을 통해 스냅샷을 복사할 수 있습니다. 스냅샷의 수준을 기본 Blob 위치로 올리면 이전 Blob 버전을 복원할 수 있습니다.
이름이 다른 대상 Blob에 스냅샷을 복사할 수 있습니다. 복사된 대상 Blob는 쓰기 가능한 Blob이고 스냅샷이 아닙니다.
페이지 Blob에서 복사하는 경우 Blob Storage는 원본 Blob 길이의 대상 페이지 Blob을 만듭니다. 처음에는 페이지 Blob에 모든 0이 포함됩니다. 그런 다음 원본 페이지 범위가 열거되고 비어 있지 않은 범위가 복사됩니다.
블록 Blob 또는 추가 Blob의 경우 Blob Storage는 이 작업에서 반환하기 전에 길이가 0인 커밋된 Blob을 만듭니다.
블록 Blob에서 복사하는 경우 커밋된 모든 블록과 해당 블록 ID가 복사됩니다. 커밋되지 않은 블록은 복사되지 않습니다. 복사 작업이 끝나면 대상 Blob에는 원본과 동일한 커밋된 블록 수가 있습니다.
추가 Blob에서 복사하는 경우 커밋된 모든 블록이 복사됩니다. 복사 작업이 끝나면 대상 Blob에는 원본 Blob보다 적거나 동일한 수의 커밋된 블록이 있습니다.
모든 Blob 유형에 대해 대상 Blob에서 또는 Get Blob Properties
을 호출하여 Get Blob
복사 작업의 상태를 확인할 수 있습니다. 복사 작업이 완료되면 최종 Blob이 커밋됩니다.
복사 작업의 원본이 값을 제공하는 ETag
경우 복사 작업이 진행되는 동안 원본을 변경하면 해당 작업이 실패합니다. 복사가 진행되는 동안 대상 Blob을 변경하려고 하면 상태 코드 409(충돌)와 함께 실패합니다. 대상 Blob에 무한 임대가 있는 경우 임대 ID를 에 전달 Copy Blob
해야 합니다. 유한 기간의 임대는 허용되지 않습니다.
ETag
블록 Blob의 값은 작업이 시작될 때와 완료될 때 Copy Blob
변경됩니다.
ETag
페이지 Blob의 값은 작업이 시작될 때 Copy Blob
변경되며 복사 작업 중에 계속 자주 변경됩니다. 블록 Blob의 내용은 전체 복사 작업이 완료된 후에만 명령을 통해 Get
볼 수 있습니다.
Blob 속성, 태그 및 메타데이터 복사
Blob이 복사되면 다음 시스템 속성이 동일한 값을 가진 대상 Blob에 복사됩니다.
Content-Type
Content-Encoding
Content-Language
Content-Length
Cache-Control
Content-MD5
Content-Disposition
x-ms-blob-sequence-number
(페이지 Blob에만 해당)x-ms-committed-block-count
(추가 Blob에만 해당되며 버전 2015-02-21에만 해당)
Blob이 블록 Blob인 경우 원본 Blob의 커밋된 블록 목록도 대상 Blob에 복사됩니다. 커밋되지 않은 블록은 복사되지 않습니다.
대상 Blob은 항상 원본 Blob과 동일한 크기입니다. 대상 Blob에 대한 헤더의 Content-Length
값은 원본 Blob에 대한 해당 헤더의 값과 일치합니다.
원본 Blob과 대상 Blob이 같 Copy Blob
으면 커밋되지 않은 블록을 제거합니다. 이 경우 메타데이터가 지정되면 기존 메타데이터를 새 메타데이터로 덮어씁니다.
헤더가 x-ms-tags
대상 Blob에 대한 태그를 제공하는 경우 쿼리 문자열로 인코딩되어야 합니다. 태그 키와 값은 Set Blob Tags에 지정된 대로 명명 및 길이 요구 사항을 준수해야 합니다.
헤더에는 x-ms-tags
최대 2킬로비트의 태그가 포함될 수 있습니다. 더 많은 태그가 필요한 경우 작업을 사용합니다 Set Blob Tags
.
헤더가 x-ms-tags
태그를 제공하지 않으면 원본 Blob에서 태그가 복사되지 않습니다.
임대된 Blob 복사
작업은 Copy Blob
원본 Blob에서만 읽으므로 원본 Blob의 임대 상태는 중요하지 않습니다. 그러나 이 Copy Blob
작업은 복사 작업이 시작될 때 원본 Blob의 값을 저장합니다 ETag
. 복사 작업이 완료되기 전에 ETag
값이 변경되면 작업이 실패합니다. 복사 작업 중에 원본 Blob을 임대하여 원본 Blob에 대한 변경을 방지할 수 있습니다.
대상 Blob에 활성 무한 임대가 있는 경우 작업 호출에서 해당 임대 ID를 Copy Blob
지정해야 합니다. 지정한 임대가 활성 유한 기간 임대인 경우 이 호출은 상태 코드 412(사전 조건 실패)와 함께 실패합니다. 복사 작업이 보류 중인 동안 대상 Blob에 대한 모든 임대 작업이 상태 코드 409(충돌)와 함께 실패합니다. 대상 Blob에 대한 무한 임대는 원본과 이름이 다른 대상 Blob에 복사하거나, 원본과 이름이 같은 대상 Blob에 복사하거나, 기본 Blob을 통해 스냅샷을 승격하는 경우 복사 작업 중에 이러한 방식으로 잠깁니다.
클라이언트가 아직 존재하지 않는 Blob에 임대 ID를 지정하는 경우 Blob Storage는 버전 2013-08-15 이상에 대해 수행된 요청에 대해 상태 코드 412(사전 조건 실패)를 반환합니다. 이전 버전의 경우 Blob Storage는 상태 코드 201(생성됨)을 반환합니다.
Blob 스냅샷 복사
원본 Blob이 복사되면 원본 Blob의 스냅샷 또는 버전이 대상에 복사되지 않습니다. 대상 Blob을 복사본으로 덮어쓰면 대상 Blob과 연결된 모든 스냅샷 또는 버전이 해당 이름 아래에 그대로 유지됩니다.
복사 작업을 수행하여 온라인 계층(핫 또는 쿨)에 있는 한 기본 Blob을 통해 스냅샷을 승격할 수 있습니다. 이러한 방식으로 이전 버전의 Blob을 복원할 수 있습니다. 스냅샷은 유지되지만 대상은 읽고 쓸 수 있는 복사본으로 덮어씁니다.
Blob 버전 복사
복사 작업을 수행하여 온라인 계층(핫 또는 쿨)에 있는 한 기본 Blob을 통해 버전을 승격할 수 있습니다. 이러한 방식으로 이전 버전의 Blob을 복원할 수 있습니다. 버전은 남아 있지만 대상은 읽고 쓸 수 있는 복사본으로 덮어씁니다.
보관된 Blob 복사
버전 2018-11-09부터 보관된 Blob을 동일한 스토리지 계정 내의 새 Blob에 복사할 수 있습니다. 원본 Blob은 보관 계층에 남아 있습니다. 원본 Blob이 보관된 Blob인 경우 요청에는 대상 Blob의 계층을 나타내는 헤더가 포함되어야 x-ms-access-tier
합니다. 대상 Blob은 온라인 계층에 있어야 합니다. 보관 계층의 Blob에 복사할 수 없습니다.
버전 2021-02-12부터 대상 계정이 원본 계정과 동일한 지역에 있는 한 보관된 Blob을 다른 스토리지 계정의 온라인 계층에 복사할 수 있습니다.
원본 Blob이 리하이드레이션되는 경우 요청이 실패할 수 있습니다.
블록 Blob 수준의 계층화에 대한 자세한 내용은 핫, 쿨 및 보관 스토리지 계층을 참조하세요.
보류 중인 복사 작업 작업(버전 2012-02-12 이상)
Copy Blob
작업이 비동기적으로 완료되면 다음 표를 사용하여 반환된 상태 코드에 따라 다음 단계를 결정합니다.
상태 코드 | 의미 |
---|---|
202(수락됨), x-ms-copy-status: success | 복사 작업이 성공적으로 완료되었습니다. |
202(수락됨), x-ms-copy-status: 보류 중 | 복사 작업이 완료되지 않았습니다. 를 사용하여 Get Blob Properties 대상 Blob을 폴링하여 작업이 완료되거나 실패할 때까지 헤더를 검사 x-ms-copy-status 합니다. |
4xx, 500 또는 503 | 복사 작업이 실패했습니다. |
작업 중 및 작업 후에 Copy Blob
대상 Blob의 속성에는 작업의 복사 ID Copy Blob
와 원본 Blob의 URL이 포함됩니다. 작업이 완료되면 Blob Storage는 시간 및 결과 값(success
, failed
또는 aborted
)을 대상 Blob의 속성에 씁니다. 작업에 failed
결과가 있으면 x-ms-copy-status-description
헤더에 오류 세부 정보 문자열이 포함됩니다.
보류 중인 Copy Blob
작업에는 2주 제한 시간이 있습니다. 2주 후에도 완료되지 않은 복사 시도는 시간이 초과되고 필드가 500(OperationCancelled)으로 설정된 failed
x-ms-copy-status-description
빈 Blob을 x-ms-copy-status
남깁니다. 복사 작업 중에 발생할 수 있는 일시적인 치명적이지 않은 오류는 작업의 진행을 방해할 수 있지만 실패하지는 않을 수 있습니다. 이러한 경우 x-ms-copy-status-description
일시적인 오류를 설명합니다.
복사 작업 중에 대상 Blob을 수정하거나 스냅샷을 생성하려고 하면 상태 코드 409(충돌), "Blob 복사 진행 중"으로 실패합니다.
작업을 호출 Abort Copy Blob
하면 헤더가 x-ms-copy-status:aborted
표시됩니다. 대상 Blob에는 손상되지 않은 메타데이터와 0바이트의 Blob 길이가 있습니다. 원래 Copy Blob
호출을 반복하여 복사 작업을 다시 시도할 수 있습니다.
Copy Blob
작업이 동기적으로 완료되면 다음 표를 사용하여 복사 작업의 상태를 확인합니다.
상태 코드 | 의미 |
---|---|
202(수락됨), x-ms-copy-status: success | 복사 작업이 성공적으로 완료되었습니다. |
4xx, 500 또는 503 | 복사 작업이 실패했습니다. |
계층은 Premium Storage 계층에 대해 상속됩니다. 블록 Blob의 경우 대상 Blob을 덮어쓰면 제공되지 않은 경우 x-ms-access-tier
대상에서 핫 또는 쿨 계층이 상속됩니다. 보관된 Blob을 덮어쓰지 못합니다. 블록 Blob 수준의 계층화에 대한 자세한 내용은 핫, 쿨 및 보관 스토리지 계층을 참조하세요.
청구서 발행
가격 책정 요청은 Blob Storage REST API를 통해 직접 Blob Storage API를 사용하는 클라이언트 또는 Azure Storage 클라이언트 라이브러리에서 비롯할 수 있습니다. 이러한 요청은 트랜잭션당 요금이 발생합니다. 트랜잭션 유형은 계정에 청구되는 방식에 영향을 줍니다. 예를 들어 읽기 트랜잭션은 쓰기 트랜잭션과 다른 청구 범주에 발생합니다. 다음 표에서는 스토리지 계정 유형에 따라 Copy Blob
요청에 대한 청구 범주를 보여 줍니다.
수술 | Storage 계정 유형 | 청구 범주 |
---|---|---|
Blob 복사(대상 계정1) | 프리미엄 블록 Blob 표준 범용 v2 표준 범용 v1 |
쓰기 작업 |
Blob 복사(원본 계정2) | 프리미엄 블록 Blob 표준 범용 v2 표준 범용 v1 |
읽기 작업 |
1 개대상 계정에는 쓰기를 시작하기 위해 하나의 트랜잭션에 대해 요금이 청구됩니다.
2 개원본 개체가 다른 계정에 있는 경우 원본 계정은 원본 개체에 대한 각 읽기 요청에 대해 하나의 트랜잭션을 발생시킵니다.
지정된 청구 범주의 가격 책정에 대한 자세한 내용은 Azure Blob Storage 가격 책정을 참조하세요.
또한 대상 계정에는 복사 작업을 취소하거나( Blob 복사 중단 참조) 복사 작업의 상태를 확인( Blob 가져오기 또는 Blob 속성 가져오기 참조)하기 위한 각 요청에 대한 트랜잭션 비용이 발생합니다.
또한 원본 및 대상 계정이 서로 다른 지역(예: 미국 북부 및 미국 남부)에 있는 경우 요청을 전송하는 데 사용하는 대역폭은 원본 스토리지 계정에 송신으로 청구됩니다. 동일한 지역 내의 계정 간 송신은 무료입니다.
원본 Blob을 동일한 계정 내에서 이름이 다른 대상 Blob에 복사하는 경우 새 Blob에 대한 추가 스토리지 리소스를 사용합니다. 그런 다음 복사 작업으로 인해 해당 추가 리소스에 대한 스토리지 계정의 용량 사용량에 대한 요금이 청구됩니다. 그러나 원본 및 대상 Blob의 이름이 동일한 계정 내에서 동일한 경우(예: 스냅샷을 기본 Blob으로 승격하는 경우) 버전 2012-02-12 이상에 저장된 추가 복사 메타데이터 외에 추가 요금이 발생하지 않습니다.
기본 Blob을 대체하기 위해 스냅샷을 승격하면 스냅샷과 기본 Blob이 동일해집니다. 블록 또는 페이지를 공유하므로 복사 작업으로 인해 스토리지 계정의 용량 사용량에 대한 추가 요금이 발생하지 않습니다. 그러나 이름이 다른 대상 Blob에 스냅샷을 복사하는 경우 해당 작업으로 인해 결과 새 Blob에서 사용하는 스토리지 리소스에 대한 추가 요금이 발생합니다. 이름이 다른 두 Blob은 동일하더라도 블록 또는 페이지를 공유할 수 없습니다. 스냅샷 비용 시나리오에 대한 자세한 내용은 스냅샷에 요금이 발생하는 방식 이해를 참조하세요.
참고하십시오
Azure Storage 대한 요청 권한 부여
상태 및 오류 코드
Blob Storage 오류 코드
스냅샷에 요금이 발생하는 방식 이해
Blob 복사 중단