All Products
Search
Document Center

Object Storage Service:Menyalin objek menggunakan perintah cp

Last Updated:Oct 23, 2026

Gunakan perintah cp untuk menyalin file dari bucket sumber ke bucket tujuan dalam Wilayah yang sama, atau ke direktori lain dalam bucket yang sama.

Tindakan Pencegahan

  • Perintah cp tidak mendukung penyalinan file lintas akun atau lintas Wilayah. Untuk menyalin atau memigrasikan file lintas akun atau lintas Wilayah, gunakan Data Online Migration.

  • Perintah ini hanya menyalin file secara utuh dan tidak mendukung penyalinan sebagian file.

  • Mulai ossutil versi 1.6.16, Anda dapat menggunakan ossutil sebagai nama binary di command line tanpa perlu mengubah namanya. Untuk versi sebelum 1.6.16, Anda harus mengubah nama binary agar sesuai dengan sistem operasi Anda. Untuk informasi selengkapnya, lihat Referensi perintah Alat baris perintah 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.

Aksi API

Deskripsi

oss:GetObject

Menyalin objek antar bucket di Wilayah yang sama.

oss:PutObject

oss:GetObjectVersion

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

oss:GetObjectTagging

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

oss:PutObjectTagging

oss:GetObjectVersionTagging

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

kms:GenerateDataKey

Opsional. Izin ini diperlukan jika operasi penyalinan melibatkan Enkripsi sisi server dengan KMS.

kms:Decrypt

Sintaks perintah

ossutil cp cloud_url cloud_url [options]

Tabel berikut menjelaskan parameter dan opsi.

Parameter

Deskripsi

cloud_url

Jalur sumber dan tujuan OSS. 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

Melakukan operasi rekursif. Jika Anda menentukan opsi ini, ossutil akan melakukan operasi pada semua objek yang sesuai di bucket. Jika tidak, operasi hanya dilakukan pada objek yang ditentukan.

-f --force

Memaksa operasi tanpa prompt konfirmasi.

-u, --update

Hanya menyalin objek jika objek tujuan belum ada, atau jika waktu modifikasi terakhir objek sumber lebih baru daripada objek tujuan.

--disable-ignore-error

Tidak mengabaikan error selama operasi batch.

--only-current-dir

Hanya menyalin file di direktori saat ini. Subdirektori dan file di dalamnya akan diabaikan.

-bigfile-threshold

Ambang batas ukuran untuk penyalinan yang dapat dilanjutkan (resumable copy). Satuan: byte.

Nilai default: 100 MB

Nilai yang valid: 0 hingga 9223372036854775807

--part-size

Ukuran part. Satuan: byte. Secara default, ossutil menghitung ukuran part yang sesuai berdasarkan ukuran file.

Nilai yang valid: 1 hingga 9223372036854775807

--checkpoint-dir

Direktori yang menyimpan informasi checkpoint untuk penyalinan yang dapat dilanjutkan. Jika penyalinan yang dapat dilanjutkan gagal, ossutil secara otomatis membuat direktori bernama .ossutil_checkpoint untuk mencatat informasi checkpoint. Direktori ini akan dihapus setelah penyalinan yang dapat dilanjutkan berhasil. Jika Anda menentukan opsi ini, pastikan direktori yang ditentukan dapat dihapus.

--encoding-type

Jenis pengkodean nama file. Atur nilainya menjadi url. Jika Anda tidak menentukan opsi ini, nama file tidak akan dikodekan.

--include

Menyertakan semua file yang memenuhi kondisi yang ditentukan.

--exclude

Mengecualikan semua file yang memenuhi kondisi yang ditentukan.

--meta

Metadata file. Formatnya adalah header:value#header:value. Contoh: Cache-Control:no-cache#Content-Encoding:gzip. Untuk informasi selengkapnya tentang metadata, lihat set-meta (Mengelola metadata objek).

--acl

Daftar kontrol akses (ACL) file. Nilai yang 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 baca. Hal ini dapat menyebabkan kebocoran data dan biaya tak terduga. Sebaiknya jangan berikan izin ini kecuali benar-benar diperlukan.

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

