VENDITE: 1-800-867-1389

Copy Blob

Aggiornamento: ottobre 2014

Tramite l'operazione Copy Blob viene copiato un Blob in una destinazione nell'account di archiviazione. Nella versione 2012-02-12 e successive, l'origine di un'operazione Copy Blob può essere un Blob di cui è stato eseguito il commit in qualsiasi account di archiviazione di Azure.

noteNota
Solo gli account di archiviazione creati il 7 giugno 2012 o in una data successiva consentono l'esecuzione dell'operazione Copy Blob da un altro account di archiviazione.

La richiesta Copy Blob può essere costruita nel modo seguente. Si consiglia di utilizzare HTTPS. Sostituire myaccount on il nome dell'account di archiviazione, mycontainer con il nome del contenitore e myblob con il nome del Blob di destinazione. A partire dalla versione 2013-08-15, è possibile specificare una firma di accesso condiviso per il Blob di destinazione.

 

  URI della richiesta del metodo PUT Versione HTTP

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

HTTP/1.1

Quando si effettua una richiesta nel servizio di archiviazione emulato, specificare il nome host dell'emulatore e la porta del servizio Blob come 127.0.0.1:10000, seguiti dal nome dell'account di archiviazione emulato:

 

  URI della richiesta del metodo PUT Versione HTTP

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

HTTP/1.1

Per altre informazioni, vedere Uso dell'emulatore di archiviazione di Azure per lo sviluppo e il test.

Nell'URI della richiesta è possibile specificare i parametri aggiuntivi seguenti.

 

Parametro Descrizione

timeout

Facoltativo. Il parametro timeout viene espresso in secondi. Per altre informazioni, vedere Impostazione di timeout per le operazioni del servizio Blob.

Nella tabella seguente vengono descritte le intestazioni di richiesta obbligatorie e facoltative.

 

Intestazione della richiesta Descrizione

Authorization

Obbligatorio. Specifica lo schema di autenticazione, il nome dell'account e la firma. Per altre informazioni, vedere Autenticazione per i servizi di archiviazione di Azure.

Date o x-ms-date

Obbligatorio. Specifica l'ora UTC (Coordinated Universal Time) per la richiesta. Per altre informazioni, vedere Autenticazione per i servizi di archiviazione di Azure.

x-ms-version

Obbligatoria per tutte le richieste autenticate. Per altre informazioni, vedere Controllo delle versioni per i servizi di archiviazione di Azure.

x-ms-meta-name:value

Facoltativo. Specifica una coppia nome-valore definito dall'utente associata al Blob. Se non vengono specificate coppie nome-valore, i metadati del Blob di origine verranno copiati nel Blob di destinazione. Se vengono specificate una o più coppie nome-valore, il Blob di destinazione verrà creato con i metadati specificati e i metadati non verranno copiati dal Blob di origine.

Si noti che a partire dalla versione 2009-09-19, i nomi dei metadati devono essere conformi alle regole di denominazione per gli identificatori C#. Per altre informazioni, vedere Assegnazione di nome e riferimento a contenitori, Blob e metadati.

x-ms-source-if-modified-since

Facoltativo. Valore DateTime. Specificare questa intestazione condizionale per copiare il Blob solo se il Blob di origine è stato modificato dopo la data e l'ora specificate. Se il Blob di origine non è stato modificato, il servizio Blob restituisce il codice di stato 412 (Condizione preliminare non riuscita).

x-ms-source-if-unmodified-since

Facoltativo. Valore DateTime. Specificare questa intestazione condizionale per copiare il Blob solo se il Blob di origine non è stato modificato dopo la data e l'ora specificate. Se il Blob di origine è stato modificato, il servizio Blob restituisce il codice di stato 412 (Condizione preliminare non riuscita).

x-ms-source-if-match

Facoltativo. Valore ETag. Specificare questa intestazione condizionale per copiare il Blob di origine solo se il relativo valore ETag corrisponde al valore specificato. Se i valori ETag non corrispondono, il servizio Blob restituisce il codice di stato 412 (Condizione preliminare non riuscita).

