영업: 1-800-867-1380

Blob 복사

업데이트 날짜: 2014년 10월

Copy Blob 작업은 저장소 계정 내에서 대상에 blob를 복사합니다. 2012-02-12 버전 이상에서 Copy Blob 작업의 원본은 모든 Azure 저장소 계정에서 커밋된 blob일 수 있습니다.

note참고
다른 저장소 계정에서 복사하는 Copy Blob 작업은 2012년 6월 7일 이후 생성된 저장소 계정에서만 허용됩니다.

다음과 같이 Copy Blob 요청을 생성할 수 있습니다. HTTPS를 사용하는 것이 좋습니다. myaccount를 저장소 계정 이름으로 바꾸고, mycontainer를 컨테이너 이름으로 바꾸고, myblob을 대상 blob 이름으로 바꿉니다. 2013-08-15 버전부터 대상 blob에 대한 공유 액세스 서명을 지정할 수 있습니다.

 

  PUT 메서드 요청 URI HTTP 버전

https://myaccount.blob.core.windows.net/mycontainer/myblob

HTTP/1.1

에뮬레이트된 저장소 서비스에 대해 요청을 수행할 때는 에뮬레이터 호스트 이름 및 Blob 서비스 포트를 127.0.0.1:10000으로 지정하고 뒤에 에뮬레이트된 저장소 계정 이름을 붙입니다.

 

  PUT 메서드 요청 URI HTTP 버전

http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob

HTTP/1.1

자세한 내용은 개발 및 테스트에 Azure 저장소 에뮬레이터 사용를 참조하십시오.

요청 URI에 다음과 같은 추가 매개 변수를 지정할 수 있습니다.

 

매개 변수 설명

timeout

선택적 요소입니다. timeout 매개 변수는 초 단위로 표시됩니다. 자세한 내용은 Blob 서비스 작업의 제한 시간 설정를 참조하십시오.

다음 표에서는 필수 요청 헤더와 선택적 요청 헤더에 대해 설명합니다.

 

요청 헤더 설명

Authorization

필수 사항입니다. 인증 체계, 계정 이름 및 서명을 지정합니다. 자세한 내용은 Azure 저장소 서비스에 대한 인증를 참조하십시오.

Date 또는 x-ms-date

필수 사항입니다. 요청의 UCT(협정 세계시)를 지정합니다. 자세한 내용은 Azure 저장소 서비스에 대한 인증를 참조하십시오.

x-ms-version

인증된 모든 요청의 경우 필수입니다. 자세한 내용은 Azure 저장소 서비스 버전 관리를 참조하십시오.

x-ms-meta-name:value

선택적 요소입니다. blob와 연결된 사용자 정의 이름-값 쌍을 지정합니다. 이름-값 쌍이 지정되지 않은 경우 원본 blob 메타데이터를 대상 blob로 복사합니다. 이름-값 쌍이 하나 이상 지정되었으면 지정된 메타데이터를 사용해서 대상 blob가 생성되고, 원본 blob에서 메타데이터가 복사되지 않습니다.

2009-09-19 버전부터는 메타데이터 이름이 C# 식별자의 명명 규칙을 따라야 합니다. 자세한 내용은 컨테이너와 Blob, 메타데이터의 이름 지정 및 참조을 참조하십시오.

x-ms-source-if-modified-since

선택적 요소입니다. DateTime 값입니다. 지정된 날짜/시간 이후 원본 blob가 수정된 경우에만 blob를 복사하려면 이 조건부 헤더를 지정합니다. 원본 blob가 수정되지 않은 경우 Blob 서비스가 상태 코드 412(전제 조건 실패)를 반환합니다.

x-ms-source-if-unmodified-since

선택적 요소입니다. DateTime 값입니다. 지정된 날짜/시간 이후 원본 blob가 수정되지 않은 경우에만 blob를 복사하려면 이 조건부 헤더를 지정합니다. 원본 blob가 수정된 경우 Blob 서비스가 상태 코드 412(전제 조건 실패)를 반환합니다.

x-ms-source-if-match

선택적 요소입니다. ETag 값입니다. ETag가 지정된 값과 일치하는 경우에만 원본 blob를 복사하려면 이 조건부 헤더를 지정합니다. ETag 값이 일치하지 않으면 Blob 서비스가 상태 코드 412(전제 조건 실패)를 반환합니다.

x-ms-source-if-none-match

