Gunakan perintah cp untuk menyalin objek dari bucket sumber ke bucket tujuan dalam wilayah yang sama, atau ke direktori lain dalam bucket yang sama.
Catatan penggunaan
Perintah cp tidak mendukung operasi salin lintas akun atau lintas wilayah. Untuk menyalin atau memigrasikan objek antar akun atau wilayah, gunakan Data Online Migration.
Perintah ini hanya menyalin objek lengkap dan tidak mendukung penyalinan bagian yang belum lengkap dari unggah multi-bagian.
Mulai dari ossutil 1.6.16, Anda dapat menggunakan ossutil sebagai nama biner tanpa mengganti namanya. Pada versi sebelumnya, Anda harus mengganti nama biner sesuai sistem operasi Anda. Untuk informasi selengkapnya, lihat Memulai dengan ossutil.
Izin
Secara default, hanya Akun Alibaba Cloud yang memiliki izin untuk menjalankan semua Operasi API. Untuk menjalankan perintah ini, Pengguna RAM atau Peran RAM harus diberikan izin yang diperlukan oleh Akun Alibaba Cloud atau administrator melalui RAM Policy atau Bucket Policy.
API action | Deskripsi |
| Menyalin objek dalam bucket yang sama atau antar bucket berbeda dalam wilayah yang sama. |
| |
| Opsional. Izin ini diperlukan untuk menyalin versi tertentu dari suatu objek. |
| Opsional. Izin ini diperlukan jika operasi salin melibatkan penandaan objek. |
| |
| Opsional. Izin ini diperlukan jika operasi salin melibatkan tag dari versi objek tertentu. |
| Opsional. Izin ini diperlukan jika operasi salin melibatkan enkripsi sisi server dengan KMS. |
|
Sintaksis perintah
ossutil cp cloud_url cloud_url [options]Tabel berikut menjelaskan parameter dan opsi.
Parameter | Deskripsi |
cloud_url | Jalur objek OSS sumber dan tujuan. Formatnya adalah |
-r, --recursive | Menjalankan operasi rekursif. Jika ditentukan, ossutil menerapkan operasi ke semua objek yang sesuai dengan awalan yang ditentukan. Jika tidak, operasi hanya berlaku untuk objek tunggal yang ditentukan. |
-f --force | Memaksa operasi tanpa prompt konfirmasi. |
-u, --update | Hanya menyalin objek jika objek tujuan tidak ada atau waktu modifikasi terakhir objek sumber lebih baru daripada objek tujuan. |
--disable-ignore-error | Tidak mengabaikan error selama operasi batch. |
--only-current-dir | Hanya menyalin objek dalam direktori saat ini dan mengabaikan subdirektori. |
-bigfile-threshold | Ambang batas ukuran untuk salin yang dapat dilanjutkan. Satuan: byte. Nilai default: 100 MB Nilai valid: 0 hingga 9223372036854775807 |
--part-size | Ukuran setiap bagian dalam operasi salin multi-bagian. Satuan: byte. Secara default, ossutil secara otomatis menghitung ukuran bagian yang sesuai berdasarkan ukuran objek. Nilai valid: 1 hingga 9223372036854775807 |
--checkpoint-dir | Direktori tempat menyimpan informasi checkpoint untuk salin yang dapat dilanjutkan. Jika salin yang dapat dilanjutkan gagal, ossutil secara otomatis membuat direktori bernama |
--encoding-type | Tentukan url untuk melakukan URL-encode pada nama objek. Jika opsi ini tidak ditentukan, nama objek tidak di-encode. |
--include | Menyertakan semua objek yang sesuai dengan pola yang ditentukan. |
--exclude | Mengecualikan semua objek yang sesuai dengan pola yang ditentukan. |
--meta | Menetapkan metadata untuk objek. Formatnya adalah |
--acl | Daftar kontrol akses (ACL) objek. Nilai valid:
|
--disable-crc64 | Menonaktifkan pemeriksaan integritas data CRC-64. Secara default, CRC-64 diaktifkan untuk transfer data di ossutil. |
--payer | Pihak yang membayar permintaan. Untuk membebankan biaya akses (seperti transfer data dan permintaan) kepada pemohon, atur opsi ini ke requester. |
-j, --jobs | Jumlah tugas konkuren untuk operasi batch. Nilai default: 3. Nilai valid: 1 hingga 10000. |
--parallel | Jumlah tugas konkuren untuk operasi objek tunggal. Nilai valid: 1 hingga 10000. Jika opsi ini tidak ditentukan, ossutil menentukan nilainya berdasarkan jenis operasi dan ukuran objek. |
--version-id | Menyalin versi tertentu dari objek. Opsi ini hanya tersedia untuk bucket yang telah mengaktifkan versioning. |
--start-time | Timestamp Unix. Jika ditentukan, objek yang dimodifikasi terakhir sebelum waktu ini akan diabaikan. Catatan Parameter ini hanya didukung di ossutil 1.7.18 dan versi yang lebih baru. Untuk informasi selengkapnya tentang cara upgrade ossutil, lihat update (Upgrade ossutil). |
--end-time | Timestamp Unix. Jika ditentukan, objek yang dimodifikasi terakhir setelah waktu ini akan diabaikan. Catatan
|
Untuk informasi selengkapnya tentang opsi umum lainnya untuk perintah ini, lihat opsi umum.
Jika konkurensi default tidak memenuhi kebutuhan kinerja Anda, Anda dapat menyesuaikan opsi -j, --jobs dan --parallel untuk menyesuaikan kinerja. Secara default, ossutil menghitung nilai parallel berdasarkan ukuran objek. Saat Anda mentransfer objek besar secara batch, konkurensi aktual adalah nilai jobs dikalikan dengan nilai parallel.
Jika sumber daya, seperti jaringan, memori, dan CPU, dari Instance ECS atau server tempat perintah dijalankan terbatas, kami menyarankan Anda mengurangi konkurensi ke nilai kurang dari 100. Jika sumber daya tidak sepenuhnya dimanfaatkan, Anda dapat meningkatkan konkurensi sesuai kebutuhan.
Konkurensi yang terlalu tinggi dapat menurunkan kinerja atau bahkan menyebabkan error EOF karena overhead switching thread dan persaingan sumber daya. Sesuaikan opsi -j, --jobs dan --parallel berdasarkan sumber daya mesin Anda. Saat melakukan uji stres, kami menyarankan Anda memulai dengan konkurensi rendah dan secara bertahap meningkatkannya untuk menemukan nilai optimal.
Contoh
Contoh berikut menggunakan sistem Linux. Sesuaikan parameter berdasarkan sistem operasi dan lingkungan aktual Anda. Contoh ini mengasumsikan hal berikut:
Bucket sumber: examplebucket1
Direktori sumber 1 dalam bucket sumber: srcfolder1
Direktori sumber 2 dalam bucket sumber: srcfolder2
Bucket tujuan: examplebucket2
Direktori tujuan dalam bucket tujuan: desfolder
Salin satu objek
Salin objek dari satu direktori ke direktori lain dalam bucket yang sama dan ubah nama objek menjadi example.txt.
ossutil cp oss://examplebucket1/srcfolder1/examplefile.txt oss://examplebucket1/srcfolder2/example.txt Salin beberapa objek secara batch
Perilaku salin batch berubah tergantung apakah jalur sumber diakhiri dengan garis miring (/). Jika jalur tidak diakhiri dengan /, semua objek dengan awalan tersebut disalin. Jika jalur diakhiri dengan /, hanya objek yang langsung berada dalam direktori tersebut yang disalin.
Asumsikan bahwa direktori srcfolder1 dalam bucket sumber examplebucket1 berisi objek berikut:
srcfolder1/exampleobject1.txt
srcfolder1/exampleobject2.png
srcfolder1/dir1/
srcfolder1/dir1/exampleobject3.jpg
srcfolder1/dir2/
srcfolder1/dir2/exampleobject4.jpgJalur sumber tidak diakhiri dengan garis miring (/)
ossutil cp oss://examplebucket1/srcfolder1 oss://examplebucket2 -rSetelah penyalinan selesai, objek berikut ada di bucket tujuan examplebucket2:
srcfolder1/exampleobject1.txt srcfolder1/exampleobject2.png srcfolder1/dir1/ srcfolder1/dir1/exampleobject3.jpg srcfolder1/dir2/ srcfolder1/dir2/exampleobject4.jpgJalur sumber diakhiri dengan garis miring (/)
ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket2 -rSetelah penyalinan selesai, objek berikut ada di bucket tujuan examplebucket2:
exampleobject1.txt exampleobject2.png dir1/ dir1/exampleobject3.jpg dir2/ dir2/exampleobject4.jpgLakukan salin inkremental
Selama salin batch, jika Anda menentukan opsi --update, ossutil hanya menyalin objek jika objek tujuan tidak ada atau waktu modifikasi terakhir objek sumber lebih baru daripada objek tujuan. Perintahnya adalah sebagai berikut:
ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket2/path2/ -r --updateAnda dapat menggunakan opsi ini untuk melanjutkan operasi salin batch yang gagal dengan melewati objek yang telah berhasil disalin.
Hanya salin objek dalam direktori saat ini dan abaikan subdirektori
ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket1/srcfolder2/ --only-current-dir -r
Salin objek dalam rentang waktu tertentu
Hanya salin objek dalam srcfolder1 yang dimodifikasi terakhir antara pukul 10:09:18 pada 31 Oktober 2023 (UTC+8) dan 12:55:58 pada 31 Oktober 2023 (UTC+8).
ossutil cp -r oss://examplebucket1/srcfolder1/ oss://examplebucket2/path2/ --start-time 1698718158 --end-time 1698728158Salin objek dengan kondisi tertentu
Gunakan opsi --include dan --exclude untuk hanya menyalin objek yang memenuhi kondisi tertentu.
Salin semua objek yang bukan dalam format JPG
ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket2/desfolder/ --exclude "*.jpg" -rSalin semua objek yang namanya mengandung abc tetapi bukan dalam format JPG atau TXT
ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket2/desfolder/ --include "*abc*" --exclude "*.jpg" --exclude "*.txt" -r
Salin dan ubah metadata objek
Gunakan opsi --meta untuk mengubah metadata objek. Formatnya adalah header:value#header:value....
ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/ --meta=Cache-Control:no-cacheSalin dengan Requester Pays
Salin objek dari bucket sumber ke bucket tujuan dan tentukan mode Requester Pays.
ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket2/desfolder/ --payer=requesterSalin dan ubah kelas penyimpanan
Saat Anda overwrite objek, Anda dapat menambahkan opsi --meta untuk mengubah kelas penyimpanannya. Nilai valid:
Standard
Infrequent Access
Archive Storage
Cold Archive
Deep Cold Archive
Untuk informasi selengkapnya tentang kelas penyimpanan, lihat Kelas penyimpanan.
Saat Anda menggunakan opsi --meta untuk mengubah kelas penyimpanan, metadata file kustom yang ada akan ditimpa secara default. Untuk mempertahankan metadata ini selama modifikasi, gunakan ossutil 2.0.
Ubah kelas penyimpanan objek tertentu menjadi Archive Storage
ossutil cp oss://examplebucket1/srcfolder1/examplefile.txt oss://examplebucket1/srcfolder1/examplefile.txt --meta X-oss-Storage-Class:ArchiveUbah kelas penyimpanan semua objek dalam folder tertentu menjadi Standard
ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket1/srcfolder1/ --meta X-oss-Storage-Class:Standard -r
Saat Anda menggunakan perintah cp untuk mengubah kelas penyimpanan objek, Anda dikenai biaya permintaan PUT berdasarkan kelas penyimpanan sumber objek. Biaya tersebut ditagihkan ke bucket tujuan.
Jika Anda mengonversi objek ke kelas penyimpanan Infrequent Access, Archive Storage, Cold Archive, atau Deep Cold Archive dan objek disimpan kurang dari durasi penyimpanan minimum, biaya penghapusan dini akan dikenakan. Untuk informasi selengkapnya, lihat Biaya penyimpanan.
Untuk mengonversi objek dari Archive Storage, Cold Archive, atau Deep Cold Archive ke Standard atau Infrequent Access menggunakan perintah cp, Anda harus terlebih dahulu memulihkan objek menggunakan perintah restore (memulihkan objek). Setelah objek dipulihkan, Anda dapat menggunakan perintah cp untuk mengubah kelas penyimpanannya. Jika real-time access of Archive objects diaktifkan, Anda dapat mengubah kelas penyimpanan objek Archive Storage tanpa memulihkannya.
Saat Anda menggunakan perintah cp untuk mengubah kelas penyimpanan objek yang lebih besar dari 100 MB, ossutil secara default menghitung ukuran bagian yang sesuai berdasarkan ukuran objek. Jika ukuran bagian otomatis tidak memenuhi kebutuhan Anda, Anda dapat menggunakan opsi --part-size untuk menentukan ukuran bagian. Pastikan jumlah bagian tidak melebihi 10.000.
Salin dan atur tag
Saat Anda overwrite objek, Anda dapat menambahkan opsi --tagging untuk menambahkan atau mengubah tag objek. Pisahkan beberapa tag dengan tanda ampersand (&). Perintahnya adalah sebagai berikut:
ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/ --tagging "abc=1&bcd=2&……"Untuk informasi selengkapnya tentang penandaan objek, lihat object-tagging (Penandaan objek).
Salin dengan enkripsi sisi server
Anda dapat menentukan metode enkripsi sisi server untuk mengenkripsi objek saat menyalinnya ke bucket. Untuk informasi selengkapnya tentang enkripsi sisi server, lihat Enkripsi sisi server.
Salin objek dan tentukan AES256 sebagai metode enkripsi
ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/srcfolder2/ --meta=x-oss-server-side-encryption:AES256Salin objek dan tentukan KMS sebagai metode enkripsi
ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket2/desfolder/ --meta=x-oss-server-side-encryption:KMSPentingSaat Anda menggunakan KMS untuk enkripsi, OSS memanggil KMS untuk menghasilkan kunci utama untuk objek tersebut. Tindakan ini menimbulkan biaya panggilan API KMS. Untuk informasi selengkapnya, lihat Penagihan KMS.
Salin objek dan tentukan ID CMK untuk enkripsi KMS
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******
Pulihkan versi objek sebelumnya
Setelah Anda mengaktifkan versioning untuk bucket, objek yang ditimpa dan dihapus disimpan sebagai versi sebelumnya. Anda dapat menambahkan opsi --version-id ke perintah cp untuk memulihkan versi sebelumnya.
Pertama, gunakan perintah ls --all-versions untuk mengambil semua ID versi objek tersebut. Kemudian, gunakan opsi --version-id untuk menyalin versi tertentu.
Opsi --version-id hanya tersedia untuk bucket yang telah mengaktifkan versioning. Untuk informasi selengkapnya tentang perintah untuk mengaktifkan versioning untuk bucket, lihat bucket-versioning (Versioning).
ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket2/ --version-id CAEQARiBgID8rumR2hYiIGUyOTAyZGY2MzU5MjQ5ZjlhYzQzZjNlYTAyZDE3MDRkLintas akun copy
Gunakan opsi umum -e, -i, dan -k untuk menyalin objek srcobject.png dari direktori root bucket sumber examplebucket di wilayah China (Shanghai) yang dimiliki oleh Akun Alibaba Cloud lain ke bucket tujuan destbucket.
Anda harus menentukan endpoint untuk wilayah tempat bucket berada. Untuk informasi selengkapnya, lihat Wilayah dan Titik akhir.
ossutil cp oss://examplebucket/srcobject.png oss://destbucket -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID -k yourAccessKeySecretTips keamanan: Menyertakan AccessKey di baris perintah merupakan risiko keamanan. Untuk tugas otomatis atau jangka panjang, kami menyarankan Anda membuat Peran RAM untuk akun sumber dan memberikan izin kepada akun tujuan untuk mengasumsikan Peran RAM tersebut demi akses lintas akun yang lebih aman.