Cara Sinkronisasi Direktori Secara Real-Time di Linux

Sinkronisasi direktori di Linux dapat dilakukan dengan menggunakan *rsync*, dengan kombinasi *cronjob* sinkronisasi dapat berjalan secara otomatis pada waktu yang telah ditentukan. Namun pada situasi tertentu, kita ingin sinkronisasi berjalan secara live atau real-time ketika terjadi perubahan pada direktori atau file. Untuk kasus seperti itu kita bisa menggunakan tool *lsyncd*. lsyncd memantau perubahan pada direktori kemudian melakukan sinkronisasi ke target atau slave. Sinkronisasi hanya satu arah, dari source ke target.

-0. Instalasi lsyncd-

Di tutorial ini saya menggunakan distro Linux CentOS 7 untuk percobaan.

Instalasi lsyncd

[INPUT]

1 2 3 # yum install epel-release -y # yum install lsyncd -y # lsyncd -version

-1. Sinkronisasi di Lokal-

File konfigurasi lsyncd berada di */etc/lsyncd.conf*. Tersedia contoh konfigurasi di */usr/share/doc/lsyncd-2.2.2/examples*.

a. Satu Source Satu Target

Percobaan pertama melakukan sinkronisasi dari folder */var/www/html* ke folder */root/backup*.

Buka file konfigurasi.

[INPUT]

1 # nano /etc/lsyncd.conf

Ubah isinya menjadi seperti di bawah ini.

[INPUT]

1 2 3 4 5 6 7 8 9 10 settings { logfile = “/var/log/lsyncd/lsyncd.log”, statusFile = “/var/log/lsyncd/lsyncd.status” }   sync { default.rsync, source = “/var/www/html”, target = “/root/backup”, }

Aktifkan dan jalankan service.

[INPUT]

1 2 # systemctl enable lsyncd # systemctl start lsyncd

Sekarang uji dengan melakukan perubahan pada folder */var/www/html* dan periksa pada folder */root/backup* apakah memiliki data yang sama.

Proses sinkronisasi terjadi di background, kita dapat memeriksa sinkronisasi apa saja yang telah dilakukan dengan membaca file log */var/log/lsyncd/lsyncd.log* dan file status */var/log/lsyncd/lsyncd.status*.

Jika masih ada folder yang ingin disinkronkan, tambahkan config sync.

[INPUT]

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 settings { logfile = “/var/log/lsyncd/lsyncd.log”, statusFile = “/var/log/lsyncd/lsyncd.status” }   sync { default.rsync, source = “/root/documents/data1”, target = “/root/backup1”, }   sync { default.rsync, source = “/root/documents/data2”, target = “/root/backup2”, }   sync { default.rsync, source = “/root/documents/data3”, target = “/root/backup3”, }

Jangan lupa melakukan restart service setelah melakukan perubahan konfigurasi.

[INPUT]

1 # systemctl restart lsycnd

b. Satu Source Banyak Target

Percobaan kedua melakukan sinkronisasi dari satu sumber direktori ke lebih dari satu tujuan direktori. Target didefinisikan dalam array dan proses sinkronisasi dimasukkan ke dalam operasi pengulangan for.

[INPUT]

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 settings { logfile = “/var/log/lsyncd/lsyncd.log”, statusFile = “/var/log/lsyncd/lsyncd.status” }   targets = { ‘/root/backup1’, ‘/root/backup2’, ‘/root/backup3′, }   for _, target in ipairs( targets ) do sync { default.rsync, source=’/var/www/html’, target=target } end

c. Banyak Source Satu Target

Percobaan ketiga, banyak sumber direktori yang disinkronisasi ke satu direktori tujuan.

[INPUT]

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 settings { logfile = “/var/log/lsyncd/lsyncd.log”, statusFile = “/var/log/lsyncd/lsyncd.status” }   sources = { ‘/var/www/html’, ‘/root/data1’, ‘/root/data2′, }   for _, source in ipairs( sources ) do sync { default.rsync, source=source, target=’/root/backups’ } end

-2. Sinkronisasi ke Remote Server-

Selanjutnya sinkronisasi ke remote server. Sebelum melakukan konfigurasi lsyncd, terlebih dahulu mesin *Master* harus bisa login SSH ke *Slave* tanpa password.

Terdapat 3 mesin CentOS:

1. Master: 45.76.180.137 2. Slave 1: 149.28.153.15 3. Slave 2: 139.180.208.163

a. Satu Source Satu Target

Pada opsi *Target* dituliskan nomor IP slave beserta direktorinya. Kemudian pada opsi *rsync* dituliskan perintah *ssh* login dengan username *root* dan private key.

[INPUT]

1 2 3 4 5 6 7 8 9 10 11 settings { logfile = “/var/log/lsyncd/lsyncd.log”, statusFile = “/var/log/lsyncd/lsyncd.status” }   sync { default.rsync, source=”/var/www/html”, target=”149.28.153.15:/var/www/html”, rsync={rsh = “/usr/bin/ssh -l root -i /root/.ssh/private-key”,} }

b. Satu Source Banyak Target

[INPUT]

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 settings { logfile = “/var/log/lsyncd/lsyncd.log”, statusFile = “/var/log/lsyncd/lsyncd.status” }   targets = { ‘149.28.153.15:/var/www/html’, ‘139.180.208.163:/var/www/html’, }   for _, target in ipairs( targets ) do sync { default.rsync, source=”/var/www/html”, target=target, rsync={rsh = “/usr/bin/ssh -l root -i /root/.ssh/private-key”,} } end

selamat mencoba 🙂

Leave a Reply

Your email address will not be published.