Tüm Ürünler
Search
Belge Merkezi

Object Storage Service:Copy objects using the cp command

Son Güncelleme:Oct 01, 2026

cp komutunu kullanarak dosyaları aynı bölgedeki bir kaynak paketten hedef pakete veya aynı paket içindeki başka bir dizine kopyalayabilirsiniz.

Dikkat Edilmesi Gerekenler

  • cp komutu, hesaplar veya bölgeler arasında dosya kopyalamayı desteklemez. Dosyaları hesaplar veya bölgeler arasında kopyalamak ya da geçişini sağlamak için Çevrimiçi Veri Geçişi hizmetini kullanın.

  • Bu komut yalnızca tam dosyaları kopyalar; dosyaların belirli parçalarını kopyalamayı desteklemez.

  • ossutil 1.6.16 ve sonraki sürümlerden itibaren, komut satırında ikili dosya adını yeniden adlandırmadan ossutil olarak kullanabilirsiniz. 1.6.16'dan önceki sürümler için ikili dosyayı işletim sisteminize uygun şekilde yeniden adlandırmanız gerekir. Daha fazla bilgi için bkz. Komut satırı aracı ossutil komut referansı.

İzinler

Varsayılan olarak tüm API işlemlerini gerçekleştirme izni yalnızca Alibaba Cloud hesabına aittir. Bu komutu çalıştırmak için RAM kullanıcısının veya rolünün, Alibaba Cloud hesabı veya yönetici tarafından bir RAM İlkesi veya Paket İlkesi aracılığıyla gerekli izinlerle yetkilendirilmesi gerekir.

API Eylemi

Açıklama

oss:GetObject

Aynı bölgedeki paketler arasında bir nesneyi kopyalayın.

oss:PutObject

oss:GetObjectVersion

İsteğe bağlı. Belirli bir nesne sürümünü kopyalamak için bu izin gereklidir.

oss:GetObjectTagging

İsteğe bağlı. Kopyalama işlemi nesne etiketlemeyi içeriyorsa bu izinler gereklidir.

oss:PutObjectTagging

oss:GetObjectVersionTagging

İsteğe bağlı. Kopyalama işlemi belirli bir nesne sürümünün etiketlerini içeriyorsa bu izin gereklidir.

kms:GenerateDataKey

İsteğe bağlı. Kopyalama işlemi KMS ile sunucu tarafı şifrelemeyi içeriyorsa bu izinler gereklidir.

kms:Decrypt

Komut sözdizimi

ossutil cp cloud_url cloud_url [options]

Aşağıdaki tabloda parametreler ve seçenekler açıklanmaktadır.

Parametre

Açıklama

cloud_url

Kaynak ve hedef OSS yolları. Biçim oss://bucketname/objectname şeklindedir. Örneğin, srcobject.jpg kaynak nesnesini examplebucket adlı aynı paketteki destobject.jpg hedef nesnesine kopyalamak için kaynak yolunu oss://examplebucket/srcobject.jpg ve hedef yolunu oss://examplebucket/destobject.jpg olarak ayarlayın.

-r, --recursive

Özyinelemeli bir işlem gerçekleştirir. Bu seçeneği belirtirseniz ossutil, paketteki eşleşen tüm nesneler üzerinde işlem yapar. Aksi takdirde işlem yalnızca belirtilen nesne üzerinde gerçekleştirilir.

-f --force

Onay istemi olmadan işlemi zorla gerçekleştirir.

-u,--update

Hedef nesne mevcut değilse veya kaynak nesnenin son değiştirilme zamanı hedef nesneden daha yeniyse nesneyi kopyalar.

--disable-ignore-error

Toplu işlemler sırasında hataları yok saymaz.

--only-current-dir

Yalnızca geçerli dizindeki dosyaları kopyalar. Alt dizinler ve bunlardaki dosyalar yok sayılır.

-bigfile-threshold

Kalan yerden devam eden kopyalama için boyut eşiği. Birim: bayt.

Varsayılan değer: 100 MB

Geçerli değerler: 0 ila 9223372036854775807

--part-size

Parça boyutu. Birim: bayt. Varsayılan olarak ossutil, dosya boyutuna göre uygun bir parça boyutu hesaplar.

Geçerli değerler: 1 ila 9223372036854775807

--checkpoint-dir

