1

Centos 7 – Sinkronisasi file dan folder dari server A ke server B secara realtime

Baru-baru ini gue belajar bgaimana cara men-sinkronisasikan file&folder dari satu server centos7(kita sebut A) ke server centos7 yg lainnya(sebut B). Jadi ketika server A ada file yang baru dibuat, maka otomatis akan tercopy juga ke server B, ketika server A ada folder yg dihapus, maka di server B juga akan terhapus.. itulah yg namanya sinkronisasi.. hehe. Terus gimana sih caranya sinkronisasi antar 2 server yg berbeda? Hm, kita bisa pakai aplikasi yg namanya Rsync dan Inotify (dua aplikasi ini bersifat CLI, jd bukan GUI). Kedua aplikasi ini musti digunakan, wajib. Kenapa wajib? karena aplikasinya saling berkaitan. Gue jelasin nih masing-masing fungsinya :

Rsync
Aplikasi untuk sinkronisasi file/folder dari satu server ke server yang berbeda. Jadi misal ada file baru di server A, maka tinggal jalankan script rynsc dan file tsb akan tercopy ke server B. Beres!
Tapi sayangnya, Rsync gak bisa mensinkronisasi secara realtime. Jadi ketika ada perubahan file lagi pada server, kita harus menjalankan ulang script rsync lewat CLI secara manual. Kalau ada 1 file yg berubah sih gak masalah, tapi klo yang berubah ada 1000? Repot nih bay.
Inotify:
Aplikasi untuk memonitoring perubahan file/folder secara realtime. Jika ada perubahan file/folder, maka akan terdeteksi lewat inotify. Mantep.. Hm, tp sayangnya dia cuma bisa memonitoring file/folder aja, gak bisa melakukan copy file (Sinkronisasi) ke server lain. Jadi cuma memonitor doank. Huah sayang sekali.

Untuk itulah kita perlu 2 aplikasi tsb, Inotify untuk memantau perubahan file, sementara Rsync melakukan sinkronisasi(copy file) ke server lain jika Inotify mendeteksi adanya perubahan file.

Baiklah, ditutorial ini kita akan coba melakukan sinkronisasi dari server A (192.168.56.101) ke server B(192.168.56.102).

Berikut adalah summary tutorialnya :
1) buat folder yang akan disinkronisasikan
2) install rsync, buat script rsync, setting SSH
3) install inotify, buat script inotify
4) gabungin script inotify dan rsync, lalu jalankan secara bersamaan
5) autostart script inotify dan rsync saat komputer restart

Yuk mari kita mulai ..

1. Buat folder untuk sinkronisasi

Pertama, buat 2 folder.
1 folder di server A (192.168.56.101), 1 lagi di server B (192.168.56.102).

Buat folder di server A :

sudo mkdir -m 777 /home/mokos/Documents/sync_a/

ganti mokos dengan nama user kamu.

Buat folder di server B :

sudo mkdir -m 777 /home/ambarhasbiyatmoko/Documents/sync_b/

ganti ambarhasbiyatmoko dengan nama user kamu.

2. Install Rsync, buat script Rsync, setting SSH

Selanjutnya kita masuk ke server A dulu :), lakukan step dibawah ini ..

– Install Rsync di server A dengan script :
sudo yum install rsync
– Setelah terinstall, kita buat script rsync.sh :
sudo touch /home/mokos/Documents/rsync.sh
sudo chmod 777 /home/mokos/Documents/rsync.sh

Kemudian masukkan script berikut ke rsync.sh :

#!bin/bash
rsync -a /home/mokos/Documents/sync_a/ root@192.168.56.102:/home/ambarhasbiyatmoko/Documents/sync_b/ --delete

Keterangan :
Rsync akan melakukan sinkronisasi dari folder sync_a(192.168.56.101) ke folder sync_b(192.168.56.102). Terdapat script root@192.168.56.102 diatas, artinya sinkronisasi dilakukan melalui SSH. Jadi langkah selanjutnya kita setting SSH dulu.

– Setting SSH

Setting SSH yg dimaksud disini adalah, menseting agar user bisa login SSH tanpa password. Jadi nanti server A akan login SSH ke server B tanpa password. Ini diperlukan supaya aplikasi Rsync bisa leluasa menyinkronisasikan file ke server B tanpa halangan password.
Berikut cara setting SSH :

Konfigusi di server A :

1) Masih di server A, pastikan kita sudah login ke user root :

su - root

2) Abis itu, buat keygen SSH :

ssh-keygen -t rsa

Jika ada notifikasi, enter enter aja, sampe selesai.
Saat script diatas akan menggenerate file id_rsa.pub.

3) Masih di server A, buat folder .ssh di server B.

ssh root@192.168.56.102 mkdir -p .ssh

Jika muncul yes/no. Pilih yes, trus enter.
Nanti dia minta password. Masukkin password root server B.