선택적 요소입니다. ETag 값입니다. ETag가 지정된 값과 일치하지 않는 경우에만 blob를 복사하려면 이 조건부 헤더를 지정합니다. 값이 동일하면 Blob 서비스가 상태 코드 412(전제 조건 실패)를 반환합니다.

If-Modified-Since

선택적 요소입니다. DateTime 값입니다. 지정된 날짜/시간 이후 대상 blob가 수정된 경우에만 blob를 복사하려면 이 조건부 헤더를 지정합니다. 대상 blob가 수정되지 않은 경우 Blob 서비스가 상태 코드 412(전제 조건 실패)를 반환합니다.

If-Unmodified-Since

선택적 요소입니다. DateTime 값입니다. 지정된 날짜/시간 이후 대상 blob가 수정되지 않은 경우에만 blob를 복사하려면 이 조건부 헤더를 지정합니다. 대상 blob가 수정된 경우 Blob 서비스가 상태 코드 412(전제 조건 실패)를 반환합니다.

If-Match

선택적 요소입니다. ETag 값입니다. 지정된 ETag 값이 기존 대상 blob의 ETag 값과 일치하는 경우에만 blob를 복사하려면 이 조건부 헤더에 대한 ETag 값을 지정합니다. 대상 blob의 ETag가 If-Match에 지정된 ETag와 일치하지 않으면 Blob 서비스가 상태 코드 412(전제 조건 실패)를 반환합니다.

If-None-Match

선택적 요소입니다. ETag 값 또는 와일드카드 문자(*)입니다.

지정된 ETag 값이 대상 blob의 ETag 값과 일치하지 않는 경우에만 blob를 복사하려면 이 조건부 헤더에 대한 ETag 값을 지정합니다.

대상 blob가 존재하지 않는 경우에만 작업을 수행하려면 와일드카드 문자(*)를 지정합니다.

지정된 조건이 충족되지 않으면 Blob 서비스가 상태 코드 412(전제 조건 실패)를 반환합니다.

x-ms-copy-source:name

필수 사항입니다. 원본 blob의 이름을 지정합니다.

2012-02-12 버전 이상에서 이 값은 blob를 지정하는 길이가 최대 2KB인 URL입니다. 값은 요청 URI에 표시되므로 URL 인코딩해야 합니다. 동일한 계정의 원본 blob는 전용일 수 있지만 다른 계정의 blob는 공용이거나 이 URL에 포함된 자격 증명(예: 공유 액세스 서명)을 수락해야 합니다. 다른 저장소 계정에서 복사하는 Copy Blob 작업은 2012년 6월 7일 이후 생성된 저장소 계정에서만 허용됩니다. 가능한 한 HTTPS를 사용하는 것이 좋습니다. 예:

  • https://myaccount.blob.core.windows.net/mycontainer/myblob

  • https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>

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가 포함되지 않거나 유효하지 않은 경우, 작업이 실패하고 상태 코드 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

선택적 요소입니다. 저장소 분석 로깅을 사용하도록 설정한 경우 분석 로그에 기록된 1KB 문자 제한의 클라이언트에서 생성한 불투명 값을 제공합니다. 클라이언트 쪽 작업과 서버가 받은 요청의 상관 관계를 지정하는 데 이 헤더를 사용하는 것이 좋습니다. 자세한 내용은 저장소 분석 로깅 정보Azure 로깅: 로그를 사용하여 저장소 요청 추적을 참조하십시오.

없음.

응답에는 HTTP 상태 코드 및 응답 헤더 집합이 포함되어 있습니다.

2012-02-12 버전 이상에서 작업이 성공하면 상태 코드 202(수락됨)가 반환됩니다.

2012-02-12 이전 버전에서는 작업이 성공하면 상태 코드 201(생성됨)이 반환됩니다.

상태 코드에 대한 자세한 내용은 상태 및 오류 코드를 참조하십시오.

이 작업의 응답에는 다음과 같은 헤더가 포함됩니다. 응답에는 추가 표준 HTTP 헤더가 포함될 수도 있습니다. 모든 표준 헤더는 HTTP/1.1 프로토콜 사양을 따릅니다.

 

응답 헤더 설명

ETag

2012-02-12 버전 이상에서 복사가 완료되면 대상 blob의 ETag가 포함됩니다. 복사가 완료되지 않으면 복사 시작 시에 생성된 빈 blob의 ETag가 포함됩니다.

2012-02-12 이전 버전에서는 대상 blob의 ETag가 반환됩니다.

