Freigeben über


Blob für inkrementelle Kopie

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

Anfrage

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 von incrementalcopygibt an, dass diese Anforderung zum Erstellen eines inkrementellen Snapshots verwendet werden soll.

Anforderungs-URI der PUT-Methode 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 senden, geben Sie den Hostnamen des Emulators und den Port des Azure Blob Storage-Diensts als 127.0.0.1:10000 an, gefolgt vom Namen des emulierten Speicherkontos. Geben Sie außerdem an, dass es sich bei dieser Anforderung um inkrementelles Kopieren handelt, indem Sie den comp Abfrageparameter auf incrementalcopyfestlegen.

Anforderungs-URI der PUT-Methode 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 Wahlfrei. Der parameter timeout wird in Sekunden ausgedrückt. Weitere Informationen finden Sie unter Festlegen von Timeouts für Blob Storage-Vorgänge.

Anforderungsheader

In der folgenden Tabelle werden die erforderlichen und optionalen Anforderungsheader beschrieben.

Anforderungs-Kopfzeile 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 (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 Vorgangs an, der für diese Anforderung verwendet werden soll. Weitere Informationen finden Sie unter Versionsverwaltung für die Azure Storage-Dienste.
If-Modified-Since Wahlfrei. Ein DateTime-Wert. Geben Sie diesen bedingten Header an, um den Blob nur zu kopieren, wenn das Ziel-BLOB seit dem angegebenen Datum/der angegebenen Uhrzeit geändert wurde. Wenn das Ziel-BLOB nicht geändert wurde, gibt Blob Storage den Statuscode 412 zurück (Vorbedingung fehlgeschlagen).
If-Unmodified-Since Wahlfrei. Ein DateTime-Wert. Geben Sie diesen bedingten Header an, um das Blob nur dann 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 den Statuscode 412 (Vorbedingung fehlgeschlagen) zurück.
If-Match Wahlfrei. Ein ETag-Wert. Geben Sie nur dann einen ETag Wert für diesen bedingten Header an, um das Blob zu kopieren, wenn der angegebene ETag Wert mit dem ETag Wert für ein vorhandenes Zielblob übereinstimmt. Wenn der für ETag das Zielblob nicht mit dem ETag angegebenen If-Matchfür übereinstimmt, gibt Blob Storage den Statuscode 412 (Vorbedingung fehlgeschlagen) zurück.
If-None-Match Wahlfrei. Ein ETag Wert oder das Platzhalterzeichen (*).

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

Geben Sie das Platzhalterzeichen (*) an, um den Vorgang nur auszuführen, wenn das Zielblob nicht vorhanden ist.

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

Bei diesem Wert handelt es sich um eine URL mit einer Länge von bis zu 2 Kibibyte (KiB), die eine Seitenblobmomentaufnahme angibt. Der Wert sollte URL-codiert sein, wie er in einem Anforderungs-URI angezeigt wird. Der Quellblob-URI kann auf zwei Arten autorisiert werden:

Der Quellblob-URI kann auf eine Seitenblobmomentaufnahme verweisen, muss jedoch ein SAS-Token (Shared Access Signature) enthalten, das für das Basisblob der Momentaufnahme erstellt wurde. Das Feld für die signierte 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 eine Momentaufnahme eines Blobs auf einer öffentlichen Seite verweisen. Beispiel: https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>.
x-ms-client-request-id Wahlfrei. Stellt einen vom Client generierten, undurchsichtigen Wert mit einem Grenzwert von 1-KiB-Zeichen bereit, der bei der Konfiguration der Protokollierung in den Protokollen aufgezeichnet wird. 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 von Azure Blob Storage.

Anfragekörper

Keiner.

Antwort

Die Antwort enthält einen HTTP-Statuscode und eine Reihe von Antwortheadern.

Statuscode

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

Antwortkopfzeilen

Die Antwort für diesen Vorgang enthält die folgenden Header. Die Antwort kann auch zusätzliche, standardmäßige HTTP-Header 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 wird in Anführungszeichen angegeben.
Last-Modified Das Datum und die Uhrzeit der letzten Änderung des Blobs. Weitere Informationen finden Sie unter Darstellung von Datums-/Uhrzeitwerten in Kopfzeilen.

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 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 die Uhrzeit angibt, zu der die Antwort initiiert wurde. Der Dienst generiert diesen Wert.
x-ms-copy-id: <id> Der Zeichenfolgenbezeichner für diesen Kopiervorgang. Verwenden Sie with Get Blob Properties , um den Status dieses Kopiervorgangs zu überprüfen, oder übergeben Sie to Abort Copy Blob , um einen ausstehenden Kopiervorgang zu stoppen.
x-ms-copy-status: pending Der Status des Kopiervorgangs. Dies ist immer ausstehend, um anzuzeigen, dass der Kopiervorgang begonnen wurde und ausgeführt wird.
x-ms-client-request-id Kann verwendet werden, um Anfragen und entsprechende Antworten zu behandeln. 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.

Antwortkörper

Keiner.

Beispielantwort

Im Folgenden finden Sie eine Beispielantwort für eine Anforderung zum Ausführen eines inkrementellen Kopierens:

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> 

Autorisierung

Die Autorisierung ist beim Aufrufen eines Datenzugriffsvorgangs in Azure Storage 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 x-ms-copy-source Anforderungsheader beschrieben.

Von Bedeutung

Microsoft empfiehlt die Verwendung der Microsoft Entra-ID mit verwalteten Identitäten, um Anforderungen an Azure Storage zu autorisieren. Die Microsoft Entra-ID bietet eine bessere Sicherheit und Benutzerfreundlichkeit im Vergleich zur Shared Key-Autorisierung.

Azure Storage unterstützt die Verwendung der Microsoft Entra-ID zum Autorisieren von Anforderungen an BLOB-Daten. Mit Der Microsoft Entra-ID können Sie azure role-based access control (Azure RBAC) verwenden, um Berechtigungen für einen Sicherheitsprinzipal zu erteilen. Der Sicherheitsprinzipal kann ein Benutzer, eine Gruppe, ein Anwendungsdienstprinzipal oder eine von Azure verwaltete Identität sein. Der Sicherheitsprinzipal wird von der Microsoft Entra-ID authentifiziert, um ein OAuth 2.0-Token zurückzugeben. Das Token kann dann verwendet werden, um eine Anforderung gegen den Blob-Dienst zu autorisieren.

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

Erlaubnisse

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, 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 BLOB-Daten.

Bemerkungen

Das Ziel einer inkrementellen Kopie darf entweder nicht vorhanden sein oder muss mit einer vorherigen inkrementellen Kopie aus demselben Quellblob erstellt worden sein. Nachdem Sie es erstellt haben, wird das Zielblob dauerhaft mit der Quelle verknüpft und kann nur für inkrementelle Kopien verwendet werden. List Blobs Die Get Blob Properties und-APIs 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 Operationen sind Get Blob Properties, Incremental Copy Blobund Delete Blob. Sie können die kopierten Snapshots wie gewohnt lesen und löschen.

Sie führen einen inkrementellen Kopiervorgang asynchron für den Dienst aus und müssen den Abschluss abfragen. In der Copy Blob API finden Sie weitere Informationen zum Abrufen einer ausstehenden Kopie. Wenn der Kopiervorgang abgeschlossen ist, enthält das Zielblob eine neue Momentaufnahme. Die Get Blob Properties API gibt die Snapshot-Zeit des neu erstellten Snapshots zurück.

Wenn Sie zum ersten Mal eine inkrementelle Kopie für ein Zielblob ausführen, wird ein neues Blob mit einer Momentaufnahme erstellt, die vollständig aus der Quelle kopiert wird. Bei jedem nachfolgenden Aufruf von Incremental Copy Blob wird ein neuer Snapshot erstellt, indem nur die differenziellen Änderungen aus dem zuvor kopierten Snapshot kopiert werden.

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

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

Siehe auch

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