4) Copy file id_rsa.pub yang sudah dibuat pada tahap 1, ke server B :

cat .ssh/id_rsa.pub | ssh root@192.168.56.102 'cat >> .ssh/authorized_keys'

Jika minta password lagi, masukkan password root server B.

5) Set permission folder .ssh :

ssh root@192.168.56.102 "chmod 700 .ssh; chmod 640 .ssh/authorized_keys"

6) Sekarang tinggal testing login SSH ke server B.

ssh root@192.168.56.102

Lihat, tidak ada inputan password saat login SSH.

[root@localhost ~]#ssh root@192.168.56.102
Last Login: Fri Jan

Mantap.

– Testing rsync.sh

Setelah berhasil setting SSH, sekarang saatnya menjalankan file rsync.sh.

1) Pada server A, buat sebuah folder “test” di dlm folder sync_a.
2) Buka terminal, ketikkan :

/home/mokos/Documents/rsync.sh

Script diatas akan mensinkronisasikan folder “test” dari server A, ke server B.
3) Sekarang lihat folder sync_b pada server B. Akan ada folder “test” juga.

Mantap!

Urusan setting aplikasi Rsync sudah sampai sini, selanjutnya kita masuk ke aplikasi Inotify.

3. Install Inotify, buat script Inotify

Masih di server A, masuk sebagai user root

sudo yum install gcc make
Install Inotify

Setelah itu download aplikasi inotify :

wget http://jensd.be/download/inotify-tools-3.14.tar.gz

Lalu ektrak :

tar -xvzf inotify-tools-3.14.tar.gz

Masuk ke folder inotify :

cd inotify-tools-3.14

Konfigurasi dulu inotify sebelum diinstal :

./configure

Baru setelah itu kita install inotify :

make
sudo make install

Cek inotify bahwa sudah terinstall :

ls -l /usr/local/bin/inotify*

hasilnya :

-rwxr-xr-x. 1 root root 60892 Jan 6 15:14 /usr/local/bin/inotifywait
-rwxr-xr-x. 1 root root 55183 Jan 6 15:14 /usr/local/bin/inotifywatch
Buat Script Inotify

Langkah selanjutnya membuat script inotify.
Disini kita akan mengetes untuk memonitoring folder sync_a pada server A.

Masih di server A, buka terminal lalu jalankan script berikut :

inotifywait -r -e close_write,delete,move /home/mokos/Documents/sync_a

Keterangan :
-r artinya recursive
-e artinya event, kita pakai event close_write,delete,move

Jika script diatas dijalankan, maka Inotify akan aktif secara realtime :
inotify run in terminal centos 7

Sekarang coba buat folder “test_2” didalam folder sync_a, maka otomatis aplikasi Inotify akan mendeteksi bahwa ada folder baru.
inotify in centos 7

Yup, urusan Inotify dah sampai sini, sekarang lanjut ke cara menggabungkan script Rsync dan Inotify.

4. Menggabungkan script Rsync dan Inotify, lalu menjalankannya bersamaan

Sebelumya kita sudah membuat script Rsync :

#!bin/bash
rsync -a /home/mokos/Documents/sync_a/ root@192.168.56.102:/home/ambarhasbiyatmoko/Documents/sync_b/ --delete

Dan script Inotify :

inotifywait -r -e close_write,delete,move /home/mokos/Documents/sync_a/

Sekarang tinggal kita gabungan scriptnya.
Masih di server A(jgn lupa login sbg user root), buka file rsync.sh tadi, lalu pastekan script berikut :

#!/bin/bash
while inotifywait -r -e close_write,delete,move /home/mokos/Documents/sync_a/; do
	rsync -a /home/mokos/Documents/sync_a/ root@192.168.56.102:/home/ambarhasbiyatmoko/Documents/sync_b --delete
done &

exit 0

Keterangan :
di atas terdapat while, artinya inotifywait akan memonitoring file&folder secara berulang-ulang(looping). Jika Inotifywait menemukan adanya perubahan file/folder, otomatis script rsync -a /home/mokos/Documents/sync_a/ akan dijalankan, dan otomatis sinkronisasi dilakukan ke server B.

Sebagai contoh, coba kita test..
– Jalankan dulu script rsync.sh

/home/mokos/Documents/rsync.sh

– Lalu buat folder “test_3” didalam folder “sync_a”.
– Otomatis folder “test_3” akan tersinkronisasi juga ke folder “sync_b” pada server B 🙂
inotify and rsync run both on centos 7

Mantep kan? Bisa sinkronisasi secara realtime.. Hehe.
Udah, segitu dulu tutorialnya.. moga bermanfaat ..

Wassalamualaikum..

[related_post themes="text" id="4945"]

Ambar Hasbiyatmoko

Hello, I'm web developer. Passionate about programming, networking and web server. @kaskus  @facebook

One Comment

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.