Kalan yerden devam eden kopyalama için kontrol noktası bilgilerini depolayan dizin. Kalan yerden devam eden kopyalama başarısız olursa ossutil, kontrol noktası bilgilerini kaydetmek üzere otomatik olarak .ossutil_checkpoint adlı bir dizin oluşturur. Bu dizin, kalan yerden devam eden kopyalama başarılı olduktan sonra silinir. Bu seçeneği belirtirseniz belirtilen dizinin silinebilir olduğundan emin olun.

--encoding-type

Dosya adının kodlama türü. Değeri url olarak ayarlayın. Bu seçeneği belirtmezseniz dosya adı kodlanmaz.

--include

Belirtilen koşulu karşılayan tüm dosyaları dahil eder.

--exclude

Belirtilen koşulu karşılayan tüm dosyaları hariç tutar.

--meta

Dosyanın meta verileri. Biçim header:value#header:value şeklindedir. Örnek: Cache-Control:no-cache#Content-Encoding:gzip. Meta veriler hakkında daha fazla bilgi için bkz. set-meta (Nesne meta verilerini yönetme).

--acl

Dosyanın erişim kontrol listesi (ACL). Geçerli değerler:

  • default (varsayılan): Nesne, paketin ACL'sini devralır.

  • private: Yalnızca paket sahibi nesne üzerinde okuma ve yazma izinlerine sahiptir. Diğer kullanıcılar nesneye erişemez.

  • public-read: Yalnızca paket sahibi nesne üzerinde yazma izinlerine sahiptir. Anonim kullanıcılar dahil diğer tüm kullanıcıların okuma izni vardır. Bu durum veri sızıntılarına ve beklenmeyen ücretlere neden olabilir. Gerekmedikçe bu izni vermenizi önermiyoruz.

  • public-read-write: Anonim kullanıcılar dahil tüm kullanıcıların nesne üzerinde okuma ve yazma izinleri vardır. Bu durum veri sızıntılarına ve beklenmeyen ücretlere neden olabilir. Bu izni dikkatli kullanın.

--disable-crc64

Veriler için 64 bit döngüsel artıklık denetimini (CRC-64) devre dışı bırakır. Varsayılan olarak ossutil'de veri aktarımı için CRC-64 etkindir.

--payer

İstek için ödeme yöntemi. Belirtilen yoldaki kaynaklara erişirken trafik ve isteklerin ücretini isteyenin ödemesini istiyorsanız bu seçeneği requester olarak ayarlayın.

-j,--jobs

Toplu işlemler için eşzamanlı görev sayısı. Varsayılan değer: 3. Geçerli değerler: 1 ila 10000.

--parallel

Tek bir dosya işlemi için eşzamanlı görev sayısı. Geçerli değerler: 1 ila 10000. Bu seçeneği ayarlamazsanız ossutil değeri işlem türüne ve dosya boyutuna göre belirler.

--version-id

Bir dosyanın belirli bir sürümünü kopyalar. Bu seçenek yalnızca sürüm oluşturma özelliği etkinleştirilmiş paketler için kullanılabilir.

--start-time

UNIX zaman damgası. Bu seçeneği belirtirseniz bu saatten önce son güncellenen nesneler yok sayılır.

Not

Yalnızca ossutil 1.7.18 ve sonraki sürümler bu parametreyi destekler. Yükseltme hakkında daha fazla bilgi için bkz. update (ossutil yükseltme).

--end-time

UNIX zaman damgası. Bu seçeneği belirtirseniz bu saatten sonra son güncellenen nesneler yok sayılır.

Not
  • Hem start-time hem de end-time belirtirseniz kopyalama komutu yalnızca belirtilen başlangıç ve bitiş saatleri arasında son değiştirilen dosyalar için yürütülür.

  • Yalnızca ossutil 1.7.18 ve sonraki sürümler bu parametreyi destekler. Sürümü nasıl yükselteceğiniz hakkında daha fazla bilgi için bkz. update (ossutil yükseltme).

Bu komut için diğer ortak seçenekler hakkında daha fazla bilgi için bkz. Ortak seçenekler.

