Cara menggunakan rsync

Apa itu rsync? rsync adalah salah satu metode yang digunakan untuk sinkronisasi data antar server. Berbeda dengan mengirimkan data secara utuh seperti biasanya lewat FTP atau SCP misalnya, keunggulan rsync adalah transfer hanya perbedaan filenya saja atau sering disebut sebagai delta. Jadi ini mengurangi ukuran data yang ditransfer juga mempercepat proses transfernya sendiri.

Ilustrasinya kalau file backup website anda 59MB kemarin dan hari ini jadi 71MB maka yang terjadi adalah sekitar 12MB akan dikirimkan dan file di lokasi tujuan akan disama dengan yang di asal.

Apa syarat untuk menggunakan rsync? Sederhana kok, selama anda punya user di Linux dan sudah mengijinkan akses SSH maka anda sudah bisa menjalankannya. Kemudian silahkan install dulu aplikasinya:

  • Debian/Ubuntu:
    apt-get install rsync
  • CentOS/Fedora:
    yum install rsync

Mari dimulai dari pengenalan dasarnya dulu. Masih dalam VPS yang sama, jadi misal anda ingin menyamakan isi direktori backup dari satu lokasi ke lokasi lain, tinggal eksekusi:

rsync -avzh direktori_asal direktori_tujuan

Kurang lebih akan muncul pesan informasi seperti ini nantinya:

sending incremental file list
created directory /home/direktori_tujuan
backup/
backup/servernesia.sql
backup/servernesia.tar.gz

sent 68.91M bytes  received 95 bytes  12.53M bytes/sec
total size is 107.49M  speedup is 1.56

Misal direktori tujuan tidak ada maka akan ikut otomatis dibuatkan juga beserta isinya.

Tapi rsync cukup sering digunakan untuk mensinkronkan data atau file antara 2 server yang berbeda, dan untuk saya adalah backup. Saya awali dengan contoh rsync mendorong filenya ke VPS lain:

rsync -rvzh /home/backup [email protected]:/home/backup/backup_1

Atau juga bisa dibalik dimana kita menarik data dari VPS lain kesini:

rsync -rvzh [email protected]:/home/backup/backup /home/backup_2

Pada keduanya nanti akan muncul permintaan mengisikan password root atau user yang digunakan.

Secara default rsync bekerja lewat SSH tapi kalau di server tujuan sudah ada daemonnya maka bisa juga mendengarkan di port 873.

Oh ya, dalam eksekusi rsync tidak ada caranya menyisipkan parameter password user Linux, jadi memang tidak bisa langsung tersambung. Solusinya bisa diakali dengan sshpass atau sangat disarankan memakai SSH Key karena lebih aman untuk login tanpa password.

20 Comments

      1. Ada mbak, pakai parameter -e untuk koneksi SSH dan nanti portnya juga:

        rsync -rvz -e 'ssh -p 1234' --progress --remove-sent-files direktori_asal direktori_tujuan
    1. Bisa pakai sshpass mbak kalau tetap ingin pakai user dan password metodenya:

      yum install sshpass

      Kemudian eksekusi saja:

      rsync -rvz --rsh="/usr/bin/sshpass -p kata_sandi ssh -o StrictHostKeyChecking=no -l nama_user" server_asal  server_tujuan

      Kalau tanpa password bisa pakai SSH Key, mungkin akan saya bahas masing – masing secara mendalam kedepannya. 😉

      1. Hehe, saya jelaskan dulu ya singkatnya:

        • -a itu arsip, selain otomatis rekursi (-r) juga seluruh konfigurasi ownership dan permissions akan tetap. Cocok buat localhost tapi sebaiknya jangan kalau antar server, takutnya jadi bermasalah kalau user atau group yang digunakan tidak sama.
        • -v itu maksudnya verbose atau cerewet. Haha. 😀 Jadi proses rsync akan ditampilkan sejelas mungkin pada layar nantinya. Kebalikannya biasa ada mode silent.
        • -z fungsinya agar proses transfer data akan dikompresi dengan zip (atau gzip ya?). Jadi lebih kecil lagi bandwidth yang mungkin dibutuhkan. Kalau ga salah bisa dilihat dari pesan speedupnya berapa kali.
        • -h manfaatnya agar angka – angka yang muncul bisa dipahami oleh manusia. Jadi seperti ukuran misal tanpa ini bisa jadi bukan 100MB tapi 100000000 saja.
    1. Ahaha… saya cuma mengenalkan rsync mbak, terimakasih banyak juga buat followup usahanya rsync antar VPS tanpa password. 🙂

      Tapi saya sarankan parameter -a yang kalau masih digunakan pada scriptnya dihapus. Itu fungsinya setara dengan -r (rekursi semua folder dan file) tapi bedanya ownership dan permission juga diikutkan. Biasanya kalau sudah beda server strukturnya bisa lain.

      1. Trims followupnya mbak. Saya baru kepikiran, ini backup rsync apa ga bahaya kalau bisa diakses publik? Atau lokasinya dipassword dengan htpasswd?

  1. lebih bagus mana dengan unison mas?
    kalau baca-baca(teorinya) sih katanya lebih bagus unison ya dibanding rsync? terutama bidirectionalnya. gimana menurut pengalaman mas

    1. Kalau urusan bidirectionalnya sih iya mas. Tapi untuk urusan backup/replikasi lebih baik unidirectional saja. Kalau 2 arah, memang modifikasi yang berbeda pada 2 tempat bisa digabung. Tapi kalau salah satu tempat bermasalah, dan ini disinkronkan maka satu – satunya tempat yang masih ada datanya bisa jadi nihil juga.

      Opini saja sih, bisa dikoreksi juga. 🙂

  2. gini mas, saya lagi riset tentang best presticenya replication baik database sma file sy pake cronjob utk menjalankn tiap 3 menit. menurut mas nih sy punya 2 server dgn lb haproxy utk bespricetcenya kira pake apa supaya bisa jadi 1. di cluster tdk mgkn krn bos g mau nanti ada masalah pd salah satu server trs file atau database corrupt. mnrt mas bagaimana?

    1. Best Practice ya mas maksudnya?

      Ini situasional tergantung struktur web applicationnya, kebutuhannya dan infrastrukturnya.

      Soal corrupt memang tidak ada sistem backup/sinkronisasi offsite, bukan pada kedua server itu maksudnya, di 1 server sendiri.

  3. Setelah semua data ter-copy ke server tujuan kenapa gak bisa dibuka ya menggunakan FTP? Katanya permission denied
    Error: Failed to retrieve directory listing

Tinggalkan Balasan ke Chandra Batalkan balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *