機器翻譯

作業 Incremental Copy Blob 會將來源分頁 Blob 的快照集複製到目的地分頁 Blob。 只有先前複製快照集的差異會傳送至目的地。 複製的快照集是原始快照集的完整複本,您可以像往常一樣讀取或複製它們。 自 REST 2016-05-31 版起,支援此 API。

要求

您可以建構 Incremental Copy Blob 要求,如下所示。 建議使用 HTTPS。 將 myaccount 取代為您的記憶體帳戶名稱、 將 mycontainer 取代為您的容器名稱,並將 myblob 取代為目的地 Blob 的名稱。 comp查詢參數的值incrementalcopy為 ,表示此要求是建立增量快照集。

PUT 方法要求 URI HTTP 版本
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=incrementalcopy HTTP/1.1

模擬記憶體服務 URI

當您對模擬記憶體服務提出要求時,請將模擬器主機名和 Azure Blob 儲存體 服務埠指定為 127.0.0.0.1:10000,後面接著仿真的記憶體帳戶名稱。 也表示此要求適用於累加複製,方法是將 comp 查詢參數設定為 incrementalcopy

PUT 方法要求 URI HTTP 版本
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=incrementalcopy HTTP/1.1

如需詳細資訊,請參閱 使用 Azurite 模擬器進行本機 Azure 記憶體開發

URI 參數

您可以在要求 URI 上指定下列其他參數。

參數 描述
timeout 選擇性。 timeout 參數以秒為單位。 如需詳細資訊,請參閱 設定 Blob 記憶體作業的逾時

要求標頭

下表描述必要的和選用的要求標頭。

要求標頭 描述
Authorization 必要。 指定授權配置、帳戶名稱和簽章。 如需詳細資訊,請參閱授權對 Azure 儲存體提出要求
Datex-ms-date 必要。 指定要求的「國際標準時間」(UTC)。 如需詳細資訊,請參閱授權對 Azure 儲存體提出要求
x-ms-version 所有已授權要求的必要專案,以及匿名要求的選擇性要求。 指定用於這個要求的作業版本。 如需詳細資訊,請參閱 Azure 儲存體服務的版本
If-Modified-Since 選擇性。 DateTime 值。 只有在指定日期/時間修改目的地 Blob 時,才能指定此條件式標頭以複製 Blob。 如果目的地 Blob 尚未修改,Blob 記憶體會傳回狀態代碼 412 (前置條件失敗) 。
If-Unmodified-Since 選擇性。 DateTime 值。 只有在目的地 Blob 自指定的日期/時間之後尚未修改時,才指定此條件式標頭來複製 Blob。 如果目的地 Blob 已修改,Blob 記憶體會傳回狀態代碼 412 (前置條件失敗) 。
If-Match 選擇性。 ETag 值。 ETag只有在指定的ETag值符合ETag現有目的地 Blob 的值時,才指定這個條件標頭的值來複製 Blob。 ETag如果目的地 Blob 的 不符合ETag指定的 If-Match,Blob 記憶體會傳回狀態代碼 412 (前置條件失敗) 。
If-None-Match 選擇性。 ETag值或通配符 (*) 。

ETag只有在指定的ETag值不符合ETag目的地 Blob 的值時,才指定此條件標頭的值來複製 Blob。

指定通配符 (*) 執行作業,只有當目的地 Blob 不存在時。

如果不符合指定的條件,Blob 記憶體會傳回狀態代碼 412 (前置條件失敗) 。
x-ms-copy-source:name 必要。 指定來源分頁 Blob 快照集的名稱。

此值的 URL 長度上限為 2 kibibytes (KiB) ,指定分頁 Blob 快照集。 此值應該像出現在要求 URI 中一樣以 URL 編碼。 來源 Blob URI 可以透過下列兩種方式之一獲得授權:

來源 Blob URI 可以參考分頁 Blob 快照集,但必須包含共用存取簽章, (在快照集基底 Blob 上建立的 SAS) 令牌。 SAS 的已簽署資源 (sr) 欄位應設定為 b。 例如:https://<account-name>.blob.core.windows.net/<container-name>/<page-blob-name>?snapshot=2022-07-23T00:14:45.3964054Z&sp=r&st=2022-07-23T00:15:38Z&se=2022-07-23T08:15:38Z&spr=https&sv=2021-06-08&sr=b&sig=<signature>

來源 Blob URI 可以參考公用分頁 Blob 快照集;例如, https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>
x-ms-client-request-id 選擇性。 提供客戶端產生的不透明值,其中包含設定記錄時記錄在記錄中的 1-KiB 字元限制。 強烈建議您使用此標頭,將用戶端活動與伺服器接收的要求相互關聯。 如需詳細資訊,請參閱監視 Azure Blob 儲存體

要求本文

無。

回應

回應包括 HTTP 狀態碼和一組回應標頭。

狀態碼

成功的作業會傳回狀態碼「202 (已接受)」。 如需狀態代碼的相關信息,請參閱 狀態和錯誤碼

回應標頭

