Incremental Copy Blob

Der Incremental Copy Blob Vorgang kopiert eine Momentaufnahme des Quellseitenblobs in ein Zielseitenblob. Nur die Unterschiede zu den zuvor kopierten Momentaufnahme werden an das Ziel übertragen. Bei den kopierten Momentaufnahmen handelt es sich um vollständige Kopien der ursprünglichen Momentaufnahme, die Sie wie gewohnt lesen oder daraus kopieren können. Diese API wird seit REST-Version 2016-05-31 unterstützt.

Anforderung

Sie können die Incremental Copy Blob Anforderung wie folgt erstellen. HTTPS wird empfohlen. Ersetzen Sie myaccount durch den Namen Ihres Speicherkontos, mycontainer durch den Namen Ihres Containers und myblob durch den Namen Ihres Zielblobs. Der comp Abfrageparameter mit dem Wert gibt incrementalcopyan, dass diese Anforderung eine inkrementelle Momentaufnahme erstellt.

PUT-Methodenanforderungs-URI HTTP-Version
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=incrementalcopy HTTP/1.1

Emulierter Speicherdienst-URI

Wenn Sie eine Anforderung an den emulierten Speicherdienst stellen, geben Sie den Emulatorhostnamen und Azure Blob Storage Dienstport als 127.0.0.1:10000 an, gefolgt vom namen des emulierten Speicherkontos. Geben Sie auch an, dass diese Anforderung für das inkrementelle Kopieren gilt, indem Sie den comp Abfrageparameter auf incrementalcopyfestlegen.

PUT-Methodenanforderungs-URI HTTP-Version
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=incrementalcopy HTTP/1.1

Weitere Informationen finden Sie unter Verwenden des Azurite-Emulators für die lokale Azure Storage-Entwicklung.

URI-Parameter

Sie können die folgenden zusätzlichen Parameter für den Anforderungs-URI angeben.

Parameter BESCHREIBUNG
timeout Optional. Der timeout-Parameter wird in Sekunden angegeben. Weitere Informationen finden Sie unter Festlegen von Timeouts für Blob Storage-Vorgänge.

Anforderungsheader

In der folgenden Tabelle werden erforderliche und optionale Anforderungsheader beschrieben.

Anforderungsheader BESCHREIBUNG
Authorization Erforderlich. Gibt das Autorisierungsschema, den Kontonamen und die Signatur an. Weitere Informationen finden Sie unter Autorisieren von Anforderungen an Azure Storage.
Date oder x-ms-date Erforderlich. Gibt die koordinierte Weltzeit (Coordinated Universal Time, UTC) für die Anforderung an. Weitere Informationen finden Sie unter Autorisieren von Anforderungen an Azure Storage.
x-ms-version Erforderlich für alle autorisierten Anforderungen und optional für anonyme Anforderungen. Gibt die Version des für die Anforderung zu verwendenden Vorgangs an. Weitere Informationen finden Sie unter Versionsverwaltung für die Azure-Speicherdienste.
If-Modified-Since Optional. Ein DateTime-Wert. Geben Sie diesen bedingten Header an, um das BLOB nur dann zu kopieren, wenn das Ziel-BLOB seit dem angegebenen Datum bzw. der angegebenen Uhrzeit geändert wurde. Wenn das Zielblob nicht geändert wurde, gibt Blob Storage status Code 412 (Vorbedingungsfehler) zurück.
If-Unmodified-Since Optional. Ein DateTime-Wert. Geben Sie diesen bedingten Header an, um das Blob nur zu kopieren, wenn das Zielblob seit dem angegebenen Datum/der angegebenen Uhrzeit nicht geändert wurde. Wenn das Zielblob geändert wurde, gibt Blob Storage status Code 412 (Vorbedingungsfehler) zurück.
If-Match Optional. Ein ETag-Wert. Geben Sie einen ETag Wert für diesen bedingten Header zum Kopieren des Blobs an, nur wenn der angegebene ETag Wert mit dem ETag Wert für ein vorhandenes Zielblob übereinstimmt. Wenn der ETag für das Zielblob nicht mit dem ETag für übereinstimmtIf-Match, gibt Blob Storage status Code 412 (Fehler bei Vorbedingung) zurück.
If-None-Match Optional. Ein ETag -Wert oder das Wildcardzeichen (*).

Geben Sie einen ETag Wert für diesen bedingten Header an, um das Blob zu kopieren, nur wenn der angegebene ETag Wert nicht mit dem ETag Wert für das Zielblob übereinstimmt.

Geben Sie das Wildcardzeichen (*) zum Ausführen des Vorgangs nur an, wenn das Zielblob nicht vorhanden ist.