--disable-crc64

Menonaktifkan Pemeriksaan redundansi siklik 64-bit (CRC-64) untuk data. Secara default, CRC-64 diaktifkan untuk transfer data di ossutil.

--payer

Metode pembayaran untuk permintaan. Jika Anda ingin pemohon membayar traffic dan permintaan saat mengakses resource di jalur yang ditentukan, atur opsi ini menjadi requester.

-j, --jobs

Jumlah tugas konkuren untuk operasi batch. Nilai default: 3. Nilai yang valid: 1 hingga 10.000.

--parallel

Jumlah tugas konkuren untuk operasi satu file. Nilai yang valid: 1 hingga 10.000. Jika Anda tidak mengatur opsi ini, ossutil akan menentukan nilainya berdasarkan jenis operasi dan ukuran file.

--version-id

Menyalin versi tertentu dari sebuah file. Opsi ini hanya tersedia untuk bucket yang telah mengaktifkan Pengendalian versi.

--start-time

Stempel waktu UNIX. Jika Anda menentukan opsi ini, objek yang terakhir diperbarui sebelum waktu ini akan diabaikan.

Catatan

Hanya ossutil 1.7.18 dan versi lebih baru yang mendukung parameter ini. Untuk informasi selengkapnya tentang upgrade, lihat update (Upgrade ossutil).

--end-time

Stempel waktu UNIX. Jika Anda menentukan opsi ini, objek yang terakhir diperbarui setelah waktu ini akan diabaikan.

Catatan
  • Jika Anda menentukan `start-time` dan `end-time` sekaligus, perintah penyalinan hanya dijalankan untuk file yang terakhir dimodifikasi di antara waktu mulai dan akhir yang ditentukan.

  • Hanya ossutil 1.7.18 dan versi lebih baru yang mendukung parameter ini. Untuk informasi selengkapnya tentang cara upgrade versi, lihat update (Upgrade ossutil).

Untuk informasi selengkapnya tentang opsi umum lainnya untuk perintah ini, lihat Opsi umum.

Jika konkurensi default tidak memenuhi kebutuhan performa Anda, sesuaikan opsi -j, --jobs dan --parallel untuk mengoptimalkan performa. Secara default, ossutil menghitung nilai `parallel` berdasarkan ukuran file. Saat mentransfer file besar secara batch, konkurensi aktual adalah nilai `jobs` × nilai `parallel`.

  • Jika sumber daya (seperti jaringan, memori, dan CPU) pada instans ECS atau server yang menjalankan perintah terbatas, sebaiknya kurangi konkurensi ke nilai di bawah 100. Jika sumber daya belum dimanfaatkan sepenuhnya, Anda dapat meningkatkan konkurensi sesuai kebutuhan.

  • Konkurensi yang tinggi dapat menurunkan performa atau bahkan menyebabkan error EOF karena overhead perpindahan thread dan persaingan sumber daya. Sesuaikan opsi -j, --jobs dan --parallel berdasarkan sumber daya aktual mesin Anda. Saat melakukan uji stres, sebaiknya mulailah dengan konkurensi rendah dan tingkatkan secara bertahap untuk menemukan nilai optimal.

Contoh penggunaan

Contoh berikut berlaku untuk sistem Linux. Sesuaikan parameter berdasarkan sistem operasi dan lingkungan aktual Anda. Contoh ini mengasumsikan lingkungan berikut:

  • Bucket sumber: examplebucket1

  • Direktori sumber 1 di bucket sumber: srcfolder1

  • Direktori sumber 2 di bucket sumber: srcfolder2

  • Bucket tujuan: examplebucket2

  • Direktori tujuan di bucket tujuan: desfolder

Menyalin satu file

Menyalin file dari satu direktori ke direktori lain dalam bucket yang sama dan mengganti nama file menjadi example.txt.

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

Menyalin multiple file secara batch

Saat menyalin file, jika jalur sumber tidak diakhiri dengan garis miring (/), semua file yang sesuai dengan awalan yang ditentukan akan disalin ke bucket tujuan. Jika jalur sumber diakhiri dengan garis miring (/), hanya file di direktori yang ditentukan yang akan disalin ke bucket tujuan.