Varsayılan eşzamanlılık performans gereksinimlerinizi karşılamıyorsa performansı ayarlamak için -j, --jobs ve --parallel seçeneklerini ayarlayabilirsiniz. Varsayılan olarak ossutil, parallel değerini dosya boyutuna göre hesaplar. Büyük dosyaları toplu halde aktarırken gerçek eşzamanlılık jobs değeri × parallel değeridir.

  • Komutu çalıştıran ECS örneğinin veya sunucunun ağ, bellek ve CPU gibi kaynakları sınırlıysa eşzamanlılığı 100'ün altında bir değere düşürmenizi öneririz. Kaynaklar tam olarak kullanılmıyorsa ihtiyaca göre eşzamanlılığı artırabilirsiniz.

  • Yüksek eşzamanlılık, iş parçacığı geçiş yükü ve kaynak rekabeti nedeniyle performansı düşürebilir ve hatta EOF hatalarına neden olabilir. Makinenizin mevcut kaynaklarına göre -j, --jobs ve --parallel seçeneklerini ayarlayın. Yük testi gerçekleştirirken düşük eşzamanlılıkla başlayıp en iyi değeri bulmak için kademeli olarak artırmanızı öneririz.

Kullanım örnekleri

Aşağıdaki örnekler Linux sistemi içindir. Parametreleri işletim sisteminize ve gerçek ortamınıza göre değiştirin. Örnekler aşağıdaki ortamı varsayar:

  • Kaynak paket: examplebucket1

  • Kaynak paketteki kaynak dizin 1: srcfolder1

  • Kaynak paketteki kaynak dizin 2: srcfolder2

  • Hedef paket: examplebucket2

  • Hedef paketteki hedef dizin: desfolder

Tek bir dosyayı kopyalayın

Aynı paket içinde bir dosyayı bir dizinden diğerine kopyalayın ve dosyayı example.txt olarak yeniden adlandırın.

ossutil cp oss://examplebucket1/srcfolder1/examplefile.txt oss://examplebucket1/srcfolder2/example.txt                             

Birden çok dosyayı toplu halde kopyalayın

Dosyaları kopyalarken kaynak yol eğik çizgi (/) ile bitmiyorsa belirtilen ön ekle eşleşen tüm dosyalar hedef pakete kopyalanır. Kaynak yol eğik çizgi (/) ile bitiyorsa yalnızca belirtilen dizindeki dosyalar hedef pakete kopyalanır.

examplebucket1 kaynak paketindeki srcfolder1 dizininin aşağıdaki dosyaları içerdiğini varsayalım:

srcfolder1/exampleobject1.txt
srcfolder1/exampleobject2.png
srcfolder1/dir1/
srcfolder1/dir1/exampleobject3.jpg
srcfolder1/dir2/
srcfolder1/dir2/exampleobject4.jpg
  • Kaynak yol eğik çizgi (/) ile bitmiyor

    ossutil cp oss://examplebucket1/srcfolder1  oss://examplebucket2 -r

    Kopyalama tamamlandıktan sonra examplebucket2 hedef paketine aşağıdaki dosyalar eklenir:

    srcfolder1/exampleobject1.txt
    srcfolder1/exampleobject2.png
    srcfolder1/dir1/
    srcfolder1/dir1/exampleobject3.jpg
    srcfolder1/dir2/
    srcfolder1/dir2/exampleobject4.jpg
  • Kaynak yol eğik çizgi (/) ile biter.

    ossutil cp oss://examplebucket1/srcfolder1/  oss://examplebucket2 -r

    Kopyalama tamamlandıktan sonra examplebucket2 hedef paketinde aşağıdaki dosyalar bulunur:

    exampleobject1.txt
    exampleobject2.png
    dir1/
    dir1/exampleobject3.jpg
    dir2/
    dir2/exampleobject4.jpg
  • Artımlı dosyaları kopyalayın

    Toplu kopyalama sırasında --update seçeneğini belirtirseniz ossutil, hedef nesne mevcut değilse veya kaynak nesnenin son değiştirilme zamanı hedef nesneden daha yeniyse nesneyi kopyalar. Komut şu şekildedir:

    ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket2/path2/ -r --update

    Başarısız olan bir toplu kopyalamayı yeniden denediğinizde zaten başarıyla kopyalanmış dosyaları atlayarak artımlı kopyalama gerçekleştirmek için bu seçeneği kullanabilirsiniz.

  • Yalnızca geçerli dizindeki dosyaları kopyalayın ve alt dizinleri yok sayın

    ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket1/srcfolder2/ --only-current-dir -r

Belirtilen bir zaman aralığındaki dosyaları kopyalayın

Yalnızca 31 Ekim 2023 saat 10:09:18 (UTC+8) ile 31 Ekim 2023 saat 12:55:58 (UTC+8) arasında son değiştirilen srcfolder1 içindeki dosyaları kopyalayın.