2011-08-18 버전 이상에서는 ETag 값이 따옴표로 표시됩니다.

Last-Modified

대상 blob에 대한 복사 작업이 완료된 날짜/시간이 반환됩니다.

x-ms-request-id

이 헤더는 수행된 요청을 고유하게 식별하며, 이 헤더를 사용해서 요청 문제를 해결할 수 있습니다. 자세한 내용은 API 작업 문제 해결를 참조하십시오.

x-ms-version

요청을 실행하는 데 사용되는 Blob 서비스의 버전을 나타냅니다. 이 헤더는 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: 복사가 진행 중입니다.

없음.

다음은 blob 복사 요청에 대한 샘플 응답입니다.

Response Status:
HTTP/1.1 202 Accepted

Response Headers: 
Last-Modified: Thu, 09 Feb 2012 23:30:19 GMT 
ETag: "0x8CEB669D794AFE2"
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: cc6b209a-b593-4be1-a38a-dde7c106f402
x-ms-version: 2012-02-12
x-ms-copy-id: 1f812371-a41d-49e6-b123-f4b542e851c5
x-ms-copy-status: pending
Date: Thu, 09 Feb 2012 23:30:18 GMT

이 작업은 계정 소유자만 호출할 수 있습니다. 2013-08-15 이상 버전에 대해 수행된 요청의 경우 대상 blob 또는 해당 컨테이너에 쓸 수 있는 권한이 있는 공유 액세스 서명이 동일한 계정 내의 복사 작업에 지원됩니다. 요청에서 지정된 공유 액세스 서명은 대상 blob에만 적용됩니다. 원본 blob에 대한 액세스 권한은 요청 헤더 x-ms-copy-source에 대한 자세한 내용에서 설명된 대로 별도로 부여됩니다.

2012-02-12 버전 이상에서는 Copy Blob 작업을 비동기적으로 완료할 수 있습니다. 이 작업은 복사 작업 확인 또는 중단을 위해 사용할 수 있는 복사 ID를 반환합니다. Blob 서비스는 최상의 노력으로 blob를 복사합니다.

복사 작업의 원본 blob는 블록 blob 또는 페이지 blob이거나 두 유형 중 하나의 스냅숏일 수 있습니다. 대상 blob가 이미 있으면 원본 blob와 동일한 blob 유형이어야 합니다. 기존 대상 blob는 덮어씁니다. 복사 작업이 진행 중일 때는 대상 blob를 수정할 수 없습니다.

계정 내에서 보류 중인 여러 Copy Blob 작업은 순차적으로 처리될 수 있습니다. 대상 blob는 처리되지 않은 blob 복사 작업을 하나만 포함할 수 있습니다. 즉, blob는 보류 중인 여러 Copy Blob 작업의 대상일 수 없습니다. 이미 보류 중인 복사 작업을 포함하는 대상 blob에 Copy Blob를 시도하면 작업이 실패하고 상태 코드 409(충돌)가 표시됩니다.

다른 저장소 계정에서 복사하는 Copy Blob 작업은 2012년 6월 7일 이후 생성된 저장소 계정에서만 허용됩니다. 다른 저장소 계정에서 2012년 6월 7일 전에 생성된 계정으로 복사하려고 시도하면 작업이 실패하고 상태 코드 400(잘못된 요청)이 표시됩니다.

Copy Blob 작업은 항상 전체 원본 blob를 복사합니다. 특정 바이트 범위 또는 블록 집합에 대한 복사는 지원되지 않습니다.

Copy Blob 작업에 사용할 수 있는 형식은 다음과 같습니다.

  • 다른 이름을 사용해서 원본 blob를 대상 blob에 복사할 수 있습니다. 대상 blob는 동일한 blob 유형(블록 또는 페이지)의 기존 blob일 수 있거나 복사 작업으로 생성된 새 blob일 수 있습니다.

  • 동일한 이름을 사용해서 원본 blob를 대상 blob로 복사하여, 원본 blob를 효과적으로 바꿀 수 있습니다. 이러한 복사 작업은 커밋되지 않은 블록을 제거하고 blob의 메타데이터를 덮어씁니다.

  • 기본 Blob에 대해 스냅숏을 복사할 수 있습니다. 기본 Blob의 위치로 스냅숏을 복사하여 Blob의 이전 버전으로 복원할 수 있습니다.

  • 다른 이름으로 스냅숏을 대상 Blob에 복사할 수 있습니다. 복사된 대상 Blob는 쓰기 가능한 Blob이고 스냅숏이 아닙니다.