x-ms-source-if-none-match

Facoltativo. Valore ETag. Specificare questa intestazione condizionale per copiare il Blob di origine solo se il relativo valore ETag non corrisponde al valore specificato. Se i valori sono identici, tramite il servizio Blob viene restituito il codice di stato 412 (Condizione preliminare non riuscita).

If-Modified-Since

Facoltativo. Valore DateTime. Specificare questa intestazione condizionale per copiare il Blob solo se il Blob di destinazione è stato modificato dopo la data e l'ora specificate. Se il Blob di destinazione non è stato modificato, il servizio Blob restituisce il codice di stato 412 (Condizione preliminare non riuscita).

If-Unmodified-Since

Facoltativo. Valore DateTime. Specificare questa intestazione condizionale per copiare il Blob solo se il Blob di destinazione non è stato modificato dopo la data e l'ora specificate. Se il Blob di destinazione è stato modificato, il servizio Blob restituisce il codice di stato 412 (Condizione preliminare non riuscita).

If-Match

Facoltativo. Valore ETag. Specificare un valore ETag per questa intestazione condizionale per copiare il Blob solo se il valore ETag specificato corrisponde al valore ETag per un Blob di destinazione esistente. Se il valore ETag per il Blob di destinazione non corrisponde al valore ETag specificato per If-Match, il servizio Blob restituisce il codice di stato 412 (Condizione preliminare non riuscita).

If-None-Match

Facoltativo. Valore ETag o il carattere jolly (*).

Specificare un valore ETag per questa intestazione condizionale per copiare il Blob solo se il valore ETag specificato non corrisponde al valore ETag per il Blob di destinazione.

Specificare il carattere jolly (*) per eseguire l'operazione solo se il Blob di destinazione non esiste.

Se la condizione specificata non viene soddisfatta, il servizio Blob restituisce il codice di stato 412 (Condizione preliminare non riuscita).

x-ms-copy-source:name

Obbligatorio. Specifica il nome del Blob di origine.

Nella versione 2012-02-12 e successive, questo valore è un URL di una lunghezza massima di 2 KB in cui è specificato un Blob. Un Blob di origine nello stesso account può essere privato, ma un Blob in un altro account deve essere pubblico o accettare le credenziali incluse in questo URL, come ad esempio una firma di accesso condiviso. Solo gli account di archiviazione creati il 7 giugno 2012 o in una data successiva consentono l'esecuzione dell'operazione Copy Blob da un altro account di archiviazione. Quando possibile, Microsoft consiglia l'utilizzo di HTTPS. Esempi:

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

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

Nelle versioni precedenti alla 2012-02-12, i Blob possono essere copiati solo nello stesso account e un nome di origine può utilizzare i formati elencati di seguito:

  • Blob in un contenitore denominato: /accountName/containerName/blobName

  • Snapshot in un contenitore denominato: /accountName/containerName/blobName?snapshot=<DateTime>

  • Blob in un contenitore radice: /accountName/blobName

  • Snapshot in un contenitore radice: /accountName/blobName?snapshot=<DateTime>

x-ms-lease-id:<ID>

Obbligatoria se il Blob di destinazione presenta un lease attivo. L'ID lease specificato per questa intestazione deve corrispondere all'ID lease del Blob di destinazione. Se la richiesta non include l'ID lease o non è valida, l'operazione ha esito negativo e restituisce il codice di stato 412 (Condizione preliminare non riuscita).

Se viene specificata questa intestazione e il Blob di destinazione non presenta alcun lease attivo, l'operazione ha esito negativo e restituisce il codice di stato 412 (Condizione preliminare non riuscita).

Nella versione 2012-02-12 e successive, questo valore deve specificare un lease infinito attivo per un Blob con lease. Un ID lease di durata finita ha esito negativo e viene restituito il codice di stato 412 (Condizione preliminare non riuscita).