ossutil cp -r oss://examplebucket1/srcfolder1/ oss://examplebucket2/path2/ --start-time 1698718158 --end-time 1698728158

Belirtilen koşulları karşılayan dosyaları kopyalayın

Yalnızca belirli koşulları karşılayan dosyaları kopyalamak için --include ve --exclude parametrelerini kullanın.

  • JPG formatında olmayan tüm dosyaları kopyalayın.

    ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket2/desfolder/ --exclude "*.jpg" -r
  • Adlarında abc geçen ancak JPG veya TXT formatında olmayan tüm dosyaları kopyalayın

    ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket2/desfolder/ --include "*abc*" --exclude "*.jpg" --exclude "*.txt" -r

Bir dosyayı kopyalayın ve meta verilerini değiştirin

Nesne meta verilerini değiştirmek için --meta seçeneğini kullanın. Biçim header:value#header:value... şeklindedir.

ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/ --meta=Cache-Control:no-cache

Bir dosyayı kopyalayın ve istek başına ödeme modunu belirtin

Bir dosyayı kaynak paketten hedef pakete kopyalayın ve istek başına ödeme modunu belirtin.

ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket2/desfolder/  --payer=requester

Bir dosyayı kopyalayın ve depolama sınıfını değiştirin

Bir nesnenin üzerine yazarken depolama sınıfını değiştirmek için --meta seçeneğini ekleyebilirsiniz. Desteklenen depolama sınıfları şunlardır:

  • Standard: Standard

  • IA: Infrequent Access

  • Archive: Archive Storage

  • ColdArchive: Cold Archive

  • DeepColdArchive: Deep Cold Archive

Depolama sınıfları hakkında daha fazla bilgi için bkz. Depolama sınıfları.

Önemli

Varsayılan olarak --meta seçeneğini kullanarak depolama sınıfını değiştirdiğinizde mevcut özel nesne meta verilerinin üzerine yazılır. Depolama sınıfını değiştirirken mevcut özel nesne meta verilerini korumak için öncelikle x-oss-metadata-directive:COPY seçeneğini kullanarak meta verileri korumanız ve ardından depolama sınıfını değiştirmeniz gerekir.

Mevcut özel nesne meta verilerinin üzerine yazın

  • Belirli bir dosyanın depolama sınıfını Archive Storage olarak değiştirin

    ossutil cp oss://examplebucket1/srcfolder1/examplefile.txt oss://examplebucket1/srcfolder1/examplefile.txt --meta X-oss-Storage-Class:Archive
  • Belirli bir klasördeki tüm dosyaların depolama sınıfını Standard olarak değiştirin

    ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket1/srcfolder1/ --meta X-oss-Storage-Class:Standard -r

Mevcut özel nesne meta verilerini koruyun

  • Tek bir mevcut dosyanın meta verilerini koruyun.

    ossutil cp oss://examplebucket1/srcfolder1/examplefile.txt oss://examplebucket1/srcfolder1/examplefile.txt --meta x-oss-metadata-directive:COPY
  • Birden çok mevcut dosyanın meta verilerini koruyun.

    ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket1/srcfolder1/ --meta x-oss-metadata-directive:COPY -r -f 
Önemli
  • cp komutunu kullanarak bir nesnenin depolama sınıfını değiştirdiğinizde nesnenin kaynak depolama sınıfına göre PUT istekleri için ücretlendirilirsiniz. Ücretler hedef pakete yansıtılır.

  • Bir nesneyi Infrequent Access, Archive, Cold Archive veya Deep Cold Archive depolama sınıfına dönüştürürseniz ve nesne minimum depolama süresinden daha kısa bir süre depolanırsa erken silme ücreti uygulanır. Daha fazla bilgi için bkz. Depolama ücretleri.

  • cp komutunu kullanarak bir nesneyi Archive Storage, Cold Archive veya Deep Cold Archive depolama sınıfından Standard veya Infrequent Access depolama sınıfına dönüştürmek için önce nesneyi geri yüklemeniz gerekir. Nesneyi geri yüklemek için restore (bir nesneyi geri yükleme) komutunu kullanın. Nesne geri yüklendikten sonra depolama sınıfını değiştirmek için cp komutunu kullanabilirsiniz. Ancak Archive nesnelerinin gerçek zamanlı erişimi etkinleştirildiyse Archive Storage nesnelerini geri yüklemeden depolama sınıflarını değiştirebilirsiniz.

  • cp komutunu kullanarak 100 MB'tan büyük bir dosyanın depolama sınıfını değiştirdiğinizde ossutil varsayılan olarak dosya boyutuna göre uygun bir parça boyutu hesaplar. Otomatik parça boyutu ihtiyaçlarınızı karşılamıyorsa --part-size seçeneğini kullanarak bir parça boyutu belirtebilirsiniz. Parça sayısının 10.000'i aşmadığından emin olun.