Misalkan direktori `srcfolder1` di bucket sumber `examplebucket1` berisi file-file 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, file-file berikut ditambahkan ke 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, file-file berikut ada di bucket tujuan `examplebucket2`:

    exampleobject1.txt
    exampleobject2.png
    dir1/
    dir1/exampleobject3.jpg
    dir2/
    dir2/exampleobject4.jpg
  • Menyalin file inkremental

    Selama penyalinan batch, jika Anda menentukan opsi --update, ossutil hanya akan menyalin objek jika objek tujuan belum ada atau jika 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 melakukan penyalinan inkremental dengan melewatkan file yang sudah berhasil disalin saat mencoba ulang penyalinan batch yang gagal.

  • Hanya menyalin file di direktori saat ini dan mengabaikan subdirektori

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

Menyalin file dalam rentang waktu tertentu

Hanya menyalin file di `srcfolder1` yang terakhir dimodifikasi antara pukul 10:09:18 pada tanggal 31 Oktober 2023 (UTC+8) dan pukul 12:55:58 pada tanggal 31 Oktober 2023 (UTC+8).

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

Menyalin file yang memenuhi kondisi tertentu

Gunakan parameter --include dan --exclude untuk hanya menyalin file yang memenuhi kondisi tertentu.

  • Menyalin semua file yang bukan berformat JPG.

    ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket2/desfolder/ --exclude "*.jpg" -r
  • Menyalin semua file yang namanya mengandung abc tetapi bukan berformat JPG atau TXT

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

Menyalin file dan memodifikasi metadatanya

Gunakan opsi --meta untuk memodifikasi metadata objek. Formatnya adalah header:value#header:value....

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

Menyalin file dan menentukan mode bayar-per-permintaan

Menyalin file dari bucket sumber ke bucket tujuan dan menentukan mode bayar-per-permintaan.

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

Menyalin file dan mengubah kelas penyimpanannya

Saat Anda menimpa sebuah objek, Anda dapat menambahkan opsi --meta untuk memodifikasi kelas penyimpanannya. Kelas penyimpanan yang didukung adalah:

  • Standard: Jenis Penyimpanan Standar

  • IA: Akses Jarang

  • Archive: Archive Storage

  • ColdArchive: Penyimpanan Arsip Dingin

  • DeepColdArchive: Deep Cold Archive

Untuk informasi selengkapnya tentang kelas penyimpanan, lihat Kelas penyimpanan.

Penting

Secara default, saat Anda menggunakan opsi --meta untuk mengubah kelas penyimpanan, metadata objek kustom yang ada akan ditimpa. Untuk mempertahankan metadata objek kustom yang ada saat mengubah kelas penyimpanan, Anda harus terlebih dahulu menggunakan opsi x-oss-metadata-directive:COPY untuk mempertahankan metadata, lalu mengubah kelas penyimpanan.

Menimpa metadata objek kustom yang ada

  • Mengubah kelas penyimpanan file tertentu menjadi Archive Storage

    ossutil cp oss://examplebucket1/srcfolder1/examplefile.txt oss://examplebucket1/srcfolder1/examplefile.txt --meta X-oss-Storage-Class:Archive
  • Mengubah kelas penyimpanan semua file dalam folder tertentu menjadi Standard

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

Mempertahankan metadata objek kustom yang ada

  • Mempertahankan metadata dari satu file yang ada.

    ossutil cp oss://examplebucket1/srcfolder1/examplefile.txt oss://examplebucket1/srcfolder1/examplefile.txt --meta x-oss-metadata-directive:COPY
  • Mempertahankan metadata dari beberapa file yang ada.

    ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket1/srcfolder1/ --meta x-oss-metadata-directive:COPY -r -f 
