Membangun workflow yang aman sebelum mengeksekusi rsync pada data penting: dry-run dengan -n, itemize dengan -i untuk melihat perubahan persis per file, validasi isi dengan --checksum (-c), serta --ignore-times saat meragukan timestamp.

Kalian sudah punya arsenal lengkap: filter, snapshot, cron, dan keamanan. Ada satu kebiasaan yang membedakan engineer andal dari yang ceroboh — memverifikasi sebelum mengeksekusi dan memverifikasi setelah selesai. Episode 16 menutup celah itu dengan dry-run, itemize, dan checksum.
Mengapa ini episode penting? Karena perintah rsync yang tampak benar bisa salah besar di kondisi nyata: sumber yang salah arah, filter yang salah pola, atau timestamp yang menipu. Workflow di episode ini adalah jaring pengaman yang membuat kesalahan itu terdeteksi sebelum data rusak.
-n (atau --dry-run) menjalankan seluruh proses rsync — daftar file, perbandingan, filter — tanpa benar-benar menulis apa pun:
rsync -avhn --delete src/ dest/Outputnya sama seperti transfer sungguhan, hanya saja tidak ada file yang disentuh. Inilah perintah pertama yang harus kalian jalankan untuk setiap rsync yang menyentuh data penting — terutama yang memakai --delete.
Tip
Dalam skrip, tambahkan -n sebagai default dan gunakan variabel untuk mengaktifkan eksekusi nyata — misal DRY="-n"; [ "$EXEC" = "1" ] && DRY="". Dengan begitu skrip aman dijalankan siapa pun secara tidak sengaja, dan eksekusi nyata hanya ketika flag eksplisit diberikan.
-i (--itemize-changes) membuat dry-run jauh lebih informatif: setiap baris output menjelaskan perubahan spesifik per file:
rsync -avhn -i src/ dest/>f+++++++++ src/file-baru.txt
>f.st...... src/file-berubah.txt
.d..t...... src/dir/
cd+++++++++ src/file-dihapus.txtMasing-masing baris punya arti: karakter pertama tipe perubahan (> = dikirim, c = dihapus), lalu 9 karakter status atribut. Kita baca formatnya di bawah.
Kolom status itemize:
| Posisi | Arti |
|---|---|
| 1 | Tipe perubahan: > update, c create/delete, * non-regular |
| 2 | f file, d direktori, L symlink, D device |
| 3-9 | Status: . tidak berubah, s ukuran, t timestamp, p permission, o owner, g group, c checksum, x xattr |
| 10 | Tipe detail |
Contoh >f.st...... berarti: file (f) dikirim (>) karena ukuran (s) dan timestamp (t) berubah — isi tidak dicek. >f.c....... berarti isi dibandingkan lewat checksum dan berubah. Baris cd+++++++++ menandakan file dihapus di tujuan karena tidak ada di sumber. Latih membaca format ini dengan rsync -n -i pada direktori yang sengaja kalian ubah — cepat terbiasa.
Note
Hanya dengan -i kalian bisa melihat alasan sebuah file ikut ditransfer: apakah karena isi berubah (c), atau hanya timestamp (t). Perbedaan ini penting — lihat bagian --ignore-times di bawah.
Default rsync membandingkan ukuran + timestamp untuk memutuskan apakah sebuah file berubah. Itu cepat, tetapi bisa menipu: file dengan timestamp sama tapi isi berbeda (misalnya hasil restore yang mengembalikan timestamp lama) akan dilewati.
-c (--checksum) memaksa perbandingan isi:
rsync -avhc -i src/ dest/Sekarang setiap file yang ukurannya sama tetap dihitung checksum-nya, dan perbedaan isi terdeteksi meski timestamp identik. Harganya: membaca seluruh file untuk checksum lebih lambat. -c adalah alat validasi — paling tepat saat kalian meragukan konsistensi, bukan untuk backup harian rutin.
Terkadang masalahnya kebalikan: file harus dipindah meskipun metadata sama — misalnya ketika kalian tidak mempercayai timestamp di sumber (sistem yang sempat salah jam), atau ingin menjamin isi benar-benar tersinkron.
rsync -avh --ignore-times src/ dest/--ignore-times membuat rsync memperlakukan semua file sebagai "mungkin berubah" — transfer diperlakukan penuh, meski tetap memakai delta-transfer untuk menghemat data. Ini lebih berat daripada -c di sisi pekerjaan, tetapi berguna sekali untuk verifikasi sekali jalan setelah restore atau migrasi.
Warning
Kombinasi yang sering disalahpahami: --ignore-times tanpa --size-only berarti semua file diproses. Jangan menggabungkannya dengan --delete secara tidak sadar saat kalian hanya ingin "memastikan isi sama" — periksa output itemize lebih dulu.
Rangkaian kebiasaan yang harus kalian internalisasi:
# 1. Dry-run + itemize: lihat apa yang akan terjadi
rsync -avhn -i --delete src/ dest/
# 2. Review output: apakah ada kejutan?
# 3. Eksekusi, lalu verifikasi
rsync -avh --delete src/ dest/
rsync -avhn -i -c --ignore-times src/ dest/Langkah ketiga yang kedua memakai -c + --ignore-times untuk memastikan semua file identik — jika outputnya bersih (tidak ada perubahan), sinkronisasi terbukti benar. Ini pola "dry-run → review → exec → verify" yang bisa kalian terapkan di semua operasi rsync produksi.
Pada episode 16 ini, kalian telah membangun workflow verifikasi yang aman.
Inti yang harus dibawa pulang:
-n (dry-run) menampilkan rencana tanpa menyentuh file — selalu jalankan untuk operasi penting.-i (itemize) mengungkap alasan perubahan per file.-c membandingkan isi lewat checksum — validasi yang tidak menipu oleh timestamp.--ignore-times memaksa pemrosesan semua file saat meragukan metadata.-c.Di episode 17 selanjutnya, kita bedah versi yang kalian pakai: Rsync 3.4.x & fitur terbaru — pengerasan keamanan besar, perbaikan --safe-links, perombakan internal parser argumen, serta cara verifikasi versi dan memastikan distro mem-backport fix. Sampai jumpa di episode 17!