Bir dosyayı kopyalayın ve etiketleri ayarlayın

Bir dosyanın üzerine yazarken nesne etiketleri eklemek veya değiştirmek için --tagging seçeneğini ekleyebilirsiniz. Birden çok etiketi ampersan (&) ile ayırın. Komut şu şekildedir:

ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/ --tagging "abc=1&bcd=2&……"

Nesne etiketleme hakkında daha fazla bilgi için bkz. object-tagging (Nesne etiketleme).

Bir dosyayı kopyalayın ve sunucu tarafı şifrelemeyi yapılandırın

Bir dosyayı bir pakete kopyalarken şifrelemek için bir sunucu tarafı şifreleme yöntemi belirtebilirsiniz. Sunucu tarafı şifreleme hakkında daha fazla bilgi için bkz. Sunucu tarafı şifreleme.

  • Bir dosyayı kopyalayın ve şifreleme yöntemi olarak AES256 belirtin

    ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/srcfolder2/ --meta=x-oss-server-side-encryption:AES256
  • Bir dosyayı kopyalayın ve şifreleme yöntemi olarak KMS belirtin

    ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket2/desfolder/ --meta=x-oss-server-side-encryption:KMS
    Önemli

    Şifreleme için KMS kullandığınızda OSS, dosya için bir ana anahtar oluşturmak üzere KMS'yi çağırır. Bu işlem KMS API çağrıları için ücrete neden olur. Daha fazla bilgi için bkz. KMS faturalandırması.

  • Bir dosyayı kopyalayın ve KMS şifrelemesi için CMK Kimliğini belirtin.

    ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket2/desfolder/ --meta=x-oss-server-side-encryption:KMS#x-oss-server-side-encryption-key-id:7bd6e2fe-cd0e-483e-acb0-f4b9e1******
Not

--meta seçeneği ossutil 1.x için geçerlidir. ossutil 2.x için bunun yerine aşağıdaki komutu kullanın:

ossutil api copy-object --server-side-encryption SM4

Bir dosyanın geçmiş sürümünü geri yükleyin

Bir paket için sürüm oluşturmayı etkinleştirdikten sonra üzerine yazılan ve silinen nesneler geçmiş sürümler olarak kaydedilir. Geçmiş bir sürümü geri yüklemek ve mevcut sürümün üzerine yazmak için cp komutuna --version-id seçeneğini ekleyebilirsiniz.

Önce nesnenin tüm sürüm kimliklerini almak için ls --all-versions komutunu kullanın. Ardından belirli bir sürümü kopyalamak için --version-id seçeneğini kullanın.

Not

--version-id seçeneği yalnızca sürüm oluşturma özelliği etkinleştirilmiş paketler için kullanılabilir. Bir paket için sürüm oluşturmayı etkinleştirmek üzere kullanılan komut hakkında daha fazla bilgi için bkz. bucket-versioning (Sürüm Oluşturma).

ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket2/ --version-id  CAEQARiBgID8rumR2hYiIGUyOTAyZGY2MzU5MjQ5ZjlhYzQzZjNlYTAyZDE3MDRk

Hesaplar arası kopyalama

Başka bir Alibaba Cloud hesabına ait Çin (Şanghay) bölgesindeki examplebucket kaynak paketinin kök dizinindeki srcobject.png dosyasını destbucket hedef paketine kopyalamak için -e, -i ve -k ortak seçeneklerini kullanın.

Not

Paketin bulunduğu bölge için uç noktayı belirtmeniz gerekir. Daha fazla bilgi için bkz. Bölgeler ve Uç Noktalar.

ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret
Güvenlik ipucu : Komut satırında AccessKey kullanmak bir güvenlik riskidir. Otomatik veya uzun vadeli görevler için kaynak hesapta bir RAM rolü oluşturmanızı ve daha güvenli hesaplar arası erişim için hedef hesaba bu RAM rolünü üstlenme izni vermenizi öneririz.