Copy Blob
Operasi Copy Blob
menyalin blob ke tujuan dalam akun penyimpanan.
Dalam versi 2012-02-12 dan yang lebih baru, sumber untuk Copy Blob
operasi dapat menjadi blob yang diterapkan di akun penyimpanan Azure apa pun.
Dimulai dengan versi 2015-02-21, sumber untuk Copy Blob
operasi dapat menjadi file Azure di akun penyimpanan Azure apa pun.
Catatan
Hanya akun penyimpanan yang dibuat pada atau setelah 7 Juni 2012, yang memungkinkan Copy Blob
operasi untuk menyalin dari akun penyimpanan lain.
Minta
Anda dapat membuat Copy Blob
permintaan sebagai berikut. Kami merekomendasikan HTTPS. Ganti myaccount dengan nama akun penyimpanan Anda, mycontainer dengan nama kontainer Anda, dan myblob dengan nama blob tujuan Anda.
Dimulai dengan versi 2013-08-15, Anda dapat menentukan tanda tangan akses bersama (SAS) untuk blob tujuan jika berada di akun yang sama dengan blob sumber. Dimulai dengan versi 2015-04-05, Anda juga dapat menentukan tanda tangan akses bersama untuk blob tujuan jika berada di akun penyimpanan yang berbeda.
URI permintaan metode PUT | Versi HTTP |
---|---|
https://myaccount.blob.core.windows.net/mycontainer/myblob |
HTTP/1.1 |
URI untuk layanan penyimpanan yang ditiru
Saat Anda membuat permintaan terhadap layanan penyimpanan yang ditimulasi, tentukan nama host emulator dan port Azure Blob Storage sebagai 127.0.0.1:10000
, diikuti dengan nama akun penyimpanan yang ditimulasi:
URI permintaan metode PUT | Versi HTTP |
---|---|
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob |
HTTP/1.1 |
Untuk informasi selengkapnya, lihat Gunakan emulator Azurite untuk pengembangan Microsoft Azure Storage lokal.
Parameter URI
Anda dapat menentukan parameter tambahan berikut pada URI permintaan:
Parameter | Deskripsi |
---|---|
timeout |
Opsional. Parameter timeout dinyatakan dalam hitung detik. Untuk informasi selengkapnya, lihat Mengatur batas waktu untuk operasi Blob Storage. |
Header permintaan
Tabel berikut ini menjelaskan header permintaan yang diperlukan dan opsional:
Meminta kop | Deskripsi |
---|---|
Authorization |
Wajib diisi. Menentukan skema otorisasi, nama akun, dan tanda tangan. Untuk informasi selengkapnya, lihat Mengotorisasi permintaan ke Azure Storage. |
Date atau x-ms-date |
Wajib diisi. Menentukan Waktu Universal Terkoordinasi (UTC) untuk permintaan tersebut. Untuk informasi selengkapnya, lihat Mengotorisasi permintaan ke Azure Storage. |
x-ms-version |
Diperlukan untuk semua permintaan yang diotorisasi. Untuk informasi selengkapnya, lihat Penerapan versi untuk layanan Azure Storage. |
x-ms-meta-name:value |
Opsional. Menentukan pasangan nama/nilai yang ditentukan pengguna yang terkait dengan blob. Jika tidak ada pasangan nama/nilai yang ditentukan, operasi menyalin metadata dari blob sumber atau file ke blob tujuan. Jika satu atau beberapa pasangan nama/nilai ditentukan, blob tujuan dibuat dengan metadata yang ditentukan, dan metadata tidak disalin dari blob sumber atau file. Dimulai dengan versi 2009-09-19, nama metadata harus mematuhi aturan penamaan untuk pengidentifikasi C#. Untuk informasi selengkapnya, lihat Penamaan dan referensi kontainer, blob, dan metadata. |
x-ms-tags |
Opsional. Mengatur tag yang dikodekan string kueri yang diberikan pada blob. Tag tidak disalin dari sumber salinan. Untuk informasi selengkapnya, lihat Keterangan. Didukung dalam versi 2019-12-12 dan yang lebih baru. |
x-ms-source-if-modified-since |
Pilihan. Nilai DateTime . Tentukan header kondisional ini untuk menyalin blob hanya jika blob sumber telah dimodifikasi sejak tanggal/waktu yang ditentukan. Jika blob sumber belum dimodifikasi, Blob Storage mengembalikan kode status 412 (Prasyarat Gagal). Anda tidak dapat menentukan header ini jika sumbernya adalah file Azure. |
x-ms-source-if-unmodified-since |
Opsional. Nilai DateTime . Tentukan header kondisional ini untuk menyalin blob hanya jika blob sumber belum dimodifikasi sejak tanggal/waktu yang ditentukan. Jika blob sumber telah dimodifikasi, Blob Storage mengembalikan kode status 412 (Prasyarat Gagal). Anda tidak dapat menentukan header ini jika sumbernya adalah file Azure. |
x-ms-source-if-match |
Opsional. Sebuah nilai ETag . Tentukan header kondisional ini untuk menyalin blob sumber hanya jika nilainya ETag cocok dengan nilai yang ditentukan. Jika nilai tidak cocok, Blob Storage mengembalikan kode status 412 (Prasyarat Gagal). Anda tidak dapat menentukan header ini jika sumbernya adalah file Azure. |
x-ms-source-if-none-match |
Opsional. Sebuah nilai ETag . Tentukan header kondisional ini untuk menyalin blob hanya jika nilainya ETag tidak cocok dengan nilai yang ditentukan. Jika nilainya identik, Blob Storage mengembalikan kode status 412 (Prasyarat Gagal). Anda tidak dapat menentukan header ini jika sumbernya adalah file Azure. |
If-Modified-Since |
Opsional. Nilai DateTime . Tentukan header kondisional ini untuk menyalin blob hanya jika blob tujuan telah dimodifikasi sejak tanggal/waktu yang ditentukan. Jika blob tujuan belum dimodifikasi, Blob Storage mengembalikan kode status 412 (Prasyarat Gagal). |
If-Unmodified-Since |
Opsional. Nilai DateTime . Tentukan header kondisional ini untuk menyalin blob hanya jika blob tujuan belum dimodifikasi sejak tanggal/waktu yang ditentukan. Jika blob tujuan telah dimodifikasi, Blob Storage mengembalikan kode status 412 (Prasyarat Gagal). |
If-Match |
Opsional. Sebuah nilai ETag . ETag Tentukan nilai untuk header kondisional ini untuk menyalin blob hanya jika nilai yang ditentukan ETag cocok dengan ETag nilai untuk blob tujuan yang ada. Jika nilai tidak cocok, Blob Storage mengembalikan kode status 412 (Prasyarat Gagal). |
If-None-Match |
Opsional. Nilai ETag , atau karakter kartubebas (*).ETag Tentukan nilai untuk header kondisional ini untuk menyalin blob hanya jika nilai yang ditentukan ETag tidak cocok dengan ETag nilai untuk blob tujuan.Tentukan karakter kartubebas (*) untuk melakukan operasi hanya jika blob tujuan tidak ada. Jika kondisi yang ditentukan tidak terpenuhi, Blob Storage mengembalikan kode status 412 (Prasyarat Gagal). |
x-ms-copy-source:name |
Wajib diisi. Menentukan nama blob atau file sumber. Dimulai dengan versi 2012-02-12, nilai ini dapat menjadi URL dengan panjang hingga 2 kibibyte (KiB) yang menentukan blob. Nilai harus dikodekan URL seperti yang akan muncul dalam URI permintaan. Operasi baca pada blob sumber di akun penyimpanan yang sama dapat diotorisasi melalui kunci bersama. Dimulai dengan versi 2017-11-09, Anda juga dapat menggunakan Microsoft Entra ID untuk mengotorisasi operasi baca pada blob sumber. Namun, jika sumbernya adalah blob di akun penyimpanan lain, blob sumber harus bersifat publik, atau akses ke blob tersebut harus diotorisasi melalui tanda tangan akses bersama. Jika blob sumber bersifat publik, tidak ada otorisasi yang diperlukan untuk melakukan operasi penyalinan. Dimulai dengan versi 2015-02-21, objek sumber dapat menjadi file dalam Azure Files. Jika objek sumber adalah file yang akan disalin ke blob, maka file sumber harus diotorisasi melalui tanda tangan akses bersama, baik berada di akun yang sama atau di akun yang berbeda. Hanya akun penyimpanan yang dibuat pada atau setelah 7 Juni 2012, yang memungkinkan Copy Blob operasi untuk menyalin dari akun penyimpanan lain.Berikut adalah beberapa contoh URL objek sumber: - https://myaccount.blob.core.windows.net/mycontainer/myblob - https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime> - https://myaccount.blob.core.windows.net/mycontainer/myblob?versionid=<DateTime> Saat objek sumber adalah file dalam Azure Files, URL sumber menggunakan format berikut. Perhatikan bahwa URL harus menyertakan token SAS yang valid untuk file tersebut. - https://myaccount.file.core.windows.net/myshare/mydirectorypath/myfile?sastoken Dalam versi sebelum 2012-02-12, blob hanya dapat disalin dalam akun yang sama, dan nama sumber dapat menggunakan format ini: - Blob dalam kontainer bernama: /accountName/containerName/blobName - Rekam jepret dalam kontainer bernama: /accountName/containerName/blobName?snapshot=<DateTime> - Blob dalam kontainer root: /accountName/blobName - Rekam jepret dalam kontainer root: /accountName/blobName?snapshot=<DateTime> |
x-ms-lease-id:<ID> |
Diperlukan jika blob tujuan memiliki sewa aktif. ID sewa yang ditentukan untuk header ini harus cocok dengan ID sewa blob tujuan. Jika permintaan tidak menyertakan ID sewa atau ID tidak valid, operasi gagal dengan kode status 412 (Prasyarat Gagal). Jika header ini ditentukan dan blob tujuan saat ini tidak memiliki sewa aktif, operasi gagal dengan kode status 412 (Prasyarat Gagal). Dalam versi 2012-02-12 dan yang lebih baru, nilai ini harus menentukan sewa tidak terbatas aktif untuk blob sewaan. ID sewa berdurasi terbatas gagal dengan kode status 412 (Prasyarat Gagal). |
x-ms-source-lease-id: <ID> |
Opsional untuk versi sebelum 2012-02-12 (tidak didukung di 2012-02-12 dan yang lebih baru). Tentukan header ini untuk melakukan Copy Blob operasi hanya jika ID sewa yang disediakan cocok dengan ID sewa aktif dari blob sumber.Jika header ini ditentukan dan blob sumber saat ini tidak memiliki sewa aktif, operasi gagal dengan kode status 412 (Prasyarat Gagal). |
x-ms-client-request-id |
Pilihan. Menyediakan nilai buram yang dihasilkan klien dengan batas karakter 1 KiB yang dicatat dalam log saat pengelogan dikonfigurasi. Kami sangat menyarankan Anda menggunakan header ini untuk menghubungkan aktivitas sisi klien dengan permintaan yang diterima server. |
x-ms-access-tier |
Pilihan. Menentukan tingkat yang akan ditetapkan pada blob target. Header ini untuk blob halaman pada akun premium hanya dengan versi 2017-04-17 dan yang lebih baru. Untuk daftar lengkap tingkatan yang didukung, lihat Penyimpanan premium berkinerja tinggi dan disk terkelola untuk VM. Header ini didukung pada versi 2018-11-09 dan yang lebih baru untuk blob blok. Tingkatan blob blok didukung pada akun Blob Storage atau General Purpose v2. Nilai yang valid adalah Hot , Cool , Cold dan Archive . Catatan:Cold tingkat didukung untuk versi 2021-12-02 dan yang lebih baru. Untuk informasi mendetail tentang tingkatan blob blok, lihat Tingkat penyimpanan panas, dingin, dan arsip. |
x-ms-rehydrate-priority |
Pilihan. Menunjukkan prioritas untuk merehidrasi blob yang diarsipkan. Header ini didukung pada versi 2019-02-02 dan yang lebih baru untuk blob blok. Nilai yang berlaku adalah High atau Standard . Anda dapat mengatur prioritas pada blob hanya sekali. Header ini akan diabaikan pada permintaan berikutnya ke blob yang sama. Prioritas default tanpa header ini adalah Standard . |
x-ms-seal-blob |
Opsional. Didukung pada versi 2019-12-12 atau yang lebih baru. Header ini hanya berlaku untuk blob tambahan. Ini menyegel blob tujuan setelah operasi penyalinan selesai. |
x-ms-immutability-policy-until-date |
Versi 2020-06-12 dan yang lebih baru. Menentukan tanggal retensi-hingga yang akan diatur pada blob. Ini adalah tanggal hingga blob dapat dilindungi dari modifikasi atau penghapusan. Ini mengikuti format RFC1123. |
x-ms-immutability-policy-mode |
Versi 2020-06-12 dan yang lebih baru. Menentukan mode kebijakan imutabilitas yang akan diatur pada blob. Nilai yang berlaku adalah unlocked atau locked . Nilai unlocked menunjukkan bahwa pengguna dapat mengubah kebijakan dengan meningkatkan atau mengurangi tanggal retensi hingga. Nilai locked menunjukkan bahwa tindakan ini dilarang. |
x-ms-legal-hold |
Versi 2020-06-12 dan yang lebih baru. Menentukan penahanan legal yang akan ditetapkan pada blob. Nilai yang berlaku adalah true atau false . |
Operasi ini mendukung header bersyarat x-ms-if-tags
dan x-ms-source-if-tags
berhasil hanya jika kondisi yang ditentukan terpenuhi. Untuk informasi selengkapnya, lihat Menentukan header kondisional untuk operasi Blob Storage.
Isi permintaan
Tidak ada.
Respons
Respons mencakup kode status HTTP dan sekumpulan header respons.
Kode status
Dalam versi 2012-02-12 dan yang lebih baru, operasi yang berhasil mengembalikan kode status 202 (Diterima).
Dalam versi sebelum 2012-02-12, operasi yang berhasil mengembalikan kode status 201 (Dibuat).
Untuk informasi tentang kode status, lihat Kode status dan kesalahan.
Header respons
Respons untuk operasi ini mencakup header berikut. Respons juga dapat mencakup header HTTP standar tambahan. Semua header standar sesuai dengan spesifikasi protokol HTTP/1.1.
Header respons | Deskripsi |
---|---|
ETag |
Dalam versi 2012-02-12 dan yang lebih baru, jika salinan selesai, header ini berisi ETag nilai blob tujuan. Jika salinan tidak selesai, header berisi ETag nilai blob kosong yang dibuat di awal operasi salin.Dalam versi sebelum 2012-02-12, header ini mengembalikan ETag nilai untuk blob tujuan.Dalam versi 2011-08-18 dan yang lebih baru, ETag nilainya dalam tanda kutip. |
Last-Modified |
Mengembalikan tanggal/waktu operasi penyalinan ke blob tujuan selesai. |
x-ms-request-id |
Secara unik mengidentifikasi permintaan yang dibuat. Anda dapat menggunakan header ini untuk memecahkan masalah permintaan. Untuk informasi selengkapnya, lihat Memecahkan masalah operasi API. |
x-ms-version |
Menunjukkan versi Blob Storage yang digunakan untuk menjalankan permintaan. Header ini dikembalikan untuk permintaan yang dibuat terhadap versi 2009-09-19 dan yang lebih baru. |
Date |
Nilai tanggal/waktu UTC yang menunjukkan waktu layanan mengirim respons. |
x-ms-copy-id: <id> |
Versi 2012-02-12 dan yang lebih baru. Menyediakan pengidentifikasi string untuk operasi penyalinan ini. Gunakan dengan Get Blob atau Get Blob Properties untuk memeriksa status operasi salin ini, atau teruskan ke Abort Copy Blob untuk membatalkan operasi salinan yang tertunda. |
x-ms-copy-status: <success ¦ pending> |
Versi 2012-02-12 dan yang lebih baru. Menunjukkan status operasi salin, dengan nilai-nilai ini: - success : Operasi berhasil diselesaikan.- pending : Operasi sedang berlangsung. |
x-ms-version-id: <DateTime> |
Versi 2019-12-12 dan yang lebih baru. Secara unik mengidentifikasi blob berdasarkan versinya. Anda dapat menggunakan nilai buram ini dalam permintaan berikutnya untuk mengakses versi blob ini. |
x-ms-client-request-id |
Dapat digunakan untuk memecahkan masalah permintaan dan respons yang sesuai. Nilai header ini sama dengan nilai x-ms-client-request-id header, jika ada dalam permintaan dan nilainya paling banyak 1.024 karakter ASCII yang terlihat. x-ms-client-request-id Jika header tidak ada dalam permintaan, header ini tidak akan ada dalam respons. |
Isi Respons
Tidak ada.
Respons sampel
Kode berikut adalah respons sampel untuk permintaan menyalin blob:
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: 2015-02-21
x-ms-copy-id: 1f812371-a41d-49e6-b123-f4b542e851c5
x-ms-copy-status: pending
x-ms-version-id: <DateTime>
Date: <date>
Authorization
Otorisasi diperlukan saat memanggil operasi akses data apa pun di Azure Storage. Tabel berikut ini menjelaskan bagaimana tujuan dan objek sumber untuk Copy Blob
operasi dapat diotorisasi:
Tipe objek | otorisasi Microsoft Entra ID | Otorisasi Tanda Tangan Akses Bersama (SAS) | Otorisasi Kunci Bersama (atau Shared Key Lite) |
---|---|---|---|
Blob tujuan | Ya | Ya | Ya |
Blob sumber di akun penyimpanan yang sama | Ya | Ya | Ya |
Blob sumber di akun penyimpanan lain | Tidak | Ya | Tidak |
Jika permintaan menentukan tag di x-ms-tags
header permintaan, pemanggil harus memenuhi persyaratan otorisasi operasi Atur Tag Blob .
Anda dapat mengotorisasi operasi seperti yang Copy Blob
dijelaskan di bawah ini. Perhatikan bahwa blob sumber di akun penyimpanan yang berbeda harus diotorisasi secara terpisah melalui token SAS dengan izin Baca (r). Untuk informasi selengkapnya tentang otorisasi blob sumber, lihat detail untuk header x-ms-copy-source
permintaan .
Azure Storage mendukung penggunaan Microsoft Entra ID untuk mengotorisasi permintaan ke data blob. Dengan Microsoft Entra ID, Anda dapat menggunakan kontrol akses berbasis peran Azure (Azure RBAC) untuk memberikan izin kepada prinsip keamanan. Prinsip keamanan dapat berupa pengguna, grup, perwakilan layanan aplikasi, atau identitas terkelola Azure. Prinsip keamanan diautentikasi oleh Microsoft Entra ID untuk mengembalikan token OAuth 2.0. Token kemudian dapat digunakan untuk mengotorisasi permintaan terhadap Blob service.
Untuk mempelajari selengkapnya tentang otorisasi menggunakan Microsoft Entra ID, lihat Mengotorisasi akses ke blob menggunakan Microsoft Entra ID.
Izin
Tercantum di bawah ini adalah tindakan RBAC yang diperlukan bagi pengguna, grup, atau perwakilan layanan Microsoft Entra untuk memanggil Copy Blob
operasi, dan peran Azure RBAC bawaan paling tidak istimewa yang mencakup tindakan ini:
Blob tujuan
- Tindakan Azure RBAC:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write (untuk menulis ke blob yang ada) atau Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action (untuk menulis blob baru ke tujuan)
- Peran bawaan yang paling tidak istimewa:Kontributor Data Blob Penyimpanan
Blob sumber dalam akun penyimpanan yang sama
- Tindakan Azure RBAC:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
- Peran bawaan yang paling tidak istimewa:Pembaca Data Blob Penyimpanan
Untuk mempelajari selengkapnya tentang menetapkan peran menggunakan Azure RBAC, lihat Menetapkan peran Azure untuk akses ke data blob.
Keterangan
Dalam versi 2012-02-12 dan yang lebih baru, Copy Blob
operasi dapat selesai secara asinkron. Operasi ini mengembalikan ID salinan yang dapat Anda gunakan untuk memeriksa atau membatalkan operasi salin. Karena sifat asinkron dari operasi salin, Blob Storage menyalin blob berdasarkan upaya terbaik. Blob service menyalin blob ketika sumber daya server tidak digunakan oleh tugas lain, sehingga salinan tidak dijamin akan segera dimulai atau selesai dalam jangka waktu yang ditentukan.
Blob sumber untuk operasi salin dapat berupa blob blok, blob penambahan, blob halaman, atau rekam jepret. Jika blob tujuan sudah ada, itu harus berasal dari jenis blob yang sama dengan blob sumber. Blob tujuan yang ada akan ditimpa. Anda tidak dapat mengubah blob tujuan saat operasi salin sedang berlangsung.
Dalam versi 2015-02-21 dan yang lebih baru, sumber untuk operasi salin juga dapat menjadi file dalam Azure Files. Jika sumber adalah file, tujuannya harus berupa blob blok.
Beberapa operasi tertunda Copy Blob
dalam akun mungkin diproses secara berurutan. Blob tujuan hanya dapat memiliki satu operasi yang luar Copy Blob
biasa. Dengan kata lain, blob tidak dapat menjadi tujuan untuk beberapa operasi yang tertunda Copy Blob
. Upaya untuk menyalin blob ke blob tujuan yang sudah memiliki operasi salin yang tertunda gagal dengan kode status 409 (Konflik).
Hanya akun penyimpanan yang dibuat pada atau setelah 7 Juni 2012, yang memungkinkan Copy Blob
operasi untuk menyalin dari akun penyimpanan lain. Upaya untuk menyalin dari akun penyimpanan lain ke akun yang dibuat sebelum 7 Juni 2012, gagal dengan kode status 400 (Permintaan Buruk).
Operasi Copy Blob
selalu menyalin seluruh blob atau file sumber. Menyalin rentang byte atau sekumpulan blok tidak didukung.
Copy Blob
Operasi dapat mengambil salah satu formulir berikut:
Anda dapat menyalin blob sumber ke blob tujuan yang memiliki nama berbeda. Blob tujuan dapat berupa blob yang ada dari jenis blob yang sama (blok, tambahkan, atau halaman), atau bisa menjadi blob baru yang dibuat operasi salin.
Anda dapat menyalin blob sumber ke blob tujuan yang memiliki nama yang sama, secara efektif menggantikan blob tujuan. Operasi penyalinan semacam itu menghapus blok yang tidak dilakukan dan menimpa metadata blob.
Anda dapat menyalin file sumber di Azure Files ke blob tujuan. Blob tujuan dapat menjadi blob blok yang ada, atau dapat menjadi blob blok baru yang dibuat operasi salin. Menyalin dari file ke blb halaman atau blob penambahan tidak didukung.
Anda dapat menyalin rekam jepret melalui blob dasarnya. Dengan mempromosikan snapshot ke posisi blob dasar, Anda dapat memulihkan versi blob yang lebih lama.
Anda dapat menyalin rekam jepret ke blob tujuan yang memiliki nama yang berbeda. Blob tujuan yang dihasilkan adalah blob yang dapat ditulis dan bukan snapshot.
Saat Anda menyalin dari blob halaman, Blob Storage membuat blob halaman tujuan dengan panjang blob sumber. Awalnya, blob halaman berisi semua nol. Kemudian rentang halaman sumber dijumlahkan, dan rentang yang tidak kosong disalin.
Untuk blob blok atau blob penambahan, Blob Storage membuat blob yang diterapkan dengan panjang nol sebelum kembali dari operasi ini.
Saat Anda menyalin dari blob blok, semua blok yang diterapkan dan ID bloknya disalin. Blok yang tidak dikomit tidak disalin. Di akhir operasi salin, blob tujuan memiliki jumlah blok berkomitmen yang sama dengan sumbernya.
Saat Anda menyalin dari blob penambahan, semua blok yang diterapkan akan disalin. Di akhir operasi salin, blob tujuan akan memiliki kurang dari atau jumlah blok yang diterapkan yang sama dengan blob sumber.
Untuk semua jenis blob, Anda dapat memanggil Get Blob
atau Get Blob Properties
pada blob tujuan untuk memeriksa status operasi salin. Blob akhir akan dilakukan ketika operasi salin selesai.
Ketika sumber operasi salin menyediakan ETag
nilai, setiap perubahan pada sumber saat operasi salin sedang berlangsung akan menyebabkan operasi tersebut gagal. Upaya untuk mengubah blob tujuan saat salinan sedang berlangsung akan gagal dengan kode status 409 (Konflik). Jika blob tujuan memiliki sewa tak terbatas, ID sewa harus diteruskan ke Copy Blob
. Sewa berkala terbatas tidak diperbolehkan.
Nilai ETag
untuk blob blok berubah ketika Copy Blob
operasi dimulai dan ketika operasi selesai. Nilai ETag
untuk blob halaman berubah ketika Copy Blob
operasi dimulai, dan terus sering berubah selama operasi salin. Konten blob blok terlihat melalui Get
perintah hanya setelah operasi penyalinan penuh selesai.
Menyalin properti blob, tag, dan metadata
Saat blob disalin, properti sistem berikut disalin ke blob tujuan yang memiliki nilai yang sama:
Content-Type
Content-Encoding
Content-Language
Content-Length
Cache-Control
Content-MD5
Content-Disposition
x-ms-blob-sequence-number
(hanya untuk blob halaman)x-ms-committed-block-count
(hanya untuk blob tambahan, dan hanya untuk versi 2015-02-21)
Daftar blokir yang diterapkan blob sumber juga disalin ke blob tujuan, jika blob adalah blob blok. Blok yang tidak dikomit tidak disalin.
Blob tujuan selalu berukuran sama dengan blob sumber. Nilai Content-Length
header untuk blob tujuan cocok dengan nilai header tersebut untuk blob sumber.
Ketika blob sumber dan blob tujuan sama, Copy Blob
menghapus blok yang tidak dikomit. Jika metadata ditentukan dalam kasus ini, metadata yang ada ditimpa dengan metadata baru.
x-ms-tags
Jika header menyediakan tag untuk blob tujuan, header tersebut harus dikodekan dengan string kueri. Kunci dan nilai tag harus sesuai dengan persyaratan penamaan dan panjang, seperti yang ditentukan dalam Atur Tag Blob.
Header x-ms-tags
dapat berisi hingga 2 kilobit tag. Jika Anda memerlukan lebih banyak tag, gunakan Set Blob Tags
operasi .
x-ms-tags
Jika header tidak menyediakan tag, maka tag tidak disalin dari blob sumber.
Menyalin blob sewaan
Operasi Copy Blob
hanya membaca dari blob sumber, sehingga status sewa blob sumber tidak masalah. Namun, Copy Blob
operasi menyimpan ETag
nilai blob sumber saat operasi penyalinan dimulai. ETag
Jika nilai berubah sebelum operasi penyalinan selesai, operasi gagal. Anda dapat mencegah perubahan pada blob sumber dengan menyewakannya selama operasi salin.
Jika blob tujuan memiliki sewa tak terbatas aktif, Anda harus menentukan ID sewanya dalam panggilan ke Copy Blob
operasi. Jika sewa yang Anda tentukan adalah sewa durasi terbatas aktif, panggilan ini gagal dengan kode status 412 (Prasyarat Gagal). Saat operasi salin tertunda, operasi sewa apa pun pada blob tujuan gagal dengan kode status 409 (Konflik). Sewa tak terbatas pada blob tujuan dikunci dengan cara ini selama operasi salin apakah Anda menyalin ke blob tujuan yang memiliki nama yang berbeda dari sumbernya, menyalin ke blob tujuan yang memiliki nama yang sama dengan sumbernya, atau mempromosikan rekam jepret melalui blob dasarnya.
Jika klien menentukan ID sewa pada blob yang belum ada, Blob Storage mengembalikan kode status 412 (Prasyarat Gagal) untuk permintaan yang dibuat terhadap versi 2013-08-15 dan yang lebih baru. Untuk versi sebelumnya, Blob Storage mengembalikan kode status 201 (Dibuat).
Menyalin rekam jepret blob
Saat blob sumber disalin, rekam jepret atau versi blob sumber apa pun tidak disalin ke tujuan. Saat blob tujuan ditimpa dengan salinan, rekam jepret atau versi apa pun yang terkait dengan blob tujuan tetap utuh dengan namanya.
Anda dapat melakukan operasi salin untuk mempromosikan rekam jepret melalui blob dasarnya, selama berada di tingkat online (panas atau dingin). Dengan cara ini, Anda dapat memulihkan versi blob yang lebih lama. Rekam jepret tetap ada, tetapi tujuannya ditimpa dengan salinan yang dapat dibaca dan ditulis.
Menyalin versi blob
Anda dapat melakukan operasi salin untuk mempromosikan versi melalui blob dasarnya, selama berada di tingkat online (panas atau dingin). Dengan cara ini, Anda dapat memulihkan versi blob yang lebih lama. Versi tetap ada, tetapi tujuannya ditimpa dengan salinan yang dapat dibaca dan ditulis.
Menyalin blob yang diarsipkan
Dimulai dengan versi 2018-11-09, Anda dapat menyalin blob yang diarsipkan ke blob baru dalam akun penyimpanan yang sama. Blob sumber tetap berada di tingkat arsip. Ketika blob sumber adalah blob yang diarsipkan, permintaan harus berisi x-ms-access-tier
header , yang menunjukkan tingkat blob tujuan. Blob tujuan harus berada di tingkat online. Anda tidak dapat menyalin ke blob di tingkat arsip.
Dimulai dengan versi 2021-02-12, Anda dapat menyalin blob yang diarsipkan ke tingkat online di akun penyimpanan yang berbeda, selama akun tujuan berada di wilayah yang sama dengan akun sumber.
Permintaan mungkin gagal jika blob sumber sedang direhidrasi.
Untuk informasi terperinci tentang tingkatan di tingkat blob blok, lihat Tingkat penyimpanan panas, dingin, dan arsip.
Bekerja dengan operasi salinan yang tertunda (versi 2012-02-12 dan yang lebih baru)
Copy Blob
Jika operasi selesai secara asinkron, gunakan tabel berikut untuk menentukan langkah berikutnya berdasarkan kode status yang dikembalikan:
Kode status | Makna |
---|---|
202 (Diterima), x-ms-copy-status: berhasil | Operasi salin berhasil diselesaikan. |
202 (Diterima), x-ms-copy-status: tertunda | Operasi salin belum selesai. Polling blob tujuan dengan menggunakan Get Blob Properties untuk memeriksa x-ms-copy-status header hingga operasi selesai atau gagal. |
4xx, 500, atau 503 | Operasi salin gagal. |
Selama dan setelah Copy Blob
operasi, properti blob tujuan berisi ID Copy Blob
salinan operasi dan URL blob sumber. Ketika operasi selesai, Blob Storage menulis nilai waktu dan hasil (success
, failed
, atau aborted
) ke properti blob tujuan. Jika operasi memiliki failed
hasil, x-ms-copy-status-description
header berisi string detail kesalahan.
Operasi yang tertunda Copy Blob
memiliki batas waktu dua minggu. Upaya salin yang belum selesai setelah dua minggu kehabisan waktu dan meninggalkan blob kosong dengan x-ms-copy-status
bidang diatur ke failed
dan x-ms-copy-status-description
diatur ke 500 (OperationCancelled). Kesalahan terputus-terputus dan tidak fatal yang dapat terjadi selama operasi penyalinan mungkin menghambat kemajuan operasi tetapi tidak menyebabkannya gagal. Dalam kasus ini, x-ms-copy-status-description
menjelaskan kesalahan terputus-terputus.
Setiap upaya untuk memodifikasi atau snapshot blob tujuan selama operasi salin akan gagal dengan kode status 409 (Konflik), "Salin Blob sedang Berlangsung."
Jika Anda memanggil Abort Copy Blob
operasi, Anda akan melihat x-ms-copy-status:aborted
header. Blob tujuan akan memiliki metadata utuh dan panjang blob 0 byte. Anda dapat mengulangi panggilan asli untuk Copy Blob
mencoba operasi salin lagi.
Copy Blob
Jika operasi selesai secara sinkron, gunakan tabel berikut untuk menentukan status operasi salin:
Kode status | Makna |
---|---|
202 (Diterima), x-ms-copy-status: berhasil | Operasi salin berhasil diselesaikan. |
4xx, 500, atau 503 | Operasi salin gagal. |
Tingkat diwariskan untuk tingkat penyimpanan premium. Untuk blob blok, menimpa blob tujuan akan mewarisi tingkat panas atau dingin dari tujuan jika x-ms-access-tier
tidak disediakan. Menimpa blob yang diarsipkan akan gagal. Untuk informasi terperinci tentang tingkatan di tingkat blob blok, lihat Tingkat penyimpanan panas, dingin, dan arsip.
Billing
Permintaan harga dapat berasal dari klien yang menggunakan API Blob Storage, baik langsung melalui Blob Storage REST API, atau dari pustaka klien Azure Storage. Permintaan ini mengumpulkan biaya per transaksi. Jenis transaksi memengaruhi cara akun ditagih. Misalnya, transaksi baca bertambah ke kategori penagihan yang berbeda dari transaksi tulis. Tabel berikut ini memperlihatkan kategori penagihan untuk Copy Blob
permintaan berdasarkan jenis akun penyimpanan:
Operasi | Jenis akun penyimpanan | Kategori penagihan |
---|---|---|
Salin Blob (akun tujuan1) | Objek besar biner blok premium Tujuan umum standar v2 Tujuan umum standar v1 |
Operasi tulis |
Salin Blob (akun sumber2) | Objek besar biner blok premium Tujuan umum standar v2 Tujuan umum standar v1 |
Membacakan operasi |
1Akun tujuan dibebankan untuk satu transaksi untuk memulai penulisan.
2Ketika objek sumber berada di akun yang berbeda, akun sumber menimbulkan satu transaksi untuk setiap permintaan baca ke objek sumber.
Untuk mempelajari tentang harga untuk kategori penagihan yang ditentukan, lihat harga Azure Blob Storage.
Akun tujuan juga dikenakan biaya transaksi untuk setiap permintaan untuk membatalkan operasi penyalinan (lihat Batalkan Salin Blob) atau untuk memeriksa status operasi salin (lihat Dapatkan Properti Blob atau Dapatkan Blob).
Selain itu, jika akun sumber dan tujuan berada di wilayah yang berbeda (misalnya, AS Utara dan AS Selatan), bandwidth yang Anda gunakan untuk mentransfer permintaan dibebankan ke akun penyimpanan sumber sebagai keluar. Keluar antar akun dalam wilayah yang sama gratis.
Saat Anda menyalin blob sumber ke blob tujuan yang memiliki nama berbeda dalam akun yang sama, Anda menggunakan sumber daya penyimpanan tambahan untuk blob baru. Operasi salin kemudian menghasilkan biaya terhadap penggunaan kapasitas akun penyimpanan untuk sumber daya tambahan tersebut. Namun, jika nama blob sumber dan tujuan sama dalam akun yang sama (misalnya, ketika Anda mempromosikan rekam jepret ke blob dasarnya), tidak ada biaya tambahan yang dikeluarkan, selain metadata salinan tambahan yang disimpan dalam versi 2012-02-12 dan yang lebih baru.
Saat Anda mempromosikan rekam jepret untuk menggantikan blob dasarnya, rekam jepret dan blob dasar menjadi identik. Mereka berbagi blok atau halaman, sehingga operasi salin tidak menghasilkan biaya tambahan terhadap penggunaan kapasitas akun penyimpanan. Namun, jika Anda menyalin rekam jepret ke blob tujuan yang memiliki nama berbeda, operasi tersebut dikenakan biaya tambahan untuk sumber daya penyimpanan yang digunakan blob baru yang dihasilkan. Dua blob yang memiliki nama berbeda tidak dapat berbagi blok atau halaman, meskipun identik. Untuk informasi selengkapnya tentang skenario biaya rekam jepret, lihat Memahami bagaimana rekam jepret mengumpulkan biaya.
Lihat juga
Mengotorisasi permintaan ke Azure Storage
Status dan kode galat
Kode kesalahan Blob Storage
Memahami bagaimana rekam jepret mengumpulkan biaya
Batalkan Menyalin Blob