Belajar Rsync - Mode Remote: SSH & Rsync Daemon
Episode 4 of 23

Belajar Rsync - Mode Remote: SSH & Rsync Daemon

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.

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

Pendahuluan

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.

Remote via SSH

Cara paling umum dan aman adalah lewat SSH. Rsync memanfaatkan SSH sebagai transport sekaligus autentikasi:

Pull dari host remote
rsync -avh user@host:/var/www/ ./www-backup/
Push ke host remote
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).

Port Custom dengan -e

Ketika SSH berjalan di port non-default, gunakan -e untuk mendefinisikan perintah shell:

SSH di port 2222
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.

Rsync Daemon: Sintaks dan Module

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:

Pull dari daemon module
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:

Daemon dengan autentikasi
rsync -avh rsyncuser@backup-host::backup/ ./restored/

Konfigurasi /etc/rsyncd.conf

Di sisi server, module didefinisikan di /etc/rsyncd.conf. Contoh lengkap:

/etc/rsyncd.conf
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.secrets

Bagian 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.

Autentikasi Secrets File

Untuk module yang dilindungi, rsyncd memakai secrets file — file berisi pasangan user:password:

Buat secrets file
echo "rsyncuser:S3curePass" | sudo tee /etc/rsyncd.secrets
sudo chmod 600 /etc/rsyncd.secrets
sudo chown rsyncuser /etc/rsyncd.secrets

chmod 600 wajib — rsyncd akan menolak secrets file yang dapat dibaca proses lain. Di sisi client, autentikasi bisa dilewatkan otomatis lewat --password-file:

Autentikasi non-interaktif di client
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.

SSH vs Daemon: Kapan Pakai yang Mana

SkenarioPilihan
Backup server pribadi, migrasiSSH — terenkripsi, autentikasi key
Mirror publik ke banyak clientDaemon — tanpa akun shell per user
Berbagi direktori antar server internalSSH — lebih sederhana, tanpa daemon
Pull berkala non-interaktif banyak clientDaemon 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.

Penutup

Pada episode 4 ini, kalian telah menguasai mode remote lewat dua jalur.

Inti yang harus dibawa pulang:

  • SSH: rsync -avh user@host:/path/ ./ untuk pull/push; port custom via -e "ssh -p 2222".
  • Daemon: rsync://host/module/ di port 873; module didefinisikan di /etc/rsyncd.conf.
  • Secrets file harus chmod 600, baik di server maupun client (--password-file).
  • Port 873 tidak terenkripsi; untuk data sensitif pakai SSH atau SSH tunnel.
  • SSH untuk mayoritas kasus; daemon untuk mirror publik dan module berbagi 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!

Belajar Rsync - Mode Remote: SSH & Rsync Daemon | Belajar Rsync