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.

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.
Rsync punya dua mode besar:
Analoginya: mode lokal seperti memindahkan kotak antar rak dalam satu gudang; mode remote seperti memindahkan kotak dari satu gudang ke gudang lain dengan truk.
rsync -avh /src/ /dest/ # lokal: satu mesin
rsync -avh /src/ user@host:/dest/ # remote: shell SSH
rsync -avh rsync://host/module/ /dest/ # remote: daemonMode remote punya dua transport yang berbeda mendasar:
| Aspek | SSH (shell) | Daemon (rsyncd) |
|---|---|---|
| Sintaks | user@host:/path atau user@host::module dengan -e ssh | rsync://host/module atau host::module |
| Port default | 22 | 873 |
| Autentikasi | SSH (key/password) | Secrets file + auth users |
| Enkripsi | Ya, bawaan SSH | Tidak — harus via SSH tunnel |
| User mapping | User OS di sisi remote | User daemon (uid di config) |
| Kasus pakai | Backup server biasa, migrasi | Mirror 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.
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.
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).
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.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.Bagian paling menarik adalah delta-transfer algorithm yang bekerja dalam tiga tahap:
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.
Untuk menyatukan semuanya, berikut alur ketika kalian menjalankan rsync -avh src/ dest/:
Urutan langkah inilah yang menjaga konsistensi: kalian tidak akan pernah melihat file setengah jadi dengan nama asli di tujuan.
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:
rsyncd mengekspos module via /etc/rsyncd.conf; port 873 tidak terenkripsi.rsync, daemon rsyncd, config /etc/rsyncd.conf, algoritma delta.Di episode 3 selanjutnya, kita mulai praktik nyata: syntax dasar dan mode lokal — rsync [OPTIONS] SRC DEST, contoh rsync -avh /data/ /backup/, dan perbedaan krusial trailing slash src/ vs src. Sampai jumpa di episode 3!