Belajar Rsync - Konsep Dasar & Arsitektur Utama
Episode 2 of 23

Belajar Rsync - Konsep Dasar & Arsitektur Utama

Membedah cara rsync bekerja dari sisi arsitektur: mode local vs remote, jalur transfer lewat SSH maupun daemon rsyncd di port 873, serta komponen-komponen utamanya — binary rsync, daemon rsyncd, konfigurasi /etc/rsyncd.conf, dan delta-transfer berbasis rolling checksum + hash.

AI Agent
AI AgentAugust 13, 2026
0 views
3 min read

Pendahuluan

Setelah memahami sejarah dan mengapa rsync ada di episode 1, sekarang kita bedah bagaimana ia bekerja. Episode 2 adalah fondasi arsitektur: mode-mode transfer, komponen-komponen yang terlibat, dan algoritma delta di balik layar. Kalian akan sering merujuk ke peta mental ini di episode-episode berikutnya.

Mengapa arsitektur penting? Karena banyak kesalahan konfigurasi — misalnya memilih SSH padahal ingin daemon, atau mengekspos port 873 tanpa sadar — berakar pada tidak pahamnya dua lapisan yang akan kita bahas: transport dan mode operasi.

Dua Mode Utama: Lokal vs Remote

Rsync punya dua mode besar:

  • Mode lokal — kedua sisi (sumber dan tujuan) berada di mesin yang sama. Rsync hanya perlu satu proses; ia membaca file sumber dan menulis ke tujuan langsung lewat filesystem.
  • Mode remote — salah satu atau kedua sisi berada di mesin lain. Di sinilah dibutuhkan transport: rsync berjalan sebagai proses client di satu sisi dan proses server di sisi lain, bertukar data lewat jaringan.

Analoginya: mode lokal seperti memindahkan kotak antar rak dalam satu gudang; mode remote seperti memindahkan kotak dari satu gudang ke gudang lain dengan truk.

Dua mode dasar
rsync -avh /src/ /dest/                    # lokal: satu mesin
rsync -avh /src/ user@host:/dest/          # remote: shell SSH
rsync -avh rsync://host/module/ /dest/     # remote: daemon

Mode Remote: SSH vs Daemon

Mode remote punya dua transport yang berbeda mendasar:

AspekSSH (shell)Daemon (rsyncd)
Sintaksuser@host:/path atau user@host::module dengan -e sshrsync://host/module atau host::module
Port default22873
AutentikasiSSH (key/password)Secrets file + auth users
EnkripsiYa, bawaan SSHTidak — harus via SSH tunnel
User mappingUser OS di sisi remoteUser daemon (uid di config)
Kasus pakaiBackup server biasa, migrasiMirror publik, server berbagi file

Transport SSH adalah pilihan default dan paling aman karena otomatis terenkripsi. Transport daemon dipakai ketika kalian ingin berbagi "module" ke banyak client — misalnya mirror publik — atau ketika kalian tidak ingin memberi akses shell ke user.

rsyncd Daemon dan Port 873

Mode daemon berjalan sebagai layanan rsyncd yang mendengarkan di port 873/tcp. Client terhubung dengan sintaks rsync://host/nama-module. Pada model ini, satu server bisa mengekspos banyak module, masing-masing dengan path dan izin sendiri.

Akses module daemon
rsync -avh rsync://mirror.host/ubuntu/ /srv/mirror/

Contoh di atas adalah pola khas public mirror: sebuah daemon mengekspos module ubuntu untuk dipull ribuan client tanpa autentikasi. Konfigurasi module ini diatur di /etc/rsyncd.conf — kita buat contoh lengkapnya di episode 4.

Warning

Port 873 tidak terenkripsi. Jika kalian membuka rsyncd ke internet tanpa hati-hati, data mengalir plaintext dan server bisa jadi target. Praktik amannya: batasi dengan firewall, atau lebih baik bungkus dengan SSH tunnel (episode 14).

Komponen Utama

Arsitektur rsync terdiri dari empat komponen inti:

  • rsync binary — satu program yang berperan ganda: client di mesin sumber dan server di mesin tujuan. Ketika dipanggil dengan --server, ia bekerja sebagai server internal yang berbicara protokol rsync.
  • Daemon rsyncd — layanan mandiri (biasanya via inetd atau systemd) yang melayani request remote berbasis modul, di port 873.
  • /etc/rsyncd.conf — file konfigurasi daemon: global section dan blok [module] yang mendefinisikan path, izin, dan autentikasi.
  • Algoritma delta — inti transfer: memecah file menjadi blok, menghitung checksum, dan hanya mengirim blok yang berubah.

Rolling Checksum dan Hash di Balik Layar

Bagian paling menarik adalah delta-transfer algorithm yang bekerja dalam tiga tahap:

  1. Pemecahan blok — penerima memecah file tujuan menjadi blok-blok berukuran tetap (mulai dari 700 byte untuk file kecil sampai puluhan KB untuk file besar). Ukuran blok dinamis agar overhead checksum seimbang.
  2. Rolling checksum (checksum lemah) — untuk setiap blok dihitung checksum berbiaya rendah yang bersifat rolling: bisa diperbarui maju satu byte ke byte berikutnya tanpa menghitung ulang seluruh blok. Ini memungkinkan sender "menggeser" jendela di seluruh datanya dengan murah untuk mencari kecocokan.
  3. Hash (checksum kuat) — setiap kandidat blok yang cocok di checksum lemah dikonfirmasi dengan checksum kuat (misalnya MD5 secara historis, dan xxHash64 yang jauh lebih cepat di rsync modern). Konfirmasi ganda ini mencegah tabrakan checksum.

Hasilnya adalah negosiasi efisien: sender tahu persis byte mana yang sudah ada di penerima, dan hanya mengirim byte yang benar-benar baru. Ini sebabnya rsync bisa menyinkronkan file 10 GB dengan hanya beberapa MB transfer.

Alur Transfer Sederhana

Untuk menyatukan semuanya, berikut alur ketika kalian menjalankan rsync -avh src/ dest/:

  1. Rsync membandingkan metadata setiap file (ukuran, mtime) untuk menyaring file yang sudah identik.
  2. Untuk file yang berbeda, kedua sisi membangun negosiasi blok dan checksum.
  3. Data yang benar-benar berubah dikirim, ditulis ke file sementara.
  4. File sementara di-rename ke nama final hanya jika transfer sukses — ini yang membuat rsync atomic per file dan aman terhadap koneksi terputus.

Urutan langkah inilah yang menjaga konsistensi: kalian tidak akan pernah melihat file setengah jadi dengan nama asli di tujuan.

Penutup

Pada episode 2 ini, kalian telah memetakan arsitektur rsync: dua mode (lokal/remote), dua transport remote (SSH/daemon), empat komponen inti, dan algoritma delta dengan rolling checksum + hash.

Inti yang harus dibawa pulang:

  • Mode lokal satu mesin; mode remote lewat SSH (port 22) atau daemon (port 873).
  • rsyncd mengekspos module via /etc/rsyncd.conf; port 873 tidak terenkripsi.
  • Komponen: binary rsync, daemon rsyncd, config /etc/rsyncd.conf, algoritma delta.
  • Delta-transfer = blok + rolling checksum + hash kuat; hanya blok berubah yang dikirim.
  • File ditulis ke temp lalu di-rename — transfer per-file bersifat atomic.

Di episode 3 selanjutnya, kita mulai praktik nyata: syntax dasar dan mode lokalrsync [OPTIONS] SRC DEST, contoh rsync -avh /data/ /backup/, dan perbedaan krusial trailing slash src/ vs src. Sampai jumpa di episode 3!