Penting
  • Saat menggunakan perintah cp untuk mengubah kelas penyimpanan objek, Anda akan dikenakan biaya untuk permintaan PUT berdasarkan kelas penyimpanan sumber objek tersebut. Biaya ini ditagihkan ke bucket tujuan.

  • Jika Anda mengonversi objek ke kelas penyimpanan Akses Jarang, Archive Storage, Penyimpanan Arsip Dingin, atau Deep Cold Archive dan objek tersebut disimpan dalam periode yang lebih singkat dari Durasi penyimpanan minimum, biaya penghapusan dini akan dikenakan. Untuk informasi selengkapnya, lihat Biaya penyimpanan.

  • Untuk mengonversi objek dari Archive Storage, Penyimpanan Arsip Dingin, atau Deep Cold Archive ke Standard atau Akses Jarang menggunakan perintah cp, Anda harus memulihkan objek tersebut terlebih dahulu. Untuk memulihkan objek, gunakan perintah restore (memulihkan objek). Setelah objek dipulihkan, Anda dapat menggunakan perintah cp untuk mengubah kelas penyimpanannya. Namun, jika Akses waktu nyata untuk objek Arsip diaktifkan, Anda dapat mengubah kelas penyimpanan objek Archive Storage tanpa memulihkannya terlebih dahulu.

  • Saat menggunakan perintah cp untuk mengubah kelas penyimpanan file yang berukuran lebih dari 100 MB, ossutil secara default menghitung ukuran part yang sesuai berdasarkan ukuran file. Jika ukuran part otomatis tidak sesuai dengan kebutuhan Anda, gunakan opsi --part-size untuk menentukan ukuran part. Pastikan jumlah part tidak melebihi 10.000.

Menyalin file dan mengatur tag

Saat menimpa file, Anda dapat menambahkan opsi --tagging untuk menambah atau memodifikasi 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).

Menyalin file dan mengonfigurasi Enkripsi sisi server

Anda dapat menentukan metode Enkripsi sisi server untuk mengenkripsi file saat menyalinnya ke bucket. Untuk informasi selengkapnya tentang Enkripsi sisi server, lihat Enkripsi sisi server.

  • Menyalin file dan menentukan AES256 sebagai metode enkripsi

    ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/srcfolder2/ --meta=x-oss-server-side-encryption:AES256
  • Menyalin file dan menentukan KMS sebagai metode enkripsi

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

    Saat menggunakan KMS untuk enkripsi, OSS memanggil KMS untuk menghasilkan master key bagi file tersebut. Tindakan ini menimbulkan biaya untuk panggilan API KMS. Untuk informasi selengkapnya, lihat Penagihan KMS.

  • Menyalin file dan menentukan 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******
Catatan

Opsi --meta berlaku untuk ossutil 1.x. Untuk ossutil 2.x, gunakan perintah berikut sebagai gantinya:

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

Memulihkan versi historis file

Setelah mengaktifkan Pengendalian versi untuk bucket, objek yang ditimpa dan dihapus akan disimpan sebagai versi historis. Anda dapat menambahkan opsi --version-id ke perintah cp untuk memulihkan versi historis, yang akan menimpa versi saat ini.

Pertama, gunakan perintah ls --all-versions untuk mengambil semua ID versi objek. Kemudian, gunakan opsi --version-id untuk menyalin versi tertentu.

Catatan

Opsi --version-id hanya dapat digunakan untuk bucket yang telah mengaktifkan Pengendalian versi. Untuk informasi selengkapnya tentang perintah guna mengaktifkan Pengendalian versi untuk bucket, lihat bucket-versioning (Pengendalian versi).

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

Penyalinan antar-akun

Gunakan opsi umum -e, -i, dan -k untuk menyalin file `srcobject.png` dari Direktori root bucket sumber `examplebucket` di Wilayah China (Shanghai) milik Akun Alibaba Cloud lain ke bucket tujuan `destbucket`.

Catatan

Anda harus menentukan Endpoint untuk Wilayah tempat bucket berada. Untuk informasi selengkapnya, lihat Wilayah dan Endpoint.

ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret
Tips keamanan: Menggunakan AccessKey di command line merupakan risiko keamanan. Untuk tugas otomatis atau jangka panjang, sebaiknya buat Peran RAM untuk akun sumber dan berikan izin kepada akun tujuan untuk mengasumsikan Peran RAM tersebut demi akses cross-account yang lebih aman.