Gunakan perintah sync untuk menyinkronkan file atau folder lokal ke OSS. Perintah sync membandingkan waktu modifikasi terakhir file atau menggunakan informasi snapshot untuk mengidentifikasi dan mengunggah hanya file yang berubah secara inkremental, sehingga proses ini menjaga konsistensi konten antara sumber dan tujuan secara efisien.
Cara kerjanya
Jumlah file
Saat menjalankan perintah sync tanpa opsi --delete, tidak ada batasan jumlah file yang dapat disinkronkan sekaligus. Namun, jika Anda menyertakan opsi --delete, Anda dapat menyinkronkan hingga 1 juta file sekaligus. Jika jumlah file melebihi 1 juta, sistem akan mengembalikan kesalahan: melebihi jumlah maksimum sinkronisasi 1000000..
Perbedaan antara perintah sync dan cp
Perintah sync secara rekursif menelusuri semua file dan subdirektori dalam folder tertentu. Sementara itu, perintah cp hanya melakukan operasi rekursif jika Anda menambahkan opsi -r.
Dengan perintah sync, Anda dapat menambahkan opsi --delete untuk menghapus file di tujuan yang tidak ada di sumber, memastikan bahwa direktori tujuan hanya berisi file dari sinkronisasi saat ini. Perintah cp tidak mendukung opsi --delete.
Perintah sync tidak mendukung opsi --version-id. Anda tidak dapat menggunakan perintah ini untuk menyinkronkan versi sebelumnya dari file dalam bucket yang memiliki pengendalian versi diaktifkan. Sebaliknya, perintah cp mendukung opsi --version-id.
Selain perbedaan ini, perintah sync dan cp digunakan dengan cara yang serupa. Untuk informasi lebih lanjut tentang penggunaan dan contoh perintah cp, lihat cp (unggah file).
Catatan penggunaan
Mulai dari versi ossutil 1.6.16, Anda dapat menggunakan binari ossutil langsung tanpa mengganti namanya sesuai sistem operasi Anda. Untuk versi sebelum 1.6.16, Anda harus mengganti nama file binari tersebut. Untuk informasi lebih lanjut, lihat Referensi 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.
API Action | Deskripsi |
oss:ListObjects | Menampilkan daftar objek dalam bucket tujuan untuk dibandingkan dengan file lokal. |
oss:PutObject | Mengunggah file ke OSS. |
oss:DeleteObject | [Opsional] Diperlukan ketika Anda menggunakan opsi --delete untuk menghapus file ekstra dari bucket tujuan. |
oss:PutObjectTagging | [Opsional] Diperlukan ketika Anda menggunakan opsi --tagging untuk menambahkan tag ke objek. |
Sintaks perintah
ossutil sync file_url cloud_url [options]Tabel berikut menjelaskan parameter dan opsi.
Parameter | Deskripsi |
file_url | Jalur folder lokal yang akan disinkronkan. Contohnya, |
cloud_url | Jalur folder OSS tujuan. Formatnya adalah |
-f --force | Memaksa operasi tanpa konfirmasi prompt. |
-u, --update | Menyinkronkan file hanya jika file tujuan tidak ada, atau jika waktu modifikasi terakhir file sumber lebih baru daripada file tujuan. |
--delete | Menghapus file lain di jalur tujuan dan hanya menyimpan file dari sinkronisasi saat ini. Peringatan Sebelum Anda menggunakan opsi --delete, aktifkan pengendalian versi untuk mencegah penghapusan data secara tidak sengaja. |
--enable-symlink-dir | Menyinkronkan subdirektori yang dilink. |
--disable-all-symlink | Mengabaikan semua file yang dilink dan subdirektori yang dilink selama sinkronisasi folder. |
--disable-ignore-error | Tidak mengabaikan kesalahan selama operasi batch. |
--only-current-dir | Hanya menyinkronkan file di direktori saat ini. Subdirektori dan file di dalamnya diabaikan. |
--output-dir | Menentukan direktori untuk menyimpan file keluaran. File keluaran adalah file laporan yang dihasilkan ketika terjadi kesalahan selama sinkronisasi batch. Secara default, laporan ini disimpan di direktori ossutil_output di direktori saat ini. |
-bigfile-threshold | Ambang batas ukuran file untuk unggah 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 | Menentukan direktori untuk menyimpan informasi checkpoint untuk unggah yang dapat dilanjutkan. Ketika unggah yang dapat dilanjutkan gagal, ossutil secara otomatis membuat direktori bernama |
--encoding-type | Format encoding nama file. Atur nilainya menjadi url. Jika Anda tidak menentukan opsi ini, nama file tidak dienkripsi. |
--snapshot-path | Menentukan direktori untuk menyimpan informasi snapshot untuk sinkronisasi. Pada tugas sinkronisasi berikutnya, ossutil membaca informasi snapshot dari direktori ini untuk melakukan sinkronisasi inkremental. |
--include | Memasukkan semua file yang memenuhi kondisi tertentu. Untuk informasi lebih lanjut, lihat opsi include dan exclude. |
--exclude | Mengeluarkan semua file yang memenuhi kondisi tertentu. Untuk informasi lebih lanjut, lihat include dan --exclude. |
--meta | Menetapkan metadata file. Formatnya adalah |
--acl | Daftar kontrol akses (ACL) file. Nilai valid:
|
--maxupspeed | Kecepatan unggah maksimum. Unit: KB/s. Nilai default adalah 0, yang menunjukkan bahwa kecepatan unggah tidak dibatasi. |
--disable-crc64 | Menonaktifkan validasi data CRC-64. |
--payer | Metode pembayaran untuk permintaan. Jika Anda ingin peminta membayar biaya seperti lalu lintas dan permintaan yang dihasilkan oleh mengakses sumber daya di jalur tertentu, atur opsi ini menjadi requester. |
-j,--job | Jumlah tugas konkuren untuk operasi multi-file. Nilai default: 3. Nilai valid: 1 hingga 10000. |
--parallel | Jumlah tugas konkuren untuk operasi single-file. Nilai valid: 1 hingga 10000. Jika Anda tidak menentukan opsi ini, ossutil menentukan nilai berdasarkan jenis operasi dan ukuran file. |
--retry-times | Jumlah percobaan ulang ketika terjadi kesalahan. Nilai default: 10. Nilai valid: 1 hingga 500. |
--tagging | Informasi tag file. Formatnya adalah |
Untuk informasi lebih lanjut tentang opsi umum lainnya untuk perintah ini, lihat Opsi Umum.
Contoh
Contoh berikut menggunakan sistem Linux. Sesuaikan parameter agar sesuai dengan sistem operasi dan lingkungan Anda. Contoh-contoh ini mengasumsikan lingkungan berikut:
Dua file, d.txt dan e.png, berada di direktori lokal localfolder. Direktori destfolder di bucket bernama examplebucket berisi dua file, a.txt dan b.txt, serta subdirektori bernama C. Konten awal adalah sebagai berikut:
Direktori root lokal examplebucket
└── localfolder └── destfolder/
├── d.txt ├── a.txt
└── e.png ├── b.txt
└── C/Sinkronkan folder lokal ke OSS
Sinkronkan semua file dari direktori lokal `localfolder/` ke direktori tujuan `destfolder/`. Operasi ini hanya mengunggah file baru. File yang sudah ada, seperti `a.txt` dan `b.txt`, serta subdirektori `C/` di bucket tujuan dipertahankan.
ossutil sync localfolder/ oss://examplebucket/destfolder/Setelah sinkronisasi berhasil, keluaran mencakup jumlah file yang disinkronkan, total ukuran file, dan waktu yang diperlukan untuk operasi:
Berhasil: Total num: 2, size: 750.081. OK num: 2(upload 2 files).
kecepatan rata-rata 1641000(byte/s)Setelah sinkronisasi, struktur direktori `destfolder/` adalah sebagai berikut:
destfolder/
├── a.txt
├── b.txt
├── d.txt
├── e.png
└── C/Hapus file ekstra di direktori tujuan selama sinkronisasi
Ketika menyinkronkan direktori lokal `localfolder/`, Anda dapat menggunakan opsi --delete untuk menghapus file dan direktori, seperti `a.txt`, `b.txt`, dan `C/`, dari direktori `destfolder/` yang tidak ada di sumber.
ossutil sync localfolder/ oss://examplebucket/destfolder/ --deleteSetelah sinkronisasi, struktur direktori `destfolder/` identik dengan `localfolder/`:
destfolder/
├── d.txt
└── e.pngFilter dan sinkronkan file tertentu
Anda dapat menggunakan opsi --include dan --exclude untuk memfilter file yang akan disinkronkan.
Sebagai contoh, perintah berikut hanya menyinkronkan file .txt.
ossutil sync localfolder/ oss://examplebucket/destfolder/ --include "*.txt"Setelah menjalankan perintah, hanya d.txt yang diunggah, dan e.png diabaikan. File yang sudah ada di bucket tujuan tidak terpengaruh.
destfolder/ ├── a.txt ├── b.txt ├── d.txt └── C/Perintah berikut hanya menyinkronkan file non-.txt.
ossutil sync localfolder/ oss://examplebucket/destfolder/ --exclude "*.txt"Setelah menjalankan perintah, hanya e.png yang diunggah, dan d.txt diabaikan. File yang sudah ada di bucket tujuan tidak terpengaruh.
destfolder/ ├── a.txt ├── b.txt ├── e.png └── C/
Paksa menimpa file dengan nama yang sama di direktori tujuan
Secara default, jika file dengan nama yang sama dengan file yang Anda unggah ada di direktori tujuan, ossutil akan meminta Anda untuk mengonfirmasi penimpaan. Jika Anda ingin menimpa semua file tujuan dengan nama yang sama, gunakan opsi -f atau --force untuk melewati prompt konfirmasi dan secara paksa menimpa file tersebut.
ossutil sync localfolder/ oss://examplebucket/destfolder/ -fSetelah perintah berhasil dijalankan, keluaran mencakup informasi seperti jumlah file yang disinkronkan, ukuran total, dan kecepatan rata-rata. Berikut adalah contoh keluaran:
Berhasil: Total num: 2, size: 750.081. OK num: 2(upload 2 files).
kecepatan rata-rata 1641000(byte/s)Sinkronisasi lintas akun
Gunakan opsi -e, -i, dan -k untuk menyinkronkan file dari direktori lokal `srcfolder` ke direktori `testfolder` di bucket `examplebucket`. Bucket ini berada di wilayah China (Shanghai) dan dimiliki oleh akun Alibaba Cloud lainnya.
Tentukan endpoint untuk wilayah bucket Anda. Untuk informasi lebih lanjut, lihat Wilayah dan Endpoint.
ossutil sync srcfolder/ oss://examplebucket/testfolder/ -e oss-cn-shanghai.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA**** -k 67DLVBkH7EamOjy2W5RVAHUY9H****Tips Keamanan: Memasukkan AccessKey dalam perintah menimbulkan risiko keamanan. Untuk tugas otomatis atau jangka panjang, kami merekomendasikan agar Anda membuat Peran RAM untuk akun sumber dan memberikan izin kepada akun tujuan. Metode ini memberikan akses lintas akun yang lebih aman.