Perintah sync Linux: sinkronkan penulisan sebelum melepas penyimpanan

Perintah sync meminta kernel menyinkronkan penulisan yang masih tersimpan dalam cache ke penyimpanan. Pada Linux, panggilan sinkronisasi menunggu penyelesaian masukan/keluaran, tetapi sync tidak melepas mount dan keberhasilannya bukan jaminan mutlak terhadap kerusakan perangkat atau kehilangan daya.

Linux dapat menunda penulisan ke media untuk meningkatkan kinerja. Cache menyimpan data sementara di memori; filesystem mengatur berkas pada penyimpanan. sync membantu mendorong penulisan yang tertunda, tetapi tidak menyimpan perubahan yang masih berada dalam buffer aplikasi dan belum diserahkan kepada kernel.

Sintaks dan cakupan GNU sync

sync [OPSI] [BERKAS...]

OPSI dan BERKAS adalah penanda. Periksa sync --version dan man sync pada sistem setempat karena implementasi dan opsi berbeda antarplatform. Contoh berkas serta opsi -d dan -f di bawah mengacu pada GNU coreutils.

Tanpa argumen, cakupannya adalah penulisan tertunda di seluruh sistem. Dengan path berkas pada GNU sync, cakupan dapat dibatasi ke berkas itu atau diperluas ke filesystem yang memuatnya melalui -f. Pilih cakupan sesuai pekerjaan, bukan berdasarkan asumsi semua bentuk perintah sama.

Sinkronkan penulisan tertunda pada sistem

sync

Perintah tanpa argumen meminta sinkronisasi penulisan filesystem pada sistem. Selesaikan operasi salin dan simpan dokumen terlebih dahulu. Aplikasi yang terus menulis dapat menghasilkan penulisan baru setelah sinkronisasi; sync tidak membekukan aktivitas sistem.

Durasi bergantung pada jumlah data tertunda dan keadaan penyimpanan. Menunggu lama tidak dengan sendirinya membuktikan kegagalan, tetapi pesan kesalahan atau masalah perangkat perlu diperiksa. Menjalankan sync berulang-ulang tidak memperbaiki media yang bermasalah.

Sinkronkan satu berkas yang sudah ada

sync report.txt

report.txt adalah path relatif terhadap direktori kerja shell. Pastikan itu berkas hasil pekerjaan yang dimaksud; gunakan path lengkap bila direktori kerja berbeda. Perintah ini menyinkronkan penulisan berkas, bukan membuat report.txt atau menyimpan isi editor yang belum ditulis ke berkas.

Pada GNU sync, bentuk berkas memakai semantik fsync untuk data dan metadata terkait. Sinkronisasi berkas saja tidak selalu menjamin entri nama berkas dalam direktori induk juga sudah tersimpan. Untuk kebutuhan ketahanan aplikasi yang lebih ketat, urutan penulisan, penggantian nama, dan sinkronisasi direktori harus dirancang oleh aplikasi.

Sinkronkan filesystem yang memuat sebuah path

sync -f /mnt/data/report.txt

Opsi -f memilih filesystem yang memuat /mnt/data/report.txt, bukan hanya isi report.txt. Path harus ada dan benar-benar berada pada filesystem yang dimaksud. Periksa mount aktual terlebih dahulu: bila mount /mnt/data tidak aktif, sebuah path di lokasi itu mungkin berada pada filesystem induk yang berbeda.

Gunakan path berkas di dalam filesystem tujuan, bukan menukar path itu dengan node perangkat seperti /dev/sdb1. Node perangkat berada pada filesystem yang menyimpan node tersebut dan tidak berarti -f akan memilih filesystem data di dalam perangkat. Gunakan pemeriksaan mount untuk memastikan sasaran.

Pahami keluaran kosong dan status keluar

sync biasanya tidak menampilkan keluaran ketika berhasil. Untuk membaca status shell sesaat setelah perintah, gunakan urutan berikut:

sync
echo $?

Contoh status sukses:

0

0 adalah status perintah sync yang tepat mendahului echo. Baca atau simpan status segera; perintah lain di antaranya dapat mengganti status terakhir. Keluaran kosong tanpa pemeriksaan status tidak cukup untuk menyimpulkan berhasil.

Status 0 bukan bukti cadangan lengkap atau semua aplikasi sudah konsisten. Panggilan sync() tanpa argumen pada Linux tidak menyediakan laporan kesalahan seperti fsync atau syncfs; karena itu keberhasilan bentuk sistem secara keseluruhan juga tidak membuktikan tidak ada kegagalan tulis. Pada sinkronisasi berkas atau filesystem tertentu, perhatikan pesan kesalahan dan status perintahnya.

Jaminan persistensi bergantung pada sistem, filesystem, dan perangkat yang melaporkan penyelesaian. Hardware cache, kegagalan media, dan terputusnya daya tidak boleh dianggap selesai dinilai hanya dari satu angka status. Sinkronisasi juga tidak memverifikasi isi berkas hasil salin terhadap sumber.

Opsi yang sering digunakan

Bentuk Cakupan dan batasnya
Tanpa argumen Menyinkronkan penulisan tertunda pada sistem secara keseluruhan.
BERKAS Menyinkronkan berkas tertentu pada GNU sync.
-d Menyinkronkan data serta metadata yang diperlukan untuk membaca data kembali, bukan semua metadata yang tidak diperlukan.
-f Menyinkronkan filesystem yang memuat path berkas yang diberikan.

-d memakai semantik fdatasync: perubahan ukuran berkas diperlukan agar data dapat dibaca kembali, sedangkan waktu akses atau modifikasi tidak selalu perlu disinkronkan melalui mode ini. -d bukan pilihan untuk mengabaikan metadata yang dibutuhkan agar isi berkas tetap dapat digunakan.

Rincian opsi dijelaskan pada manual GNU coreutils sync. Batas platform dan pelaporan kesalahan terdapat pada dokumentasi Linux sync dan syncfs, sedangkan cakupan metadata serta direktori dijelaskan pada dokumentasi fsync dan fdatasync.

Lepaskan penyimpanan setelah pekerjaan selesai

Untuk perangkat eksternal, hentikan penulisan aplikasi dan tunggu operasi salin selesai. Setelah itu ikuti prosedur umount yang normal untuk filesystem pada perangkat, periksa keberhasilannya, dan gunakan mekanisme pelepasan perangkat sistem bila tersedia. Semua partisi atau mount yang masih memakai perangkat perlu dipertimbangkan.

Jika umount menyatakan busy, cari berkas terbuka, direktori kerja, atau layanan yang masih memakai mount; jangan menganggap sync membuat pesan tersebut boleh diabaikan. Lazy unmount bukan bukti perangkat sudah aman dicabut. Setelah sync pun, mount yang tetap aktif masih dapat menerima penulisan baru.

FAQ

Apakah cukup menjalankan sync sebelum mencabut USB?

Tidak. sync menyinkronkan penulisan tetapi tidak melepas mount atau menghentikan aplikasi. Selesaikan pekerjaan, lakukan umount normal dengan sukses, dan gunakan prosedur pelepasan perangkat yang sesuai.

Apakah sync report.txt hanya menyinkronkan isi berkas?

Bentuk berkas GNU sync menyinkronkan data dan metadata berkas sesuai semantik fsync. Entri direktori induk memiliki kebutuhan sinkronisasi terpisah; -f memilih seluruh filesystem yang memuat path tersebut.