x-ms-source-lease-id: <ID>

Facoltativa, versioni precedenti alla 2012-02-12 (non supportato nella versione 2012-02-12 e successive). Specificare questa intestazione per eseguire l'operazione Copy Blob solo se l'ID lease specificato corrisponde all'ID lease attivo del Blob di origine.

Se viene specificata questa intestazione e il Blob di origine non presenta al momento alcun lease attivo, l'operazione ha esito negativo e restituisce il codice di stato 412 (Condizione preliminare non riuscita).

x-ms-client-request-id

Facoltativo. Fornisce un valore opaco generato dal client con un limite di caratteri di 1 KB che viene registrato nei log di analisi quando la registrazione di Analisi archiviazione è abilitata. L'utilizzo di questa intestazione è consigliato per la correlazione tra le attività sul lato client e le richieste ricevute dal server. Per altre informazioni vedere Informazioni sulla registrazione di Analisi archiviazione e l'articolo relativo all'utilizzo di log per tenere traccia delle richiesta di archiviazione nella registrazione di Azure.

Nella risposta sono inclusi un codice di stato HTTP e un set di intestazioni per la risposta.

Nella versione 2012-02-12 e successive, un'operazione completata correttamente restituisce il codice di stato 202 (Accettato).

Nelle versioni precedenti alla 2012-02-12, un'operazione completata correttamente restituisce il codice di stato 201 (Creato).

Per informazioni sui codici di stato, vedere Codici ed errori di stato.

Nella risposta per questa operazione sono incluse le intestazioni riportate di seguito; inoltre, possono essere incluse intestazioni HTTP standard aggiuntive. Tutte le intestazioni standard sono conformi alla specifica del protocollo HTTP/1.1.

 

Intestazione della risposta Descrizione

ETag

Nella versione 2012-02-12 e successive, se la copia viene completata, contiene il valore ETag del Blob di destinazione. Se la copia non viene completata, contiene il valore ETag del BLOB vuoto creato all'avvio della copia.

Nelle versioni precedenti alla 2012-02-12, restituisce il valore ETag per il Blob di destinazione.

Nella versione 2011-08-18 e successive, il valore ETag sarà racchiuso tra virgolette.

Last-Modified

Restituisce la data e l'ora in cui è stata completata l'operazione di copia nel Blob di destinazione.

x-ms-request-id

Questa intestazione identifica in modo univoco la richiesta effettuata e può essere utilizzata per risolvere i problemi relativi alla richiesta. Per altre informazioni, vedere Risoluzione dei problemi relativi alle operazioni dell'API.

x-ms-version

Indica la versione del servizio Blob utilizzata per eseguire la richiesta. Questa intestazione viene restituita per le richieste effettuate nella versione 2009-09-19 e successive.

Date

Valore data/ora UTC generato dal servizio che indica l'ora in cui è stata avviata la risposta.

x-ms-copy-id: <id>

Versione 2012-02-12 e successive. Identificatore di stringa per l'operazione di copia. Utilizzarlo con Get Blob o Get Blob Properties per verificare lo stato di questa operazione di copia oppure passarlo a Abort Copy Blob per interrompere una copia in sospeso.

x-ms-copy-status: <success | pending>

Versione 2012-02-12 e successive. Stato dell'operazione di copia, con questi valori:

  • success: la copia è stata completata correttamente.

  • pending: la copia è in corso.

Di seguito è riportata una risposta di esempio per una richiesta di copia di un 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

Questa operazione può essere chiamata dal proprietario dell'account. Per le richieste effettuate nella versione 2013-08-15 e successive, una firma di accesso condiviso con autorizzazione di scrittura sul Blob di destinazione o sul relativo contenitore è supportata per le operazioni di copia nello stesso account. Notare che la firma di accesso condiviso specificata nella richiesta è applicabile solo al Blob di destinazione. L'autorizzazione all'accesso al Blob di origine è separata, come descritto nei dettagli per l'intestazione della richiesta x-ms-copy-source.