Wenn die angegebene Bedingung nicht erfüllt ist, gibt Blob Storage status Code 412 (Vorbedingung fehlgeschlagen) zurück.
x-ms-copy-source:name Erforderlich. Gibt den Namen des Quellseitenblobs Momentaufnahme an.

Dieser Wert ist eine URL mit einer Länge von bis zu 2 Kibibyte (KiB), die ein Seitenblob Momentaufnahme angibt. Der Wert sollte so URL-codiert sein, wie er in einem Anforderungs-URI verwendet wird. Der Quellblob-URI kann auf zwei Arten autorisiert werden:

Der Quellblob-URI kann auf ein Seitenblob Momentaufnahme verweisen, muss jedoch ein SAS-Token (Shared Access Signature) enthalten, das im Basisblob des Momentaufnahme erstellt wurde. Das Feld der signierten Ressource (sr) der SAS sollte auf bfestgelegt werden. Beispiel: 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>.

Der Quellblob-URI kann auf ein öffentliches Seitenblob Momentaufnahme verweisen, https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>z. B. .
x-ms-client-request-id Optional. Stellt einen vom Client generierten, undurchsichtigen Wert mit einem Zeichenlimit von 1 KiB bereit, der in den Protokollen aufgezeichnet wird, wenn die Protokollierung konfiguriert ist. Es wird dringend empfohlen, diesen Header zu verwenden, um clientseitige Aktivitäten mit Anforderungen zu korrelieren, die der Server empfängt. Weitere Informationen finden Sie unter Überwachen Azure Blob Storage.

Anforderungstext

Keine.

Antwort

Die Antwort enthält den HTTP-Statuscode und einen Satz von Antwortheadern.

Statuscode

Ein erfolgreicher Vorgang gibt den Statuscode 202 (Akzeptiert) zurück. Informationen zu status Codes finden Sie unter Status- und Fehlercodes.

Antwortheader

Die Antwort für diesen Vorgang umfasst die folgenden Header. Die Antwort kann auch zusätzliche HTTP-Standardheader enthalten. Alle Standardheader entsprechen der HTTP/1.1-Protokollspezifikation.

Syntax BESCHREIBUNG
ETag Enthält einen Wert, den Sie zum bedingten Ausführen von Vorgängen verwenden können. Der Wert befindet sich in Anführungszeichen.
Last-Modified Das Datum und die Uhrzeit der letzten Änderung des Blobs. Weitere Informationen finden Sie unter Darstellung von Datums-/Uhrzeitwerten in Headern.

Jeder Schreibvorgang für das Blob (einschließlich Aktualisierungen der Metadaten oder Eigenschaften des Blobs) ändert den Zeitpunkt der letzten Änderung des Blobs.
x-ms-request-id Identifiziert die durchgeführte Anforderung eindeutig und kann für die Problembehandlung der Anforderung verwendet werden. Weitere Informationen finden Sie unter Problembehandlung für API-Vorgänge.
x-ms-version Gibt die Version von Blob Storage an, die zum Ausführen der Anforderung verwendet wird.
Date Ein UTC-Datums-/Uhrzeitwert, der den Zeitpunkt angibt, zu dem die Antwort initiiert wurde. Der Dienst generiert diesen Wert.
x-ms-copy-id: <id> Der Zeichenfolgenbezeichner für diesen Kopiervorgang. Verwenden Sie mitGet Blob Properties, um die status dieses Kopiervorgangs zu überprüfen, oder übergeben Sie an, um Abort Copy Blob eine ausstehende Kopie zu beenden.
x-ms-copy-status: pending Der Status des Kopiervorgangs. Dies ist immer ausstehend, um anzugeben, dass die Kopie gestartet wurde und ausgeführt wird.
x-ms-client-request-id Kann zur Problembehandlung von Anforderungen und entsprechenden Antworten verwendet werden. Der Wert dieses Headers ist gleich dem Wert des x-ms-client-request-id Headers, wenn er in der Anforderung vorhanden ist. Der Wert beträgt höchstens 1.024 sichtbare ASCII-Zeichen. Wenn der x-ms-client-request-id Header in der Anforderung nicht vorhanden ist, ist er in der Antwort nicht vorhanden.

Antworttext

Keine.

Beispiel für eine Antwort

Es folgt eine Beispielantwort für eine Anforderung zum Ausführen einer inkrementellen Kopie:

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> 

Authorization

Beim Aufrufen eines Datenzugriffsvorgangs in Azure Storage ist eine Autorisierung erforderlich. Im folgenden Abschnitt wird beschrieben, wie das Zielobjekt für den Incremental Copy Blob Vorgang autorisiert werden kann. Der Zugriff auf das Quellblob oder die Quelldatei wird separat autorisiert, wie in den Details für den Anforderungsheader x-ms-copy-source beschrieben.