페이지 blob로부터 복사할 때 Blob 서비스는 원본 blob의 길이로 처음에 모두 0이 포함된 대상 페이지 blob를 만듭니다. 그런 후 원본 페이지 범위가 열거되고 비어 있지 않은 범위가 복사됩니다. 블록 blob로부터 복사할 때는 커밋된 모든 블록과 해당 블록 ID가 복사됩니다. 커밋되지 않은 블록은 복사되지 않습니다. 블록 blob의 경우 Blob 서비스는 이 작업으로부터 반환되기 전에 길이가 0인 커밋된 blob를 만듭니다. 어느 blob 유형이든 대상 blob에서 Get Blob 또는 Get Blob Properties를 호출하여 복사 작업의 상태를 확인할 수 있습니다. 복사가 완료되면 최종 blob가 커밋됩니다.

복사 작업의 원본이 ETag를 제공할 경우 복사를 진행하는 동안 원본이 변경되면 복사가 실패합니다. 복사를 진행하는 동안 대상 blob를 변경하려고 시도하면 작업이 실패하고 409 충돌이 표시됩니다. 대상 blob에 무한 임대가 포함된 경우에는 임대 ID를 Copy Blob에 전달해야 합니다. 유한 기간 임대는 허용되지 않습니다.

블록 blob의 ETag는 Copy Blob 작업이 시작될 때 그리고 복사가 완료될 때 변경됩니다. 페이지 blob의 ETag는 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 (for page blobs only)

blob가 블록 blob인 경우에는 원본 blob의 커밋된 블록 목록도 대상 blob에 복사됩니다. 커밋되지 않은 블록은 복사되지 않습니다.

대상 blob 크기가 항상 원본 blob와 동일하므로, 대상 blob의 Content-Length 헤더 값은 원본 blob의 값과 일치합니다.

원본 blob 및 대상 blob가 동일하면 Copy Blob로 커밋되지 않은 블록이 제거됩니다. 이 경우 메타데이터가 지정되어 있으면 기존 메타데이터를 새 메타데이터로 덮어씁니다.

임대 Blob 복사

Copy Blob 작업은 원본 blob로부터만 읽기를 수행하므로 원본 blob의 임대 상태는 중요하지 않습니다. 하지만 Copy Blob 작업은 복사가 시작될 때 원본 blob의 ETag를 저장합니다. 복사가 완료되기 전에 ETag 값이 변경되면 복사가 실패합니다. 복사 작업 중 blob를 임대하여 원본 blob가 변경되지 않도록 방지할 수 있습니다.

대상 blob에 활성 무한 임대가 포함된 경우, Copy Blob 작업에 대한 호출에 임대 ID를 지정해야 합니다. 지정한 임대가 활성 유한 기간 임대인 경우 이 호출이 실패하고 상태 코드 412(전제 조건 실패)가 표시됩니다. 복사가 보류 중일 때는 대상 blob에 대한 모든 임대 작업이 실패하고 상태 코드 409(충돌)가 표시됩니다. 대상 blob에 대한 무한 임대는 다른 이름을 사용해서 원본에서 대상 blob로 복사하거나, 원본과 동일한 이름을 사용해서 대상 blob에 복사하거나, 기본 blob에서 스냅숏을 승격하든지 간에 복사 작업 중 이 방식으로 잠깁니다. 클라이언트가 아직 존재하지 않는 blob에 대한 임대 ID를 지정하는 경우, Blob 서비스는 2013-08-15 이상 버전에 대해 수행된 요청의 경우 상태 코드 412(전제 조건 실패)를 반환하고 이전 버전의 경우 상태 코드 201(만들어짐)을 반환합니다.

스냅숏 복사

원본 Blob를 복사할 때 원본 Blob의 모든 스냅숏은 대상으로 복사되지 않습니다. 복사본으로 대상 Blob를 덮어쓸 때 대상 Blob의 모든 스냅숏은 원래 이름을 그대로 유지합니다.

복사 작업을 수행하여 기본 blob에서 스냅숏 blob를 승격할 수 있습니다. 이렇게 하면 이전 버전의 blob를 복원할 수 있습니다. 스냅숏은 그대로 유지되지만 읽고 쓸 수 있는 복사본으로 대상을 덮어씁니다.

보류 중인 복사 작업(2012-02-12 버전 이상)

