All Products
Search
Document Center

Object Storage Service:Sinkronkan file lokal ke OSS menggunakan perintah sync

Last Updated:Nov 06, 2025

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, /localfolder/ untuk Linux atau D:\localfolder\ untuk Windows.

cloud_url

Jalur folder OSS tujuan. Formatnya adalah oss://bucketname/path/. Contohnya, oss://examplebucket/exampledir/. Jika cloud_url yang dimasukkan tidak diakhiri dengan garis miring (/), ossutil secara otomatis menambahkan satu di akhir.

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

--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 header:value#header:value. Contohnya: Cache-Control:no-cache#Content-Encoding:gzip. Untuk informasi lebih lanjut, lihat set-meta (Kelola metadata file).

--acl

Daftar kontrol akses (ACL) file. Nilai valid:

  • default: ACL file diwarisi dari bucket.

  • private (default): Hanya pemilik bucket yang memiliki izin baca dan tulis pada file. Pengguna lain tidak dapat mengakses file.

  • public-read: Hanya pemilik bucket yang memiliki izin tulis pada file. Pengguna lain, termasuk pengguna anonim, hanya memiliki izin baca pada file. Ini dapat mengekspos data Anda dan meningkatkan biaya Anda. Jika pengguna jahat menulis informasi ilegal ke bucket Anda, hak dan kepentingan legal Anda mungkin dilanggar. Kami merekomendasikan agar Anda tidak mengonfigurasi izin ini kecuali untuk skenario khusus.

  • public-read-write: Semua pengguna, termasuk pengguna anonim, memiliki izin baca dan tulis pada file. Ini dapat mengekspos data Anda dan meningkatkan biaya Anda. Gunakan izin ini dengan hati-hati.

--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 TagkeyA=TagvalueA&TagkeyB=TagvalueB.....

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/ --delete

Setelah sinkronisasi, struktur direktori `destfolder/` identik dengan `localfolder/`:

destfolder/
├── d.txt
└── e.png

Filter 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/ -f

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

Catatan

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.