全部产品
Search
文档中心

Object Storage Service:Menyalin objek menggunakan perintah cp

更新时间:Nov 07, 2025

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

Peringatan

  • Perintah cp tidak mendukung penyalinan file lintas akun atau wilayah. Untuk menyalin atau memigrasi file lintas akun atau wilayah, gunakan Migrasi Data Online.

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

  • Mulai dengan versi ossutil 1.6.16, Anda dapat menggunakan ossutil sebagai nama biner di baris perintah tanpa mengganti namanya. Untuk versi lebih lama dari 1.6.16, Anda harus mengganti nama biner agar sesuai dengan sistem operasi Anda. Untuk informasi lebih lanjut, 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 Kebijakan RAM atau Kebijakan Bucket.

    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 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 OSS sumber dan tujuan. Formatnya adalah oss://bucketname/objectname. Sebagai contoh, untuk menyalin objek sumber `srcobject.jpg` ke objek tujuan `destobject.jpg` di 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 melakukan operasi pada semua objek yang cocok di bucket. Jika tidak, operasi hanya dilakukan pada objek yang ditentukan.

    -f --force

    Memaksa operasi tanpa prompt konfirmasi.

    -u,--update

    Menyalin objek hanya jika objek tujuan tidak ada, atau jika waktu modifikasi terakhir objek sumber lebih baru daripada objek tujuan.

    --disable-ignore-error

    Tidak mengabaikan kesalahan selama operasi batch.

    --only-current-dir

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

    -bigfile-threshold

    Ambang batas ukuran untuk penyalinan yang dapat dilanjutkan. Unit: byte.

    Nilai default: 100 MB

    Nilai valid: 0 hingga 9223372036854775807

    --part-size

    Ukuran bagian. Unit: byte. Secara default, ossutil menghitung ukuran bagian yang sesuai berdasarkan ukuran file.

    Nilai 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 dihapus setelah penyalinan yang dapat dilanjutkan berhasil. Jika Anda menentukan opsi ini, pastikan bahwa direktori yang ditentukan dapat dihapus.

    --encoding-type

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

    --include

    Termasuk semua file yang memenuhi kondisi yang ditentukan.

    --exclude

    Mengabaikan 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 lebih lanjut tentang metadata, lihat set-meta (Kelola metadata objek).

    --acl

    Daftar kontrol akses (ACL) file. Nilai valid:

    • default (default): Objek mewarisi ACL dari 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. Ini dapat menyebabkan kebocoran data dan biaya tak terduga. Kami tidak merekomendasikan Anda memberikan izin ini kecuali 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 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 peminta membayar lalu lintas dan permintaan saat mengakses sumber daya di jalur yang ditentukan, atur opsi ini menjadi requester.

    -j,--jobs

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

    --parallel

    Jumlah tugas konkuren untuk operasi file tunggal. Nilai valid: 1 hingga 10000. Jika Anda tidak menyetel opsi ini, ossutil menentukan nilai berdasarkan jenis operasi dan ukuran file.

    --version-id

    Menyalin versi tertentu dari file. Opsi ini hanya tersedia untuk bucket yang memiliki pengendalian versi diaktifkan.

    --start-time

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

    Catatan

    Hanya ossutil 1.7.18 dan yang lebih baru yang mendukung parameter ini. Untuk informasi lebih lanjut tentang peningkatan, lihat update (Peningkatan ossutil).

    --end-time

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

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

    • Hanya ossutil 1.7.18 dan yang lebih baru yang mendukung parameter ini. Untuk informasi lebih lanjut tentang cara meningkatkan versi, lihat update (Peningkatan ossutil).

    Untuk informasi lebih lanjut tentang opsi umum lainnya untuk perintah ini, lihat Opsi Umum.

    Jika konkurensi default tidak memenuhi persyaratan kinerja Anda, Anda dapat menyesuaikan opsi -j, --jobs dan --parallel untuk menyesuaikan kinerja. Secara default, ossutil menghitung nilai `parallel` berdasarkan ukuran file. Saat mentransfer file besar dalam batch, konkurensi aktual adalah nilai `jobs` × nilai `parallel`.

    • Jika sumber daya, seperti jaringan, memori, dan CPU, dari Instance ECS atau server yang menjalankan perintah terbatas, kami sarankan Anda menurunkan konkurensi ke nilai kurang dari 100. Jika sumber daya tidak sepenuhnya digunakan, Anda dapat meningkatkan konkurensi sesuai kebutuhan.

    • Konkurensi tinggi dapat menurunkan kinerja atau bahkan menyebabkan kesalahan EOF karena overhead pergantian thread dan persaingan sumber daya. Sesuaikan opsi -j, --jobs dan --parallel berdasarkan sumber daya aktual mesin Anda. Saat melakukan uji stres, kami sarankan Anda mulai dengan konkurensi rendah dan secara bertahap meningkatkannya untuk menemukan nilai optimal.

    Contoh penggunaan

    Contoh berikut ini untuk sistem Linux. Modifikasi parameter berdasarkan sistem operasi dan lingkungan aktual Anda. Contoh-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 file tunggal

    Salin file dari satu direktori ke direktori lain di bucket yang sama dan ubah nama file menjadi example.txt.

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

    Menyalin beberapa file dalam batch

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

    Asumsikan bahwa direktori `srcfolder1` di bucket sumber `examplebucket1` berisi 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 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 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 menyalin objek jika objek tujuan tidak 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 melewati file yang sudah berhasil disalin saat Anda mencoba kembali penyalinan batch yang gagal.

    • Menyalin Hanya 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

    Salin hanya 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 menyalin hanya file yang memenuhi kondisi tertentu.

    • Salin semua file yang tidak dalam format JPG.

      ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket2/desfolder/ --exclude "*.jpg" -r
    • Salin semua file yang namanya mengandung abc tetapi tidak dalam format JPG atau TXT.

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

    Menyalin file dan mengubah metadata-nya

    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

    Menyalin file dan menentukan mode bayar-per-permintaan

    Salin file dari bucket sumber ke bucket tujuan dan tentukan 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 mengubah kelas penyimpanannya. Kelas penyimpanan yang didukung adalah:

    • Standard: Jenis Penyimpanan Standar

    • IA: Akses Jarang

    • Archive: Penyimpanan Arsip

    • ColdArchive: Penyimpanan Arsip Dingin

    • DeepColdArchive: Deep Cold Archive

    Untuk informasi lebih lanjut 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 Anda mengubah kelas penyimpanan, Anda harus terlebih dahulu menggunakan opsi x-oss-metadata-directive:COPY untuk mempertahankan metadata, lalu ubah kelas penyimpanan.

    Menimpa metadata objek kustom yang ada

    • Mengubah kelas penyimpanan file tertentu menjadi Penyimpanan Arsip

      ossutil cp oss://examplebucket1/srcfolder1/examplefile.txt oss://examplebucket1/srcfolder1/examplefile.txt --meta X-oss-Storage-Class:Archive
    • Mengubah kelas penyimpanan semua file di 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 file tunggal yang ada.

      ossutil cp oss://examplebucket1/srcfolder1/examplefile.txt oss://examplebucket1/srcfolder1/examplefile.txt --meta x-oss-metadata-directive:COPY
    • Mempertahankan metadata 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 tersebut dibebankan ke bucket tujuan.

    • Jika Anda mengonversi objek ke kelas penyimpanan Infrequent Access, Archive, Cold Archive, atau Deep Cold Archive dan objek tersebut disimpan selama periode lebih pendek dari durasi penyimpanan minimum, biaya penghapusan dini akan dikenakan. Untuk informasi lebih lanjut, lihat Biaya Penyimpanan.

    • Untuk mengonversi objek dari Penyimpanan Arsip, Penyimpanan Arsip Dingin, atau Deep Cold Archive ke Standar atau Infrequent Access menggunakan perintah cp, Anda harus terlebih dahulu memulihkan objek tersebut. 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 Penyimpanan Arsip tanpa memulihkannya.

    • Saat menggunakan perintah cp untuk mengubah kelas penyimpanan file yang lebih besar dari 100 MB, ossutil secara default menghitung ukuran bagian yang sesuai berdasarkan ukuran file. 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.

    Menyalin file dan menetapkan tag

    Saat menimpa file, Anda dapat menambahkan opsi --tagging untuk menambah atau mengubah tag objek. Pisahkan beberapa tag dengan ampersand (&). Perintahnya adalah sebagai berikut:

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

    Untuk informasi lebih lanjut 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 lebih lanjut tentang enkripsi sisi server, lihat Enkripsi Sisi Server.

    • Salin file dan tentukan AES256 sebagai metode enkripsi.

      ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/srcfolder2/ --meta=x-oss-server-side-encryption:AES256
    • Salin file dan tentukan 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 kunci utama untuk file tersebut. Tindakan ini mengakibatkan biaya untuk pemanggilan API KMS. Untuk informasi lebih lanjut, lihat Penagihan KMS.

    • Salin file 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******

    Memulihkan versi historis dari file

    Setelah Anda mengaktifkan pengendalian versi untuk bucket, objek yang ditimpa dan dihapus disimpan sebagai versi historis. Anda dapat menambahkan opsi --version-id ke perintah cp untuk memulihkan versi historis, yang 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 memiliki pengendalian versi diaktifkan. Untuk informasi lebih lanjut tentang perintah untuk mengaktifkan pengendalian versi untuk bucket, lihat bucket-versioning (Pengendalian Versi).

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

    Penyalinan lintas akun

    Gunakan opsi umum -e, -i, dan -k untuk menyalin file `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 lebih lanjut, 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 baris perintah merupakan risiko keamanan. Untuk tugas otomatis atau jangka panjang, kami sarankan Anda membuat Peran RAM untuk akun sumber dan memberikan izin kepada akun tujuan untuk mengasumsikan Peran RAM demi akses lintas akun yang lebih aman.