Perintah rsync Linux: Opsi | Contoh Penggunaan

Jika Anda menyalin ulang semuanya setiap kali untuk menyamakan folder di dua server, volume transfernya tetap sebesar ukuran keseluruhan meskipun hanya satu file yang berubah. Perintah rsync, singkatan dari remote sync, membandingkan sumber dan tujuan lalu hanya mengirim file yang berbeda, dan bekerja dengan cara yang sama baik antarfolder lokal maupun antarserver yang terhubung lewat SSH. Artikel ini merangkum penggunaan dasar, opsi, serta contoh dua metode koneksi, yaitu SSH dan daemon rsync.
Output dalam artikel ini berasal dari rsync 3.2.7 di AlmaLinux 9.8. Jika rsync belum terpasang, pasang dengan manajer paket.
# Keluarga RHEL
dnf -y install rsync
# Keluarga Debian
apt -y install rsync✅ Cara Penggunaan Dasar
Penggunaan dasarnya adalah sebagai berikut.
rsync -opsi sumber tujuanSeperti perintah cp, sumber ditulis lebih dulu, lalu tujuan di belakangnya. Jika garis miring [/] ditambahkan di akhir sumber, hanya isi folder yang masuk ke tujuan; tanpa garis miring, folder itu sendiri yang masuk.
~]# rsync -av www/ backup/
sending incremental file list
index.html
img/
img/logo.png
~]# rsync -av www backup/
sending incremental file list
www/
www/index.html
www/img/
www/img/logo.pngJika perintah yang sama dijalankan lagi, daftar filenya kosong dan angka sent turun menjadi beberapa ratus byte. Ini karena file dengan ukuran dan waktu modifikasi yang sama dilewati.
~]# rsync -av www/ backup/
sending incremental file list
sent 166 bytes received 13 bytes 358.00 bytes/sec
total size is 3,015 speedup is 16.84Jika hanya memakai -r tanpa -a, waktu modifikasi tidak dipertahankan, sehingga file yang sama dikirim lagi pada eksekusi berikutnya. Saat menyinkronkan folder, selalu sertakan -a.
Opsi -n hanya menampilkan file yang akan berubah tanpa mentransfer apa pun, dan di akhir output muncul [(DRY RUN)]. Opsi yang menghapus file di tujuan, seperti --delete, diperiksa dulu dengan -n, baru kemudian dijalankan.
~]# rsync -avn --delete www/ backup/
sending incremental file list
deleting old.bak
index.html
sent 188 bytes received 39 bytes 454.00 bytes/sec
total size is 3,013 speedup is 13.27 (DRY RUN)✅ Opsi Perintah rsync & Simulator
| Opsi | Penjelasan | |
|---|---|---|
| -a | --archiveMenyalin hingga subdirektori serta mempertahankan izin·pemilik·waktu modifikasi·tautan simbolik (sama dengan -rlptgoD) | |
| -v | --verboseMenampilkan nama file yang ditransfer dan jumlah data yang ditransfer | |
| -z | --compressMengompresi data file selama transfer | |
| -r | --recursiveMenyalin hingga subdirektori (termasuk dalam -a) | |
| -t | --timesMempertahankan waktu modifikasi (termasuk dalam -a). Ini yang menjadi patokan file mana yang dilewati pada eksekusi berikutnya | |
| -n | --dry-runHanya menampilkan file yang akan berubah tanpa transfer, dan menandai bagian akhir dengan (DRY RUN) | |
| -u | --updateMelewati file yang lebih baru di sisi tujuan | |
| -h | --human-readableMenampilkan jumlah byte dalam satuan K·M·G | |
| -P | Sama dengan --partial --progress. Menampilkan progres setiap file dan melanjutkan transfer yang terputus | |
| -i | --itemize-changesMenampilkan perubahan pada setiap file dalam bentuk simbol>f+++++++++ file baru · >f.st...... ukuran·waktu berubah · *deleting dihapus | |
| -e | --rsh=COMMANDMenentukan shell remote-e 'ssh -p 2222 -i /root/.ssh/key.pem' | |
| --delete | Menghapus file di tujuan yang tidak ada di sumber (perlu -r atau -a) | |
| --exclude=PATTERN | Mengecualikan file·direktori yang cocok dengan pola--exclude '*.tmp' --exclude 'cache/' | |
| --include=PATTERN | Ditaruh sebelum --exclude agar hanya pola itu yang dikeluarkan dari pengecualian | |
| --max-size=SIZE | Tidak mentransfer file yang lebih besar dari ukuran yang ditentukan (--min-size untuk file kecil)--max-size=3M --min-size=10k | |
| --bwlimit=RATE | Membatasi kecepatan transfer, dalam satuan KiB/s | |
| --stats | Menampilkan statistik jumlah file·volume transfer |
✅ Metode Koneksi: SSH dan Daemon rsync
Ada dua metode koneksi untuk sinkronisasi dengan server remote. Satu titik dua [:] setelah host berarti lewat SSH, sedangkan dua titik dua [::] terhubung langsung ke daemon rsync di port 873.
| Kategori | Metode SSH (:) | Metode daemon rsync (::) |
|---|---|---|
| Format koneksi | rsync -opsi user@host:/jalur /jalur/lokal | rsync -opsi host::modul/jalur /jalur/lokal |
| Port | Port SSH (default 22) | 873 |
| Enkripsi | Dienkripsi oleh SSH | Tanpa enkripsi |
| Autentikasi | Kunci SSH atau kata sandi | hosts allow di rsyncd.conf; akun·kata sandi bersifat opsional |
| Pengaturan di sisi server | Tidak ada (langsung bisa dipakai asalkan akses SSH berfungsi) | Pasang rsync-daemon, /etc/rsyncd.conf, buka port 873 |
| Kegunaan | Backup·deployment antarserver (pilihan default) | Mirroring di jaringan internal tanpa memberikan akun SSH |
🔲 Metode SSH
Jika server bisa diakses lewat SSH, metode ini langsung bisa dipakai tanpa pengaturan di sisi server. Jika port-nya berbeda atau Anda memakai file kunci, masukkan perintah ssh apa adanya ke opsi -e.
# lokal → remote
rsync -avz /home/2server_data/ root@192.168.45.239:/home/1server_data/
# remote → lokal
rsync -avz root@192.168.45.239:/home/1server_data/html_Remote /home/2server_data
# Tentukan port SSH·file kunci
rsync -avz -e 'ssh -p 2222 -i /root/.ssh/key.pem' root@192.168.45.239:/home/1server_data/ /home/2server_data
Untuk mengecualikan file atau direktori tertentu, tambahkan --exclude satu kali untuk setiap pola, atau kelompokkan pola dalam kurung kurawal lalu tulis sekaligus.
rsync -avz --exclude 'html_Remote_Excertion' --exclude 'Exception_File' root@192.168.45.239:/home/1server_data/ /home/2server_data
rsync -avz --exclude={'html_Remote_excertion/*','Exception_File'} root@192.168.45.239:/home/1server_data/ /home/2server_data
🔲 Metode Daemon rsync
Daemon rsync mengizinkan akses per modul lewat port 873 tanpa akun SSH, dan karena komunikasinya tidak dienkripsi, daemon ini dipakai antarserver di jaringan internal yang sama.
Di AlmaLinux 9, pasang paket rsync-daemon lalu aktifkan layanannya. Pada server yang memakai firewalld, buka port 873; pada server cloud, buka port itu di firewall konsol. Metode xinetd yang dipakai di RHEL 8 ke bawah sudah tidak ada lagi di versi 9.
dnf -y install rsync-daemon
systemctl enable --now rsyncd
firewall-cmd --permanent --add-port=873/tcp
firewall-cmd --reloadDi file konfigurasi [/etc/rsyncd.conf], tuliskan nama modul, jalurnya, dan host yang diizinkan. Jika read only diatur ke yes, sisi remote hanya bisa mengambil data.
[myhome]
path = /home
uid = root
gid = root
use chroot = yes
read only = yes
hosts allow = 192.168.45.182
max connections = 3
timeout = 30Dari sisi remote, jika setelah host hanya ditulis dua titik dua, yang muncul adalah daftar modul; jika nama modul juga ditulis, yang muncul adalah daftar file di dalamnya.
~]# rsync 192.168.45.239::
myhome
home
~]# rsync 192.168.45.239::myhome
drwxr-xr-x 4,096 2025/06/12 22:14:39 .
drwxr-xr-x 4,096 2025/06/12 22:21:10 1server_data
drwxr-xr-x 4,096 2025/06/12 22:14:39 2server_dataPenyalinan memakai format [host::modul/jalur]. --delete menghapus file di tujuan yang tidak ada di sumber, dan --include hanya mengeluarkan item yang ditaruh sebelum --exclude dari pengecualian.
~]# rsync -avz 192.168.45.239::myhome/1server_data/ /home/2server_data/
receiving incremental file list
./
Exception_File
html_Remote/
html_Remote_Excertion/
sent 58 bytes received 332 bytes 780.00 bytes/sec
total size is 442 speedup is 1.13
~]# rsync -avz --delete 192.168.45.239::myhome/1server_data/ /home/2server_data/
~]# rsync -avz --include '*.html' --exclude 'exclude.txt' 192.168.45.239::myhome/1server_data/ /home/2server_data/