Nella versione 2012-02-12 e successive, l'operazione Copy Blob può essere completata in modo asincrono. L'operazione restituisce un ID copia che è possibile utilizzare per verificare o interrompere l'operazione di copia. Il servizio Blob viene copiato secondo il principio del best effort.

Il Blob di origine per un'operazione di copia può essere dato da un Blob in blocchi o da un Blob di pagine oppure da uno snapshot di uno di essi. Se il Blob di destinazione esiste già, deve essere dello stesso tipo del Blob di origine. Eventuali Blob di destinazione esistenti verranno sovrascritti. Non è possibile modificare il Blob di destinazione se è in corso un'operazione di copia.

Più operazioni Copy Blob in sospeso in un account possono essere elaborate in sequenza. A un Blob di destinazione può corrispondere una sola operazione di copia Blob in attesa. In altre parole, un Blob non può essere la destinazione di più operazioni Copy Blob in sospeso. Qualsiasi tentativo di eseguire un'operazione Copy Blob in un Blob di destinazione per cui è già presente una copia in sospeso avrà esito negativo con il codice di stato 409 (Conflitto).

Solo gli account di archiviazione creati il 7 giugno 2012 o in una data successiva consentono l'esecuzione dell'operazione Copy Blob da un altro account di archiviazione. Qualsiasi tentativo di eseguire un'operazione di copia da un altro account di archiviazione in un account creato prima del 7 giugno 2012 avrà esito negativo con il codice di stato 400 (Richiesta non valida).

Tramite l'operazione Copy Blob viene sempre copiato l'intero Blob di origine. La copia di un intervallo di byte o di un set di blocchi non è supportata.

Un'operazione Copy Blob può assumere una delle forme riportate di seguito:

  • È possibile copiare un Blob di origine in un Blob di destinazione con un nome diverso. Il Blob di destinazione può essere dato da un Blob esistente dello stesso tipo (in blocchi o di pagine) oppure da un nuovo Blob creato tramite l'operazione di copia.

  • È possibile copiare un Blob di origine in un Blob di destinazione avente lo stesso nome, sostituendo il Blob di origine. Un'operazione di copia di questo tipo comporta la rimozione dei blocchi di cui non è stato eseguito il commit e la sovrascrittura dei metadati del Blob.

  • È possibile copiare uno snapshot sul Blob di base. Promuovendo uno snapshot alla posizione del Blob di base, è possibile ripristinare la versione precedente di un Blob.

  • È possibile copiare uno snapshot in un Blob di destinazione con un nome diverso. Il Blob di destinazione risultante è un Blob scrivibile, non uno snapshot.

Quando si esegue una copia da un BLOB di pagine, il servizio Blob crea un BLOB di pagine di destinazione della stessa lunghezza del BLOB di origine, contenente inizialmente solo zeri. Verranno enumerati gli intervalli di pagine di origine e verranno copiati gli intervalli non vuoti. Quando si esegue una copia da un Blob in blocchi, verranno copiati tutti i blocchi di cui è stato eseguito il commit e i relativi ID. I blocchi di cui non è stato eseguito il commit non verranno copiati. Per un Blob in blocchi, tramite il servizio Blob viene creato un Blob di lunghezza zero di cui è stato eseguito il commit prima che venga restituito un risultato. Per entrambi i tipi di Blob, è possibile chiamare Get Blob o Get Blob Properties sul Blob di destinazione per verificare lo stato dell'operazione di copia. Al termine della copia, verrà eseguito il commit del Blob finale.

Quando l'origine di un'operazione di copia fornisce valori ETag, la copia ha esito negativo se durante l'operazione vengono apportate modifiche all'origine. Qualsiasi tentativo di modificare il Blob di destinazione mentre è in corso una copia ha esito negativo con il codice di stato 409 (Conflitto). Se il Blob di destinazione presenta un lease infinito, il relativo ID deve essere passato a Copy Blob. I lease di durata finita non sono consentiti.