Wichtig

Microsoft empfiehlt die Verwendung von Microsoft Entra ID mit verwalteten Identitäten, um Anforderungen an Azure Storage zu autorisieren. Microsoft Entra ID bietet im Vergleich zur Autorisierung mit gemeinsam genutzten Schlüsseln eine höhere Sicherheit und Benutzerfreundlichkeit.

Azure Storage unterstützt die Verwendung von Microsoft Entra ID zum Autorisieren von Anforderungen für Blobdaten. Mit Microsoft Entra ID können Sie die rollenbasierte Zugriffssteuerung von Azure (Azure RBAC) verwenden, um einem Sicherheitsprinzipal Berechtigungen zu erteilen. Der Sicherheitsprinzipal kann ein Benutzer, eine Gruppe, ein Anwendungsdienstprinzipal oder eine verwaltete Azure-Identität sein. Der Sicherheitsprinzipal wird von Microsoft Entra ID authentifiziert, um ein OAuth 2.0-Token zurückzugeben. Das Token kann anschließend zum Autorisieren einer Anforderung an den Blob-Dienst verwendet werden.

Weitere Informationen zur Autorisierung mit Microsoft Entra ID finden Sie unter Autorisieren des Zugriffs auf Blobs mithilfe von Microsoft Entra ID.

Berechtigungen

Nachfolgend sind die RBAC-Aktion aufgeführt, die für einen Microsoft Entra Benutzer, eine Gruppe, eine verwaltete Identität oder einen Dienstprinzipal erforderlich ist, um den Incremental Copy Blob Vorgang aufzurufen, und die integrierte Azure RBAC-Rolle mit den geringsten Berechtigungen, die diese Aktion enthält:

Weitere Informationen zum Zuweisen von Rollen mithilfe von Azure RBAC finden Sie unter Zuweisen einer Azure-Rolle für den Zugriff auf Blobdaten.

Hinweise

Das Ziel einer inkrementellen Kopie darf entweder nicht vorhanden sein oder muss mit einer vorherigen inkrementellen Kopie aus demselben Quellblob erstellt worden sein. Nach der Erstellung ist das Zielblob dauerhaft der Quelle zugeordnet und kann nur für inkrementelle Kopien verwendet werden. Die Get Blob Properties APIs und List Blobs geben an, ob es sich bei dem Blob um ein inkrementelles Kopierblob handelt, das auf diese Weise erstellt wurde.

Sie können inkrementelle Kopierblobs nicht direkt herunterladen. Die einzigen unterstützten Vorgänge sind Get Blob Properties, Incremental Copy Blobund Delete Blob. Sie können die kopierten Momentaufnahmen wie gewohnt lesen und löschen.

Sie führen eine inkrementelle Kopie asynchron für den Dienst aus, und Sie müssen den Abschluss abfragen. Ausführliche Informationen zum Abfragen einer ausstehenden Kopie finden Sie in der Copy Blob API. Nach Abschluss des Kopiervorgangs enthält das Zielblob eine neue Momentaufnahme. Die Get Blob Properties API gibt die Momentaufnahme Zeit des neu erstellten Momentaufnahme zurück.

Wenn Sie zum ersten Mal eine inkrementelle Kopie für ein Zielblob durchführen, wird ein neues Blob mit einem Momentaufnahme erstellt, der vollständig aus der Quelle kopiert wird. Jeder nachfolgende Aufruf von Incremental Copy Blob erstellt eine neue Momentaufnahme, indem nur die differenziellen Änderungen aus dem zuvor kopierten Momentaufnahme kopiert werden.

Die differenziellen Änderungen werden auf dem Server berechnet, indem ein Get Page Ranges Aufruf für das Quellblob Momentaufnahme. Legen Sie auf den zuletzt kopierten Momentaufnahme festprevsnapshot. Daher gelten die gleichen Einschränkungen für Get Page Ranges für Incremental Copy Blob. Insbesondere müssen Sie Momentaufnahmen in aufsteigender Reihenfolge kopieren, und wenn das Quellblob mit Put Blob oder Copy Blobneu erstellt wird, Incremental Copy Blob tritt bei neuen Momentaufnahmen ein Fehler auf.

Der zusätzliche Speicherplatz, der vom kopierten Momentaufnahme verbraucht wird, ist die Größe der differenziellen Daten, die während des Kopiervorgangs übertragen werden. Sie können diese Größe ermitteln, indem Sie einen differenziellen Get Page Ranges API-Aufruf für die Momentaufnahme ausführen, um sie mit dem vorherigen Momentaufnahme zu vergleichen.

Weitere Informationen

Autorisieren von Anforderungen an Azure Storage
Status- und Fehlercodes
Festlegen von Timeouts für Blob Storage-Vorgänge