Di server yang mengaktifkan SELinux, akses ke jalur modul bisa terblokir dengan [Permission denied (13)]. Dalam pengujian, akses berhasil setelah SELinux dimatikan dengan [setenforce 0].
~]# rsync -avz 192.168.45.239::myhome/1server_data/ /home/2server_data/
receiving incremental file list
rsync: change_dir "/1server_data" (in myhome) failed: Permission denied (13)
sent 8 bytes received 90 bytes 65.33 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files/attrs were not transferred (see Sebelumnya errors) (code 23) at main.c(1658) [Receiver=3.1.2]--bwlimit membatasi kecepatan transfer dalam satuan KiB/s, dan jika -P ditambahkan, progres setiap file ikut terlihat. --max-size dan --min-size hanya mentransfer file dalam rentang ukuran yang ditentukan.
rsync -avzP --bwlimit=100 192.168.45.239::myhome/1server_data/ /home/2server_data/
rsync -avz --max-size='3M' --min-size='10k' 192.168.45.239::myhome/1server_data/ /home/2server_data/
ℹ️ Pemberitahuan Afiliasi
Konten di situs ini berisi tautan afiliasi. Jika pengunjung membeli produk atau layanan melalui tautan tersebut, situs ini menerima komisi dari penjual. Harga yang dibayar pembeli(turun saat ada diskon promo ↓), tidak naik karena hal ini. Harga, diskon, dan informasi stok yang ditampilkan berlaku pada saat penulisan dan bisa berbeda dengan kondisi sebenarnya, jadi pastikan kembali di situs penjual sebelum membeli. Pemilihan dan penilaian produk dibuat berdasarkan standar kami sendiri, dan ada tidaknya komisi tidak memengaruhi urutan maupun isi penilaian.