Il valore ETag per un Blob in blocchi cambia all'inizio e alla fine dell'operazione Copy Blob. Il valore ETag per un Blob di pagine cambia all'inizio dell'operazione Copy Blob e continua a cambiare con frequenza durante la copia. Il contenuto di un Blob in blocchi è visibile solo se si utilizza una richiesta GET al termine della copia.

Copia dei metadati e delle proprietà del Blob

Quando viene copiato un Blob, le proprietà di sistema seguenti vengono copiate nel Blob di destinazione con gli stessi valori:

  • Content-Type

  • Content-Encoding

  • Content-Language

  • Content-Length

  • Cache-Control

  • Content-MD5

  • Content-Disposition

  • x-ms-blob-sequence-number (for page blobs only)

Nel caso dei Blob in blocchi, anche l'elenco di blocchi di cui è stato eseguito il commit del Blob di origine viene copiato nel Blob di destinazione. Eventuali blocchi di cui non è stato eseguito il commit non vengono copiati.

Il Blob di destinazione presenta sempre le stesse dimensioni del Blob di origine, pertanto il valore dell'intestazione Content-Length per il Blob di destinazione corrisponde a quello del Blob di origine.

Se il Blob di origine equivale al Blob di destinazione, l'operazione Copy Blob comporta la rimozione di eventuali blocchi di cui è stato eseguito il commit. Se si specificano i metadati, i metadati esistenti vengono sovrascritti con quelli nuovi.

Copia di un Blob con lease

Tramite l'operazione Copy Blob viene letto unicamente il Blob di origine, pertanto lo stato di lease di questo Blob è irrilevante. L'operazione Copy Blob, tuttavia, consente di salvare il valore ETag del Blob di origine all'avvio della copia. Se il valore ETag cambia prima della fine della copia, l'operazione ha esito negativo. È possibile impedire modifiche al Blob di origine ponendo un lease su di esso durante l'operazione di copia.

Se il Blob di destinazione presenta un lease infinito attivo, è necessario specificare il relativo ID nella chiamata all'operazione Copy Blob. Se il lease specificato è un lease di durata finita attivo, la chiamata ha esito negativo e restituisce il codice di stato 412 (Condizione preliminare non riuscita). Nel corso dell'operazione di copia, eventuali operazioni di lease sul Blob di destinazione hanno esito negativo e restituiscono il codice di stato 409 (Conflitto). Durante l'operazione di copia viene bloccato un lease infinito sul Blob di destinazione sia che la copia venga eseguita su un Blob di destinazione con un nome diverso rispetto a quello di origine, su un Blob di destinazione con lo stesso nome di quello di origine o che venga eseguita la promozione di uno snapshot sul relativo Blob di base. Se tramite il client viene specificato un ID lease in un Blob che non esiste ancora, il servizio Blob restituirà il codice di stato 412 (precondizione non riuscita) per le richieste effettuate nella versione 2013-08-15 e successive; per le versioni precedenti, il servizio Blob restituirà il codice di stato 201 (creato).

Copia di snapshot

Quando si copia un Blob di origine, gli snapshot del Blob di origine non vengono copiati nella destinazione. Quando un Blob di destinazione viene sovrascritto con una copia, gli snapshot associati al Blob di destinazione rimangono invariati con il relativo nome.

È possibile eseguire un'operazione di copia per promuovere un Blob snapshot sul relativo Blob di base. In questo modo è possibile ripristinare una versione precedente di un Blob. Lo snapshot viene mantenuto, ma la relativa destinazione viene sovrascritta con una copia che potrà essere letta e scritta.

Utilizzo di una copia in sospeso (versione 2012-02-12 e successive)

L'operazione Copy Blob viene completata in modo asincrono. Utilizzare la tabella seguente per determinare il passaggio successivo in base al codice di stato restituito da Copy Blob:

 

Codice di stato Significato

202 (Accettato), x-ms-copy-status: esito positivo

Copia completata correttamente.

