Sinkronisasi File dengan Rsync di Linux
Proses backup database 50 GB memakan waktu berjam-jam jika harus menyalin ulang dari awal setiap kali. Dalam praktiknya, hanya sebagian kecil data yang berubah antar backup. Rsync memanfaatkan pola ini: ia mentransfer hanya perbedaan antara sumber dan tujuan — menghemat bandwidth hingga 90% pada backup berulang.
Cara Kerja Rsync
Rsync adalah utilitas baris perintah untuk menyalin dan menyinkronkan file secara lokal maupun jarak jauh. Keunggulan utamanya dibandingkan cp atau scp:
- Delta transfer — hanya mengirim bagian file yang berubah, bukan seluruh file
- Kompresi — mentransfer data dalam bentuk terkompresi untuk menghemat bandwidth
- Preserve atribut — mempertahankan izin file, kepemilikan, timestamp, dan symlink
- Resume ability — transfer yang terputus bisa dilanjutkan dari titik terakhir
Rsync sudah terinstal secara default di sebagian besar distribusi Linux, termasuk Ubuntu 24.04 yang umum digunakan di Nusa Cloud VPS.
Prasyarat
- Server dengan Nusa Cloud VPS atau mesin Linux lokal
- Akses
sudountuk instalasi (jika perlu) - Koneksi SSH ke server jarak jauh (untuk transfer jarak jauh)
- Space disk yang cukup di tujuan
Pastikan Rsync sudah terinstal:
rsync --version
Jika belum ada, instal dengan:
sudo apt update
sudo apt install rsync -y
Sintaks Dasar Rsync
Format perintah Rsync:
rsync [opsi] sumber tujuan
Sumber dan tujuan bisa berupa direktori lokal, atau user@host:path untuk akses jarak jauh melalui SSH.
Opsi yang Paling Sering Digunakan
| Opsi | Fungsi |
|---|---|
-a | Mode arsip: rekursif, preserve symlink, permission, timestamp, owner, group |
-v | Verbose — tampilkan file yang diproses |
-z | Kompres data selama transfer |
-h | Output ukuran dalam format human-readable |
--progress | Tampilkan progres transfer per file |
--delete | Hapus file di tujuan yang tidak ada di sumber |
--dry-run | Simulasi tanpa menulis perubahan |
-e ssh | Gunakan SSH sebagai transport |
Contoh Penggunaan Rsync
1. Sinkronisasi Lokal
Salin direktori data ke /backup:
rsync -avh /home/user/data/ /backup/data/
Perhatikan garis miring (/) setelah data/ — ini berarti salin isi direktori, bukan direktori itu sendiri. Tanpa garis miring (/home/user/data), Rsync akan membuat sub-direktori data di dalam /backup.
2. Transfer ke Server Jarak Jauh
Kirim direktori website ke server Nusa Cloud VPS:
rsync -avz -e ssh /var/www/html/ user@203.0.113.10:/var/www/html/
3. Backup dengan Hapus File yang Tidak Ada di Sumber
Sinkronisasi satu arah di mana file di tujuan yang sudah tidak ada di sumber akan dihapus:
rsync -avh --delete /sumber/data/ /tujuan/data/
Gunakan dengan hati-hati — opsi --delete bersifat destruktif terhadap file yang tidak ada di sumber.
4. Simulasi Sebelum Eksekusi
rsync -avh --dry-run /sumber/ /tujuan/
Tidak ada file yang benar-benar ditransfer. Gunakan ini untuk memverifikasi pola file sebelum eksekusi sungguhan.
Sinkronisasi Melalui SSH
Rsync menggunakan SSH sebagai transport default untuk transfer jarak jauh di Ubuntu 24.04. Untuk port SSH non-default:
rsync -avz -e "ssh -p 2222" /sumber/ user@203.0.113.10:/tujuan/
Autentikasi dengan SSH Key
Agar sinkronisasi berjalan tanpa password (penting untuk backup terjadwal), gunakan SSH key:
-
Generate key pair jika belum ada:
ssh-keygen -t ed25519 -
Salin public key ke server tujuan:
ssh-copy-id -p 2222 user@203.0.113.10
Setelah langkah ini, Rsync tidak akan meminta password.
Skrip Backup Otomatis Harian
Buat skrip sederhana untuk backup harian:
#!/bin/bash
# backup-harian.sh — Backup data ke server tujuan
SOURCE="/var/www/html"
DEST="user@203.0.113.10:/backup/html/"
LOG="/var/log/backup-rsync.log"
rsync -avz --delete -e ssh "$SOURCE" "$DEST" >> "$LOG" 2>&1
if [ $? -eq 0 ]; then
echo "[$(date)] Backup berhasil" >> "$LOG"
else
echo "[$(date)] Backup GAGAL" >> "$LOG"
fi
Jadwalkan dengan cron:
crontab -e
Tambahkan baris berikut untuk backup setiap jam 2 pagi:
0 2 * * * /home/user/backup-harian.sh
Verifikasi Sinkronisasi
Setelah transfer selesai, verifikasi integritas dengan opsi -c (checksum):
rsync -avc /sumber/ /tujuan/
Rsync akan membandingkan checksum setiap file — bukan hanya timestamp dan ukuran. Proses ini lebih lambat tetapi memberikan kepastian bahwa file identik.
Periksa log eksekusi:
cat /var/log/backup-rsync.log
Troubleshooting Umum
| Masalah | Penyebab | Solusi |
|---|---|---|
| "Permission denied" | Izin direktori | Gunakan sudo atau perbaiki permission direktori tujuan |
| "Connection refused" | SSH tidak berjalan | Periksa systemctl status ssh di server tujuan |
| Transfer lambat | Tanpa kompresi | Tambahkan opsi -z untuk kompresi |
| "File has vanished" | File dihapus saat transfer | Jalankan ulang Rsync |
| Space disk penuh | Tujuan tidak cukup | Periksa dengan df -h dan hapus file yang tidak perlu |
Kesimpulan
Rsync adalah utilitas esensial untuk setiap administrator server. Kemampuannya mentransfer hanya perbedaan, dikombinasikan dengan kompresi dan dukungan SSH, menjadikannya pilihan utama untuk backup dan sinkronisasi di Nusa Cloud VPS. Skrip backup otomatis dengan Rsync dan cron memastikan data Anda aman tanpa pengawasan manual setiap hari.
