All Products
Search
Document Center

Object Storage Service:cp (copy objects)

Last Updated:Mar 31, 2026

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

    oss:GetObject

    Menyalin objek dalam bucket yang sama atau antar bucket berbeda dalam wilayah yang sama.

    oss:PutObject

    oss:GetObjectVersion

    Opsional. Izin ini diperlukan untuk menyalin versi tertentu dari suatu objek.

    oss:GetObjectTagging

    Opsional. Izin ini diperlukan jika operasi salin melibatkan penandaan objek.

    oss:PutObjectTagging

    oss:GetObjectVersionTagging

    Opsional. Izin ini diperlukan jika operasi salin melibatkan tag dari versi objek tertentu.

    kms:GenerateDataKey

    Opsional. Izin ini diperlukan jika operasi salin melibatkan enkripsi sisi server dengan KMS.

    kms:Decrypt

    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 oss://bucketname/objectname. Misalnya, untuk menyalin objek sumber srcobject.jpg ke objek tujuan destobject.jpg dalam bucket yang sama bernama examplebucket, atur jalur sumber menjadi oss://examplebucket/srcobject.jpg dan jalur tujuan menjadi oss://examplebucket/destobject.jpg.

    -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 .ossutil_checkpoint untuk mencatat informasi checkpoint. Direktori ini dihapus setelah salin yang dapat dilanjutkan berhasil. Jika Anda menentukan opsi ini, pastikan direktori yang ditentukan dapat dihapus.

    --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 header:value#header:value. Contoh: Cache-Control:no-cache#Content-Encoding:gzip. Untuk informasi selengkapnya tentang metadata, lihat set-meta (Kelola metadata objek).

    --acl

    Daftar kontrol akses (ACL) objek. Nilai valid:

    • default (default): Objek mewarisi ACL bucket.

    • private: Hanya pemilik bucket yang memiliki izin baca dan tulis pada objek. Pengguna lain tidak dapat mengakses objek tersebut.

    • public-read: Hanya pemilik bucket yang memiliki izin tulis pada objek. Semua pengguna lain, termasuk pengguna anonim, memiliki izin read-only. Ini dapat menyebabkan kebocoran data dan biaya tak terduga. Jika pengguna jahat menulis informasi ilegal, Anda mungkin bertanggung jawab secara hukum. Kami tidak merekomendasikan memberikan izin ini kecuali benar-benar diperlukan.

    • public-read-write: Semua pengguna, termasuk pengguna anonim, memiliki izin baca dan tulis pada objek. Ini dapat menyebabkan kebocoran data dan biaya tak terduga. Gunakan izin ini dengan hati-hati.

    --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
    • Jika Anda menentukan start-time dan end-time, perintah hanya akan menyalin objek yang waktu modifikasi terakhirnya berada di antara waktu mulai dan akhir yang ditentukan.

    • 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).

    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.jpg
    • Jalur sumber tidak diakhiri dengan garis miring (/)

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

      Setelah 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.jpg
    • Jalur sumber diakhiri dengan garis miring (/)

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

      Setelah penyalinan selesai, objek berikut ada di bucket tujuan examplebucket2:

      exampleobject1.txt
      exampleobject2.png
      dir1/
      dir1/exampleobject3.jpg
      dir2/
      dir2/exampleobject4.jpg
    • Lakukan 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 --update

      Anda 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 1698728158

    Salin 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" -r
    • Salin 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-cache

    Salin 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=requester

    Salin 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.

    Penting

    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:Archive
    • Ubah kelas penyimpanan semua objek dalam folder tertentu menjadi Standard

      ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket1/srcfolder1/ --meta X-oss-Storage-Class:Standard -r
    Penting
    • 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:AES256
    • Salin objek dan tentukan KMS sebagai metode enkripsi

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

      Saat 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.

    Catatan

    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  CAEQARiBgID8rumR2hYiIGUyOTAyZGY2MzU5MjQ5ZjlhYzQzZjNlYTAyZDE3MDRk

    Lintas 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.

    Catatan

    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 yourAccessKeySecret
    Tips 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.