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 lintas wilayah. Untuk menyalin atau memigrasikan file lintas akun atau lintas wilayah, gunakan Data Online Migration.
-
Perintah ini hanya menyalin file lengkap dan tidak mendukung penyalinan sebagian file.
-
Mulai dari versi ossutil 1.6.16, Anda dapat menggunakan ossutil sebagai nama biner di command line tanpa mengganti namanya. Untuk versi sebelum 1.6.16, Anda harus mengganti nama biner agar sesuai dengan sistem operasi Anda. Untuk informasi lebih lanjut, lihat Referensi perintah tool 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.
|
API Action |
Deskripsi |
|
|
Menyalin objek antar bucket dalam wilayah yang sama. |
|
|
|
|
|
Opsional. Izin ini diperlukan untuk menyalin versi tertentu dari suatu objek. |
|
|
Opsional. Izin-izin ini diperlukan jika operasi salin melibatkan object tagging. |
|
|
|
|
|
Opsional. Izin ini diperlukan jika operasi salin melibatkan tag dari versi objek tertentu. |
|
|
Opsional. Izin-izin ini diperlukan jika operasi salin melibatkan server-side encryption dengan KMS. |
|
|
Sintaksis 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 |
|
-r, --recursive |
Menjalankan operasi secara rekursif. Jika Anda menentukan opsi ini, ossutil akan menjalankan operasi pada semua objek yang cocok dalam 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 tidak 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 dalam direktori saat ini. Subdirektori dan file di dalamnya diabaikan. |
|
-bigfile-threshold |
Ambang batas ukuran untuk salin yang dapat dilanjutkan (resumable copy). Satuan: byte. Nilai default: 100 MB Nilai valid: 0 hingga 9223372036854775807 |
|
--part-size |
Ukuran bagian (part size). Satuan: 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 salin yang dapat dilanjutkan. Jika salin yang dapat dilanjutkan gagal, ossutil secara otomatis membuat direktori bernama |
|
--encoding-type |
Jenis encoding nama file. Atur nilainya ke url. Jika Anda tidak menentukan opsi ini, nama file tidak di-encode. |
|
--include |
Menyertakan semua file yang memenuhi kondisi yang ditentukan. |
|
--exclude |
Mengecualikan semua file yang memenuhi kondisi yang ditentukan. |
|
--meta |
Metadata file. Formatnya adalah |
|
--acl |
Daftar kontrol akses (ACL) file. Nilai valid:
|
|
--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 trafik dan permintaan saat mengakses resource di jalur yang ditentukan, 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 file tunggal. Nilai valid: 1 hingga 10000. Jika Anda tidak mengatur opsi ini, ossutil menentukan nilainya berdasarkan jenis operasi dan ukuran file. |
|
--version-id |
Menyalin versi tertentu dari file. Opsi ini hanya tersedia untuk bucket yang telah diaktifkan versioning. |
|
--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 yang lebih baru yang mendukung parameter ini. Untuk informasi lebih lanjut tentang peningkatan, lihat update (Upgrade ossutil). |
|
--end-time |
Stempel waktu UNIX. Jika Anda menentukan opsi ini, objek yang terakhir diperbarui setelah waktu ini akan diabaikan. Catatan
|
Untuk informasi lebih lanjut 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 file. Saat Anda mentransfer file besar secara batch, konkurensi aktual adalah nilai `jobs` × 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 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 aktual mesin Anda. Saat melakukan uji stres, kami menyarankan Anda memulai dengan konkurensi rendah dan secara bertahap meningkatkannya untuk menemukan nilai optimal.
Contoh penggunaan
Contoh berikut ditujukan untuk sistem Linux. Modifikasi parameter berdasarkan sistem operasi dan lingkungan aktual Anda. Contoh ini mengasumsikan lingkungan 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
Menyalin satu file
Salin file dari satu direktori ke direktori lain dalam 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 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 dalam direktori yang ditentukan yang disalin ke bucket tujuan.
Asumsikan bahwa direktori `srcfolder1` dalam 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 -rSetelah 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 -rSetelah penyalinan selesai, file-file berikut ada di bucket tujuan `examplebucket2`:
exampleobject1.txt exampleobject2.png dir1/ dir1/exampleobject3.jpg dir2/ dir2/exampleobject4.jpg -
Menyalin file secara 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 --updateAnda dapat menggunakan opsi ini untuk melakukan penyalinan inkremental dengan melewati file yang sudah berhasil disalin saat Anda mencoba ulang penyalinan batch yang gagal.
-
Hanya menyalin file dalam 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 dalam `srcfolder1` yang terakhir dimodifikasi antara pukul 10:09:18 hingga 12:55:58 pada 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 dalam format JPG.
ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket2/desfolder/ --exclude "*.jpg" -r -
Menyalin semua file 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
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 overwrite objek, Anda dapat menambahkan opsi --meta untuk mengubah kelas penyimpanannya. Kelas penyimpanan yang didukung adalah:
-
Standard: Standard
-
IA: Infrequent Access
-
Archive: Archive Storage
-
ColdArchive: Cold Archive
-
DeepColdArchive: Deep Cold Archive
Untuk informasi selengkapnya mengenai kelas penyimpanan, lihat Kelas penyimpanan.
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 file yang sudah ada.
ossutil cp oss://examplebucket1/srcfolder1/examplefile.txt oss://examplebucket1/srcfolder1/examplefile.txt --meta x-oss-metadata-directive:COPY -
Mempertahankan metadata beberapa file yang sudah ada.
ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket1/srcfolder1/ --meta x-oss-metadata-directive:COPY -r -f
-
Saat Anda menggunakan perintah cp untuk mengubah kelas penyimpanan objek, Anda dikenai biaya untuk permintaan PUT berdasarkan kelas penyimpanan sumber objek. Biaya tersebut ditagihkan ke bucket tujuan.
-
Jika Anda mengonversi objek ke kelas penyimpanan Infrequent Access, Archive, Cold Archive, atau Deep Cold Archive dan objek tersebut disimpan dalam periode lebih pendek dari durasi penyimpanan minimum, biaya penghapusan dini akan dikenakan. Untuk informasi lebih lanjut, 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 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 Archive Storage tanpa memulihkannya.
-
Saat Anda 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 Anda menimpa file, 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 lebih lanjut tentang object tagging, lihat object-tagging (Object tagging).
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 Server-side encryption.
-
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:KMSPentingSaat Anda menggunakan KMS untuk enkripsi, OSS memanggil KMS untuk menghasilkan kunci utama untuk file tersebut. Tindakan ini mengakibatkan biaya untuk panggilan API KMS. Untuk informasi lebih lanjut, 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******
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 Anda mengaktifkan versioning 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 akan menimpa versi saat ini.
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 dapat digunakan untuk bucket yang telah diaktifkan versioning. Untuk informasi lebih lanjut tentang perintah untuk mengaktifkan versioning untuk bucket, lihat bucket-versioning (Versioning).
ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket2/ --version-id CAEQARiBgID8rumR2hYiIGUyOTAyZGY2MzU5MjQ5ZjlhYzQzZjNlYTAyZDE3MDRk
Salin lintas 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`.
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 command line 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.