202 (Accettato), x-ms-copy-status: in sospeso

500 o 503

Copia non completata. Eseguire il polling del Blob di destinazione utilizzando Get Blob Properties per esaminare x-ms-copy-status finché la copia non viene completata o viene restituito un esito negativo.

4xx, 500 o 503

Copia non riuscita.

Durante e dopo un'operazione Copy Blob, le proprietà del Blob di destinazione contengono l'ID copia dell'operazione Copy Blob e l'URL del Blob di origine. Quando la copia viene completata, tramite il servizio Blob l'ora e l'esito (success, failed o aborted) vengono scritti nelle proprietà del Blob di destinazione. Se l'operazione restituisce il risultato failed, l'intestazione x-ms-copy-status-description contiene una stringa con i dettagli dell'errore.

Un'operazione Copy Blob in sospeso ha un timeout di 2 settimane. Una copia che non viene completata entro 2 settimane scade e lascia un Blob vuoto con il campo x-ms-copy-status impostato su failed e con l'intestazione x-ms-copy-status-description impostata su 500 (OperationCancelled). Gli errori intermittenti e non irreversibili che possono verificarsi durante una copia potrebbero impedirne l'avanzamento, ma non il completamento. In questi casi, gli errori intermittenti vengono descritti nell'intestazione x-ms-copy-status-description.

Qualsiasi tentativo di modificare o di creare uno snapshot del Blob di destinazione durante la copia ha esito negativo e restituisce il codice di stato 409 (Conflitto) Operazione Copy Blob in corso.

Se si chiama l'operazione Abort Copy Blob, verrà visualizzata un'intestazione x-ms-copy-status:aborted, il Blob di destinazione avrà una lunghezza pari a zero byte e i relativi metadati risulteranno inalterati. È possibile ripetere la chiamata originale a Copy Blob per riprovare la copia.

Fatturazione

L'account di destinazione di un'operazione Copy Blob dovrà sostenere i costi di una transazione per avviare la copia e per ogni richiesta di interruzione o dello stato dell'operazione di copia.

Se il Blob di origine si trova in un altro account, i costi della transazione saranno sostenuti dall'account di origine. Inoltre, se gli account di origine e di destinazione si trovano in aree geografiche diverse, ad esempio Stati Uniti settentrionali e Stati Uniti meridionali, la larghezza di banda utilizzata per trasferire la richiesta verrà addebitata all'account di archiviazione di origine come uscita. L'uscita tra account della stessa area geografica è gratuita.

Quando si copia un BLOB di origine in un BLOB di destinazione con un nome diverso nello stesso account, si utilizzano risorse di archiviazione aggiuntive per il nuovo BLOB, pertanto l'operazione di copia comporterà un costo associato all'utilizzo della capacità dell'account di archiviazione per le risorse aggiuntive. Se, tuttavia, il nome del Blob di origine equivale a quello del Blob di destinazione nello stesso account, ad esempio quando si promuove uno snapshot nel relativo Blob di base, non si dovrà sostenere alcun costo aggiuntivo se non quello associato ai metadati di copia aggiuntivi archiviati nella versione 2012-02-12 e successive.

Quando si promuove uno snapshot per sostituire il relativo Blob di base, il Blob di base e lo snapshot sono identici. Poiché condividono blocchi o pagine, l'operazione di copia non comporta alcun costo aggiuntivo associato all'utilizzo della capacità dell'account di archiviazione. Tuttavia, se si copia uno snapshot in un Blob di destinazione con un nome diverso, si dovrà sostenere un costo aggiuntivo per le risorse di archiviazione utilizzate dal nuovo Blob risultante. Due Blob con nomi diversi non possono condividere blocchi o pagine anche se sono identici. Per altre informazioni sui costi associati agli snapshot, vedere Informazioni sull'incremento dei costi dovuto agli snapshot.

Il documento è risultato utile?
(1500 caratteri rimanenti)
Grazie per i commenti inviati.
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft