Aynı bölgedeki aynı veya farklı paketler arasında bir nesneyi kopyalamak için CopyObject işlemini kullanabilirsiniz.
Sürüm Oluşturma
Varsayılan olarak, x-oss-copy-source bir nesnenin geçerli sürümünü kopyalar. Belirli bir sürümü kopyalamak için sürüm kimliğini x-oss-copy-source içine ekleyin. Belirtilen kaynak sürüm bir silme işaretçisi ise OSS 404 hatası döndürür; bu durum nesnenin mevcut olmadığını gösterir.
Bir önceki sürümü aynı pakete kopyalayarak o sürümü geçerli sürüm olarak geri yükleyebilirsiniz. OSS daha sonra söz konusu önceki sürümü geçerli sürüm olarak ayarlar.
Hedef paket için sürüm oluşturma etkinleştirilmişse OSS yeni kopyalanan nesne için otomatik olarak benzersiz bir sürüm kimliği oluşturur. Bu sürüm kimliği x-oss-version-id yanıt üstbilgisinde döndürülür. Hedef paket için sürüm oluşturma devre dışı bırakılmışsa veya askıya alınmışsa OSS yeni nesne için null sürüm kimliğine sahip bir sürüm oluşturur. Bu yeni sürüm null sürüm kimliğine sahip mevcut tüm sürümlerin üzerine yazar.
Kısıtlamalar
-
Nesne boyutu sınırları
-
Kaynak ve hedef paketler aynıysa ve kopyalama işlemi sırasında nesnenin şifreleme yöntemini veya depolama sınıfını değiştirmezseniz nesne 5 GB'tan büyük olabilir.
-
Kaynak ve hedef paketler farklıysa ve kopyalama işlemi sırasında nesnenin şifreleme yöntemini veya depolama sınıfını değiştirmezseniz nesne 5 GB'tan büyük olamaz.
-
Kopyalama işlemi sırasında nesnenin şifreleme yöntemini veya depolama sınıfını değiştirirseniz nesne 1 GB'tan büyük olamaz. Nesne 1 GB'tan büyükse UploadPartCopy işlemini kullanmanız gerekir.
-
-
İzinler
Hem CopyObject hem de UploadPartCopy işlemleri kaynak nesne üzerinde okuma izni gerektirir.
-
Sürüm oluşturma özelliği devre dışı olan bir pakette CopyObject işlemini kullanırsanız ve kaynak ile hedef nesneler aynıysa:
-
Şifreleme yöntemi veya depolama sınıfı değiştirilmezse OSS yalnızca nesnenin meta verilerini değiştirir ve içeriğini kopyalamaz.
-
Şifreleme yöntemi veya depolama sınıfı değiştirilirse OSS meta verileri değiştirir ve nesnenin içeriğini de kopyalar.
-
-
Kaynak nesne sembolik bağlantıdır
Sembolik bağlantı üzerinde CopyObject işlemini kullanırsanız yalnızca sembolik bağlantı kopyalanır. Sembolik bağlantının işaret ettiği dosyanın içeriği kopyalanmaz.
-
Paket için hiyerarşik ad alanı etkinleştirildi
Paket için hiyerarşik ad alanı etkinleştirildiyse dizinleri kopyalayamazsınız.
-
Dosya üzerine yazma çakışmalarının önlenmesi
Prevent File Overwrite özelliğini etkinleştirirseniz CopyObject kullanarak bir dosyanın depolama sınıfını (örneğin Standard'dan Archive Storage'a) değiştiremezsiniz. Bunun yerine otomatik yaşam döngüsü dönüşümünü kullanın.
İzinler
Varsayılan olarak Alibaba Cloud hesabı tam izinlere sahiptir. Bir Alibaba Cloud hesabı altındaki RAM kullanıcıları veya RAM rolleri varsayılan olarak herhangi bir izne sahip değildir. Alibaba Cloud hesabı veya hesap yöneticisi RAM policies veya Bucket Policy aracılığıyla işlem izinleri vermelidir.
|
API |
Action |
Description |
|
CopyObject |
|
Aynı bölgedeki bir paket içinde veya paketler arasında nesneleri kopyalar. |
|
|
||
|
|
Kaynak nesne sürümünü versionId aracılığıyla belirtirseniz bu izin de gereklidir. |
|
|
|
Nesne etiketlerini x-oss-tagging aracılığıyla kopyalarsanız bu izinler gereklidir. |
|
|
|
||
|
|
Kaynak nesnenin belirli bir sürümünün etiketlerini versionId aracılığıyla belirtirseniz bu izin de gereklidir. |
|
|
|
Bir nesneyi kopyalarken hedef nesne meta verileri X-Oss-Server-Side-Encryption: KMS içeriyorsa bu iki izin gereklidir. |
|
|
|
Faturalandırma
-
CopyObject işlemine yapılan her çağrı hedef paket için bir PUT isteği olarak sayılır.
-
CopyObject işlemi hedef paketin depolama kullanımını artırır.
-
CopyObject işlemini kullanarak bir nesnenin depolama sınıfını değiştirmek veri üzerine yazmayı içerir. Örneğin IA (Infrequent Access) nesnesi oluşturulduktan sonraki 10 gün içinde üzerine yazılır ve depolama sınıfı Standard olarak değiştirilirse minimum depolama süresi karşılanmadığından 20 günlük IA depolama ücreti tahsil edilir. Depolama ücretleri hakkında daha fazla bilgi için bkz. Storage fees.
-
CopyObject işlemini çağırdığınızda kaynak nesne bir IA nesnesiyse IA depolama için veri getirme ücreti oluşur. Kaynak nesne RestoreObject kullanılarak geri yüklenmemiş bir Archive Storage nesnesiyse ve paket için Archive nesnelerinin gerçek zamanlı erişimi etkinleştirilmişse gerçek zamanlı erişim için veri getirme ücreti oluşur. Bu ücretler kaynak pakete sahip olan hesaba yansıtılır. Faturalandırma hakkında daha fazla bilgi için bkz. Data processing fees.
İstek sözdizimi
PUT /DestObjectName HTTP/1.1
Host: DestBucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue
x-oss-copy-source: /SourceBucketName/SourceObjectName
İstek üstbilgileri
Kopyalama işlemine yönelik tüm istek üstbilgileri x-oss- ile başlar. Bu nedenle tüm bu istek üstbilgilerini imza dizesine eklemeniz gerekir.
|
Name |
Type |
Required |
Value |
Description |
|
x-oss-forbid-overwrite |
String |
No |
true |
Aynı ada sahip mevcut bir hedef nesnenin üzerine yazılıp yazılmayacağını belirtir. Hedef paket için sürüm oluşturma etkinleştirilmiş veya askıya alınmışsa x-oss-forbid-overwrite istek üstbilgisi geçersizdir. Bu durumda aynı ada sahip bir nesnenin üzerine yazılmasına izin verilir.
x-oss-forbid-overwrite istek üstbilgisini ayarlamak QPS işleme performansını düşürür. Çok sayıda işlemde (QPS > 1000) x-oss-forbid-overwrite istek üstbilgisini kullanmak için işinizi etkilememek üzere teknik destek ile iletişime geçin. Varsayılan değer: false |
|
x-oss-copy-source |
String |
Yes |
/oss-example/oss.jpg |
Kopyalama işlemi için kaynak adresini belirtir. Varsayılan değer: yok |
|
x-oss-copy-source-if-match |
String |
No |
5B3C1A2E053D763E1B002CC607C5**** |
Yalnızca kaynak nesnenin ETag değeri sağladığınız ETag ile eşleşirse kopyalama işlemi gerçekleştirilir ve 200 OK döndürülür. Varsayılan değer: yok |
|
x-oss-copy-source-if-none-match |
String |
No |
5B3C1A2E053D763E1B002CC607C5**** |
Yalnızca kaynak nesnenin ETag değeri sağladığınız ETag ile eşleşmezse kopyalama işlemi gerçekleştirilir ve 200 OK döndürülür. Varsayılan değer: yok |
|
x-oss-copy-source-if-unmodified-since |
String |
No |
Mon, 11 May 2020 08:16:23 GMT |
Yalnızca belirttiğiniz zaman nesnenin gerçek değiştirilme zamanıyla aynıysa veya ondan sonraysa nesne kopyalanır ve 200 OK döndürülür. Varsayılan değer: yok |
|
x-oss-copy-source-if-modified-since |
String |
No |
Mon, 11 May 2020 08:16:23 GMT |
Yalnızca belirttiğiniz zaman nesnenin gerçek değiştirilme zamanından önceyse nesne kopyalanır ve 200 OK döndürülür. Varsayılan değer: yok |
|
x-oss-metadata-directive |
String |
No |
COPY |
Hedef nesnenin meta verilerinin nasıl ayarlanacağını belirtir.
Önemli
Kaynak ve hedef nesneler aynıysa ve sürüm oluşturma etkinleştirilmemişse x-oss-metadata-directive değerinden bağımsız olarak kaynak nesnenin meta verileri yoksayılır. Hedef nesne istekte belirtilen meta verileri kullanır. |
|
x-oss-server-side-encryption |
String |
No |
AES256 |
OSS'in hedef nesneyi oluştururken kullandığı sunucu tarafı şifreleme algoritmasını belirtir. Geçerli değerler: AES256 ve KMS Önemli
Sembolik bağlantı nesnesini kopyalarken x-oss-server-side-encryption belirtemezsiniz. KMS şifreleme algoritmasını yalnızca bir KMS paketi satın aldıktan sonra kullanabilirsiniz. Aksi takdirde OSS KmsServiceNotEnabled hatasını döndürür.
|
|
x-oss-server-side-encryption-key-id |
String |
No |
9468da86-3509-4f8d-a61e-6eab1eac**** |
KMS tarafından yönetilen müşteri anahtarını (CMK) belirtir. Bu parametre yalnızca x-oss-server-side-encryption KMS olarak ayarlandığında geçerlidir. |
|
x-oss-object-acl |
String |
No |
private |
Nesne OSS'te oluşturulduğunda hedef nesnenin erişim izinlerini belirtir. Geçerli değerler:
Erişim izinleri hakkında daha fazla bilgi için bkz. Object ACL. |
|
x-oss-storage-class |
String |
No |
Standard |
Nesnenin depolama sınıfını belirtir. Herhangi bir depolama sınıfına sahip bir paket için nesne yüklerken bu üstbilgiyi belirtirseniz yüklenen nesne belirtilen depolama sınıfında saklanır. Örneğin bir IA paketine nesne yüklerken x-oss-storage-class değerini Standard olarak ayarlarsanız nesne Standard nesne olarak saklanır. Geçerli değerler:
Depolama sınıfları hakkında daha fazla bilgi için bkz. Storage classes. |
|
x-oss-tagging |
String |
No |
a:1 |
Nesnenin etiketlerini belirtir. Aynı anda birden çok etiket belirtebilirsiniz örneğin TagA=A&TagB=B. Not
Anahtar ve değer URL kodlamalı olmalıdır. Bir öğe eşit işareti (=) içermiyorsa değer boş bir dize olarak kabul edilir. |
|
x-oss-tagging-directive |
String |
No |
Copy |
Hedef nesnenin etiketlerinin nasıl ayarlanacağını belirtir. Geçerli değerler:
|
Bu işlem Host ve Date gibi ortak istek üstbilgilerini de kullanır. Daha fazla bilgi için bkz. Common request headers.
Yanıt üstbilgileri
Bu işlem yalnızca ortak yanıt üstbilgilerini kullanır. Daha fazla bilgi için bkz. Common response headers.
Yanıt öğeleri
|
|
|
|
|
|
|
|
|
CopyObject işleminin sonuçları için bir kapsayıcı. Default value: none |
|
|
|
|
Hedef nesnenin ETag değeri. Parent element: CopyObjectResult |
|
|
|
|
Hedef nesnenin son güncellenme zamanı. Parent element: CopyObjectResult |
Örnekler
-
Sürüm oluşturma devre dışı
Örnek istek
PUT /test%2FAK.txt HTTP/1.1 Host: tesx.oss-cn-zhangjiakou.aliyuncs.com Accept-Encoding: identity User-Agent: aliyun-sdk-python/2.6.0(Windows/7/AMD64;3.7.0) Accept: text/html Connection: keep-alive x-oss-copy-source: /test/AK.txt date: Fri, 28 Dec 2018 09:41:55 GMT authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e Content-Length: 0Örnek yanıt
x-oss-hash-crc64ecmanesnenin 64 bitlik CRC değerini gösterir. Bu 64 bitlik CRC değeri CRC-64/XZ standardına göre hesaplanır. CopyObject işlemi oluşturulan nesnenin 64 bitlik CRC değerine sahip olmasını garanti etmez.HTTP/1.1 200 OK Server: AliyunOSS Date: Fri, 28 Dec 2018 09:41:56 GMT Content-Type: application/xml Content-Length: 184 Connection: keep-alive x-oss-request-id: 5C25EFE4462CE00EC6D87156 ETag: "F2064A169EE92E9775EE5324D0B1****" x-oss-hash-crc64ecma: 12753002859196105360 x-oss-server-time: 150 <?xml version="1.0" encoding="UTF-8"?> <CopyObjectResult> <ETag>"F2064A169EE92E9775EE5324D0B1****"</ETag> <LastModified>2018-12-28T09:41:56.000Z</LastModified> </CopyObjectResult> -
Sürüm kimliği belirtmeden bir nesneyi kopyala
Örnek istek
PUT /dest-object-example HTTP/1.1 Host: versioning-copy.oss-cn-hangzhou.aliyuncs.com Date: Tue, 09 Apr 2019 03:45:32 GMT Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e x-oss-copy-source: /versioning-copy-source/source-objectÖrnek yanıt
Bu örnekte
x-oss-copy-source-version-idkaynak nesnenin sürüm kimliğidir ki bu durumda geçerli sürümdür.x-oss-version-idyeni kopyalanan nesnenin sürüm kimliğidir.HTTP/1.1 200 OK x-oss-copy-source-version-id: CAEQNRiBgIC28uaA0BYiIDY5OGIwNmNlNjYyMTRjNTc4N2M2OGNiMjZkZTQ2**** x-oss-version-id: CAEQNxiBgIDG8uaA0BYiIGZhZDRkZTk5Zjg3YzRhNzdiMWEwZGViNDM1NTFh**** x-oss-request-id: 5CAC155CB7AEADE01700**** Content-Type: application/xml Content-Length: 184 Connection: keep-alive Date: Tue, 09 Apr 2019 03:45:32 GMT Server: AliyunOSS <?xml version="1.0" encoding="UTF-8"?> <CopyObjectResult> <ETag>"C81E728D9D4C2F636F067F89CC14****"</ETag> <LastModified>2019-04-09T03:45:32.000Z</LastModified> </CopyObjectResult> -
Sürüm kimliği belirterek bir nesneyi kopyala
Örnek istek
PUT /dest-object-example HTTP/1.1 Host: versioning-copy.oss-cn-hangzhou.aliyuncs.com Date: Tue, 09 Apr 2019 03:45:32 GMT Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e x-oss-copy-source: /versioning-copy-source/source-object?versionId=CAEQNRiBgICv8uaA0BYiIDliZDc3MTc1NjE5MjRkMDI4ZGU4MTZkYjY1ZDgy****Örnek yanıt
Bu örnekte
x-oss-copy-source-version-idkaynak nesnenin sürüm kimliğidir ve bu değerx-oss-copy-sourceistek üstbilgisinde belirtilen sürümdür.x-oss-version-idyeni kopyalanan nesnenin sürüm kimliğidir.HTTP/1.1 200 OK x-oss-copy-source-version-id: CAEQNRiBgICv8uaA0BYiIDliZDc3MTc1NjE5MjRkMDI4ZGU4MTZkYjY1ZDgy**** x-oss-version-id: CAEQNxiBgMDP8uaA0BYiIDIyNGNhZDQ1M2M3NzRkZThiNzE0N2I3ZDkxOWY4**** x-oss-request-id: 5CAC155CB7AEADE01700**** Content-Type: application/xml Content-Length: 184 Connection: keep-alive Date: Tue, 09 Apr 2019 03:45:32 GMT Server: AliyunOSS <?xml version="1.0" encoding="UTF-8"?> <CopyObjectResult> <ETag>"C4CA4238A0B923820DCC509A6F75****"</ETag> <LastModified>2019-04-09T03:45:32.000Z</LastModified> </CopyObjectResult>
SDK'ler
Bu işlemi çağırmak için aşağıdaki dillere ait yazılım geliştirme kitlerini (SDK) kullanabilirsiniz.
ossutil komut satırı aracı
CopyObject işlemine karşılık gelen ossutil komutu için bkz. copy-object.
Hata kodları
|
Error code |
HTTP status code |
Description |
|
InvalidArgument |
400 |
x-oss-storage-class gibi bir parametrenin değeri geçersiz. |
|
Precondition Failed |
412 |
Bu hata aşağıdaki nedenlerden biriyle döndürülür:
|
|
Not Modified |
304 |
Bu hata aşağıdaki nedenlerden biriyle döndürülür:
|
|
KmsServiceNotEnabled |
403 |
x-oss-server-side-encryption değerini KMS olarak ayarladınız ancak bir KMS paketi satın almadınız. |
|
FileAlreadyExists |
409 |
Bu hatanın olası nedenleri şunlardır:
|
|
FileImmutable |
409 |
Korunan durumdaki bir paketteki verileri silmeye veya değiştirmeye çalışırsanız bu hata döndürülür. |
SSS
CopyObject dosyaların toplu olarak kopyalanmasını destekler mi?
Hayır, desteklemez. CopyObject işlemi tek bir dosyayı kopyalamak için kullanılır. Birden çok dosyayı toplu olarak kopyalamak için ossutil kullanabilirsiniz. Daha fazla bilgi için bkz. cp (Dosyaları kopyalama).