Copy Blob 작업은 복사를 비동기적으로 완료합니다. 다음 표를 참조해서 Copy Blob로 반환된 상태 코드에 따라 다음 단계를 결정하십시오.

 

상태 코드 의미

202(수락), x-ms-copy-status: 성공

복사가 완료되었습니다.

202(수락), x-ms-copy-status: 보류 중

500 또는 503

복사가 완료되지 않았습니다. Get Blob Properties를 사용해서 대상 blob를 폴링하여 복사가 완료되거나 실패할 때까지 x-ms-copy-status를 확인합니다.

4xx, 500 또는 503

복사하지 못했습니다.

Copy Blob 작업 도중 및 이후, 대상 blob의 속성에는 Copy Blob 작업의 복사 ID 및 원본 blob의 URL이 포함됩니다. 복사가 완료되면 Blob 서비스가 시간 및 결과 값(success, failed 또는 aborted)을 대상 blob 속성에 기록합니다. 작업이 failed가 되면 x-ms-copy-status-description 헤더에 오류 세부 정보 문자열이 포함됩니다.

보류 중인 Copy Blob 작업의 제한 시간은 2주입니다. 2주후에도 완료되지 않은 복사 시도는 시간이 초과되고 x-ms-copy-status 필드가 failed로 설정되고 x-ms-copy-status-description이 500으로(OperationCancelled) 설정된 비어 있는 blob가 남습니다. 복사 중 간헐적으로 발생할 수 있는 치명적이지 않은 오류는 복사 진행을 방해할 수 있지만 복사 작업이 실패하도록 만들지는 않습니다. 이러한 경우 x-ms-copy-status-description에 간헐적인 오류에 대한 설명이 제공됩니다.

복사 중 대상 blob를 수정하거나 이에 대한 스냅숏을 작성하려고 시도하면 작업이 실패하고 409(충돌) Blob 복사 진행 중이 표시됩니다.

Abort Copy Blob 작업을 호출하면 x-ms-copy-status:aborted 헤더가 표시되고 대상 blob의 메타데이터는 그대로 유지되며, blob 길이가 0바이트가 됩니다. Copy Blob에 대한 원래 호출을 반복해서 복사를 다시 시도할 수 있습니다.

청구

Copy Blob 작업의 대상 계정에는 복사 시작을 위한 하나의 트랜잭션이 부과되고, 복사 작업의 상태를 요청하거나 복사 작업을 중단하기 위한 각 요청에 대해서도 하나의 트랜잭션이 발생합니다.

원본 blob가 다른 계정에 있으면 원본 계정에 트랜잭션 비용이 발생합니다. 또한 원본 및 대상 계정이 서로 다른 지역(예: 미국 북부 및 미국 남부)에 있으면 요청 전송을 위해 사용되는 대역폭이 송신량에 따라 원본 저장소 계정에 부과됩니다. 동일 지역 내에서 계정 간 송신은 무료입니다.

동일 계정 내에서 원본 blob를 다른 이름의 대상 blob에 복사할 때는 새 blob에 대해 추가 저장소 리소스가 사용되므로, 복사 작업을 수행하면 이러한 추가 리소스에 대해 저장소 계정의 용량 사용량 요금이 부과됩니다. 하지만 원본 및 대상 blob 이름이 동일 계정 내에서 동일한 경우(예: 스냅숏을 기본 blob로 승격하는 경우), 2012-02-12 버전 이상에 저장된 추가 복사 메타데이터 이외에는 추가 요금이 발생하지 않습니다.

기본 blob를 교체하기 위해 스냅숏을 승격할 때는 스냅숏과 기본 blob가 동일합니다. 이 둘은 블록 또는 페이지를 공유하므로 복사 작업을 수행해도 저장소 계정의 용량 사용량에 대한 추가 요금이 발생하지 않습니다. 하지만 스냅숏을 이름이 다른 대상 blob에 복사할 경우에는 그 결과 발생하는 새 blob에서 사용되는 저장소 리소스에 대한 추가 요금이 발생합니다. 이름이 서로 다른 두 개의 blob는 서로 동일한 경우라도 블록 또는 페이지를 공유할 수 없습니다. 스냅숏 비용 시나리오에 대한 자세한 내용은 스냅숏으로 인해 비용이 발생되는 과정 이해를 참조하십시오.

이 정보가 도움이 되었습니까?
(1500자 남음)
의견을 주셔서 감사합니다.
표시:
© 2015 Microsoft