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 |
|
|
Aynı bölgedeki paketler arasında bir nesneyi kopyalayın. |
|
|
|
|
|
İsteğe bağlı. Belirli bir nesne sürümünü kopyalamak için bu izin gereklidir. |
|
|
İsteğe bağlı. Kopyalama işlemi nesne etiketlemeyi içeriyorsa bu izinler gereklidir. |
|
|
|
|
|
İsteğe bağlı. Kopyalama işlemi belirli bir nesne sürümünün etiketlerini içeriyorsa bu izin gereklidir. |
|
|
İsteğe bağlı. Kopyalama işlemi KMS ile sunucu tarafı şifrelemeyi içeriyorsa bu izinler gereklidir. |
|
|
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 |
|
-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 |
|
--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 |
|
--acl |
Dosyanın erişim kontrol listesi (ACL). Geçerli değerler:
|
|
--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
|
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 -rKopyalama tamamlandıktan sonra
examplebucket2hedef 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 -rKopyalama tamamlandıktan sonra
examplebucket2hedef 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 --updateBaş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ı.
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
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******
--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.
--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.
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.