Menguasai mode remote rsync lewat dua jalur: SSH (default, terenkripsi, dengan port custom via -e "ssh -p ...") dan rsync daemon dengan sintaks rsync://host/module/, konfigurasi [module] di /etc/rsyncd.conf, serta autentikasi lewat secrets file.

Episode 3 membatasi diri pada mode lokal. Sekarang waktunya menyeberang jaringan — karena kekuatan rsync yang sebenarnya ada saat kalian bisa menyinkronkan data antar server. Episode 4 membahas dua jalur remote: SSH dan rsync daemon.
Pilihannya bukan soal "mana yang lebih baik", melainkan "mana yang cocok untuk kebutuhan": SSH untuk backup pribadi yang aman, daemon untuk berbagi module ke banyak client. Kalian akan menguasai keduanya di episode ini.
Cara paling umum dan aman adalah lewat SSH. Rsync memanfaatkan SSH sebagai transport sekaligus autentikasi:
rsync -avh user@host:/var/www/ ./www-backup/rsync -avh ./www-backup/ user@host:/var/www/Arah menentukan peran: pull menarik dari remote ke lokal, push mengirim dari lokal ke remote. Keduanya sama-sama valid; pilih berdasarkan dari sisi mana kalian ingin menjalankan kontrol (dan di mana log/exit code paling mudah kalian baca).
Ketika SSH berjalan di port non-default, gunakan -e untuk mendefinisikan perintah shell:
rsync -avh -e "ssh -p 2222" user@host:/data/ ./data/-e "ssh -p 2222" memberi tahu rsync transport command apa yang dipakai. Ini juga pintu masuk untuk opsi SSH lain — misalnya key file tertentu atau proxy jump — yang akan kita keraskan di episode 14.
Note
Sejak rsync 3.x, rsync:// dan :: memerlukan --protocol=29 jika ingin memaksa mode SSH lama; tapi praktik modernnya: untuk SSH, cukup gunakan sintaks user@host:/path seperti di atas. Sintaks host::module dan rsync://host/module khusus untuk daemon.
Mode daemon berjalan di port 873. Sintaksnya rsync://host/module/ atau host::module. Server mengekspos satu atau lebih module — sebuah nama logis yang memetakan ke path fisik:
rsync -avh rsync://backup-host/backup/ ./restored/Perhatikan dua titik dua vs rsync:// — keduanya sama, pilih yang lebih mudah dibaca di script kalian. Untuk module yang butuh autentikasi, tambahkan user daemon:
rsync -avh rsyncuser@backup-host::backup/ ./restored/Di sisi server, module didefinisikan di /etc/rsyncd.conf. Contoh lengkap:
uid = rsyncuser
gid = rsyncuser
use chroot = yes
max connections = 5
pid file = /var/run/rsyncd.pid
log file = /var/log/rsync.log
[backup]
path = /srv/backup
comment = Backup utama server
read only = yes
auth users = rsyncuser
secrets file = /etc/rsyncd.secretsBagian global (tanpa judul) berlaku untuk semua module; bagian [backup] adalah module bernama backup. read only = yes berarti client hanya bisa pull — konfigurasi paling aman untuk backup. use chroot = yes mengunci module ke dalam path-nya, mencegah client mengakses direktori lain.
Untuk module yang dilindungi, rsyncd memakai secrets file — file berisi pasangan user:password:
echo "rsyncuser:S3curePass" | sudo tee /etc/rsyncd.secrets
sudo chmod 600 /etc/rsyncd.secrets
sudo chown rsyncuser /etc/rsyncd.secretschmod 600 wajib — rsyncd akan menolak secrets file yang dapat dibaca proses lain. Di sisi client, autentikasi bisa dilewatkan otomatis lewat --password-file:
echo "S3curePass" > ~/.rsync.pass
chmod 600 ~/.rsync.pass
rsync -avh --password-file=~/.rsync.pass rsyncuser@backup-host::backup/ ./restored/Dengan ini cron bisa menjalankan pull tanpa input password. Perhatikan: password file client juga harus chmod 600.
Important
Autentikasi daemon rsync bukan pengganti enkripsi: kredensial dan data tetap mengalir plaintext di port 873. Untuk data sensitif, lebih baik gunakan SSH, atau bungkus daemon dengan SSH tunnel (episode 14). Jangan pernah mengekspos port 873 ke internet tanpa firewall.
| Skenario | Pilihan |
|---|---|
| Backup server pribadi, migrasi | SSH — terenkripsi, autentikasi key |
| Mirror publik ke banyak client | Daemon — tanpa akun shell per user |
| Berbagi direktori antar server internal | SSH — lebih sederhana, tanpa daemon |
| Pull berkala non-interaktif banyak client | Daemon dengan --password-file |
Tip
Aturan 80/20: di lingkungan produksi modern, 90% kasus cukup pakai SSH. Daemon paling berguna untuk mirror publik dan saat kalian ingin membatasi client ke satu direktori tanpa memberi akses shell. Mulai dari SSH, dan pindah ke daemon hanya jika ada kebutuhan nyata.
Pada episode 4 ini, kalian telah menguasai mode remote lewat dua jalur.
Inti yang harus dibawa pulang:
rsync -avh user@host:/path/ ./ untuk pull/push; port custom via -e "ssh -p 2222".rsync://host/module/ di port 873; module didefinisikan di /etc/rsyncd.conf.chmod 600, baik di server maupun client (--password-file).Di episode 5 selanjutnya, kita bedah flag penting: -a (archive), -v, -h, -z (kompresi), -P (--partial + --progress), --delete, dan -n (dry-run) — fondasi hampir semua perintah rsync yang akan kalian tulis. Sampai jumpa di episode 5!