這項作業的回應包括下列標頭。 回應也可以包含額外的標準 HTTP 標頭。 所有標準標頭都符合 HTTP/1.1 通訊協議規格

語法 描述
ETag 包含可用來有條件地執行作業的值。 此值以引弧括住。
Last-Modified 上次修改 Blob 的時間與日期。 如需詳細資訊,請參閱 標頭中的日期/時間值表示

Blob 上的任何寫入作業 (包括 Blob 元數據或屬性的更新,) 變更 Blob 上次修改的時間。
x-ms-request-id 可唯一識別提出的要求,並可用於對要求進行疑難解答。 如需詳細資訊,請參閱 針對 API 作業進行疑難解答
x-ms-version 指出用來執行要求的 Blob 記憶體版本。
Date UTC 日期/時間值,指出起始響應的時間。 服務會產生此值。
x-ms-copy-id: <id> 這個複製作業的字串標識碼。 使用 搭配 Get Blob Properties 來檢查此複製作業的狀態,或傳遞 至 Abort Copy Blob 以停止暫止的複本。
x-ms-copy-status: pending 複製作業的狀態。 這一律為擱置中,表示複本已啟動且正在進行中。
x-ms-client-request-id 可用來針對要求和對應的回應進行疑難解答。 如果此標頭存在於要求中,則此標頭的值等於標頭的值 x-ms-client-request-id 。 此值最多為 1,024 個可見的 ASCII 字元。 x-ms-client-request-id如果要求中沒有標頭,它就不會出現在回應中。

回應本文

無。

範例回應

以下是執行累加複製之要求的範例回應:

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: 2016-05-31
x-ms-copy-id: 1f812371-a41d-49e6-b123-f4b542e851c5
x-ms-copy-status: pending
Date: <date> 

授權

在 Azure 記憶體中呼叫任何數據存取作業時,需要授權。 下一節說明如何授權作業的Incremental Copy Blob目的地物件。 個別授權來源 Blob 或檔案的存取權,如要求標頭的詳細 x-ms-copy-source 數據中所述。

重要

Microsoft 建議使用 Microsoft Entra ID 搭配受控識別來授權 Azure 記憶體的要求。 相較於共用密鑰授權,Microsoft Entra ID 提供更高的安全性和易於使用性。

Azure 記憶體支援使用 Microsoft Entra ID 來授權 Blob 數據的要求。 使用 Microsoft Entra ID,您可以使用 Azure 角色型存取控制 (Azure RBAC) 授與安全性主體的許可權。 安全性主體可能是使用者、群組、應用程式服務主體或 Azure 受控識別。 安全性主體會由 Microsoft Entra ID 進行驗證,以傳回 OAuth 2.0 令牌。 權杖接著可以用來授權對 Blob 服務的要求。

若要深入瞭解使用 Microsoft Entra ID 授權,請參閱使用 Microsoft Entra ID 授權 Blob 的存取權。

權限

以下是 Microsoft Entra 使用者、群組、受控識別或服務主體呼叫Incremental Copy Blob作業所需的 RBAC 動作,以及包含此動作的最低特殊許可權 Azure RBAC 角色:

若要深入瞭解如何使用 Azure RBAC 指派角色,請參閱 指派 Azure 角色以存取 Blob 數據

備註

累加複製的目的地必須不存在,或必須已使用來自相同來源 Blob 的先前增量複本建立。 建立之後,目的地 Blob 會永久與來源相關聯,而且只能用於增量複本。 Get Blob PropertiesList Blobs API 指出 Blob 是否為以這種方式建立的累加複製 Blob。

您無法直接下載累加複製 Blob。 唯一支援的作業是 Get Blob PropertiesIncremental Copy BlobDelete Blob。 您可以如往常一樣讀取和刪除複製的快照集。

您必須以異步方式在服務上執行累加複製,而且必須輪詢完成。 如需如何輪詢暫止複本的詳細資訊, Copy Blob 請參閱 API。 當複製完成時,目的地 Blob 將會包含新的快照集。 API 會 Get Blob Properties 傳回新建立快照集的快照集時間。

第一次在目的地 Blob 上執行累加複製時,會建立新的 Blob,並具有從來源完整複製的快照集。 每個後續呼叫 Incremental Copy Blob 都會建立新的快照集,只要從先前複製的快照集複製差異變更即可。

差異變更是透過在來源 Blob 快照集上發出 Get Page Ranges 呼叫,在伺服器上計算。 設定 prevsnapshot 為最近複製的快照集。 因此,對的相同限制 Get Page Ranges 也適用於 Incremental Copy Blob。 具體來說,您必須以遞增順序複製快照集,如果使用 或 Copy Blob重新建立Put Blob來源 Blob,則Incremental Copy Blob新的快照集將會失敗。

複製快照集所耗用的額外儲存空間是複製期間傳輸的差異數據大小。 您可以藉由在快照集上執行差異 Get Page Ranges API 呼叫來判斷此大小,以將其與先前的快照集進行比較。

另請參閱

授權對 Azure 記憶體的要求
狀態和錯誤碼
設定 Blob 記憶體作業的逾時