Cara Sinkronisasi File dengan Unison

Unison adalah sebuah tool untuk melakukan sinkronisasi file yang mendukung dua arah sinkronisasi, tersedia untuk sistem operasi Linux, OS X, Unix serta Windows. Unison dikembangkan oleh Benjamin C. Pierce, seorang profesor ilmu komputer di Universitas Pennsylvania, dan bersama kontributor lainnya di GitHub.

*Install Unison*

Install Unison di Ubuntu.

[INPUT]

1 apt install unison

*Sinkronisasi Antar Folder*

Membuat dua folder.

[INPUT]

1 mkdir folder1 folder2

Membuat 3 file di dalam folder1.

[INPUT]

1 touch folder1/f1-data{1..3}.txt

Mengecek isi folder1.

[INPUT]

1 2 3 4 5 ls -l folder1   -rw-r–r– 1 root root Apr  8 08:07 f1-data1.txt -rw-r–r– 1 root root Apr  8 08:07 f1-data2.txt -rw-r–r– 1 root root Apr  8 08:07 f1-data3.txt

Sinkronisasi folder1 dengan folder2.

[INPUT]

1 unison folder1 folder2

Tampil pertanyaan.

[INPUT]

1 Press return to continue.[]

Tekan ENTER.

Menjalankan Unison pertama kali

Dilanjutkan proses sinkronisasi dari folder1 ke (—->) folder2, jawab f.

[INPUT]

1 2 3 4 folder1        folder2             file     —->            f1-data1.txt  [f] f file     —->            f1-data2.txt  [f] f file     —->            f1-data3.txt  [f] f

Tampil pertanyaan.

[INPUT]

1 Proceed with propagating updates?

[]Jawab y.

Unison synchronization

Mengecek isi folder2, apakah file dari folder1 sudah tersinkronisasi ke folder2.

[INPUT]

1 2 3 4 5 ls -l folder2   -rw-r–r– 1 root root Apr  8 08:13 f1-data1.txt -rw-r–r– 1 root root Apr  8 08:13 f1-data2.txt -rw-r–r– 1 root root Apr  8 08:13 f1-data3.txt

Membuat 1 file baru di folder2.

[INPUT]

1 touch folder2/f2-data1.txt

Jalankan sinkronisasi.

[INPUT]

1 unison folder1 folder2

File f2-data1.txt disinkronisasi ke folder1.

Sinkronisasi file baru

Mengecek isi folder1, apakah f2-data1.txt sudah ada.

[INPUT]

1 2 3 4 5 6 ls -l folder1   -rw-r–r– 1 root root Apr  8 08:12 f1-data1.txt -rw-r–r– 1 root root Apr  8 08:12 f1-data2.txt -rw-r–r– 1 root root Apr  8 08:12 f1-data3.txt -rw-r–r– 1 root root Apr  8 08:16 f2-data1.txt

Menambahkan teks ke dalam file f1-data1.txt yang berada di dalam folder2.

[INPUT]

1 echo “ini teks dari folder2” > folder2/f1-data1.txt

Jalankan sinkronisasi.

[INPUT]

1 unison folder1 folder2

Tampilkan isi dari file f1-data1.txt yang berada di folder1, untuk memastikan file sudah tersinkronisasi.

[INPUT]

1 cat folder1/f1-data1.txt

Sinkronisasi ubah file

Menghapus file f1-data3.txt yang berada di dalam folder2.

[INPUT]

1 rm folder2/f1-data3.txt

Jalankan sinkronisasi.

[INPUT]

1 unison folder1 folder2

Mengecek isi folder1, apakah file f1-data3.txt sudah terhapus.

[INPUT]

1 2 3 4 5 ls -l folder1   -rw-r–r– 1 root root 22 Apr  8 08:20 f1-data1.txt -rw-r–r– 1 root root   Apr  8 08:12 f1-data2.txt -rw-r–r– 1 root root   Apr  8 08:16 f2-data1.txt

Sinkronisasi hapus file

*Sinkronisasi Antar Server*

Untuk sinkronisasi antar server, kita akan mencoba sinkronisasi file yang berada di folder /var/www/html.

Ada 2 server yang digunakan, keduanya memakai Ubuntu Server 20.04.

1. server01 = 128.199.153.187 2. server02 = 128.199.208.184

-Install Unison dan Apache-

Install unison dan Apache di kedua server.

[INPUT]

1 apt install unison apache2 -y

Membuat 3 file di server01.

[INPUT]

1 2 touch /var/www/html/srv01-file{1..3}.html chown -R www-data.www-data /var/www/html

-Login SSH dengan Key-

Setting server01 agar bisa login SSH ke server02 dengan menggunakan key.

*server01* Membuat key.

[INPUT]

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ssh-keygen   Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): ENTER             Enter passphrase (empty for no passphrase): ENTER Enter same passphrase again: ENTER Your identification has been saved in /root/.ssh/id_rsa Your public key has been saved in /root/.ssh/id_rsa.pub The key fingerprint is: SHA256:NLuPO/kPTk7C1vWCpmjuLqwLZ3uUygAq46iAGSyeiGs root@server01 The key’s randomart image is: +—[RSA 3072]—-+ |                 | |                 | |        o        | |o      . o       | |=.   .  S   .    | |@o. o  . o o .   | |@*o+    =.B . .  | |oEo.+ .oo@ . .   | |= ++ *= ++=..    | +—-[SHA256]—–+

Copy key ke server02.

[INPUT]

1 2 3 4 5 6 7 8 9 10 11 12 13 14 ssh-copy-id -i .ssh/id_rsa root@128.199.208.184   /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: “.ssh/id_rsa.pub” The authenticity of host ‘128.199.208.184 (128.199.208.184)’ can’t be established. ECDSA key fingerprint is SHA256:pdF1SBUoLkx/aFPZ7FDhxD3cgJCPLdqx8F+K+gJfyVc. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed — if you are prompted now it is to install the new keys root@128.199.208.184’s password:   Number of key(s) added: 1   Now try logging into the machine, with:   “ssh ‘root@128.199.208.184′” and check to make sure that only the key(s) you wanted were added.

Tes login SSH dengan key.

[INPUT]

1 ssh root@128.199.208.184

-Membuat Unison Profile-

Membuat file Unison profile yang berisi konfigurasi sinkronisasi.

[INPUT]

1 nano ~/.unison/web.prf

Isi dari file web.prf.

[INPUT]

1 2 3 4 5 6 7 8 9 10 root = /var/www/html root = ssh://128.199.208.184//var/www/html   auto=true batch=true fastcheck=true group=true owner=true prefer=newer times=true

Tes jalankan sinkronisasi dari profile web.prf.

[INPUT]

1 unison web.prf

Cek isi folder /var/www/html di server02, apakah sudah tersinkronisasi.

[INPUT]

1 2 3 4 5 6 ls -l /var/www/html   -rw-r–r– 1 www-data www-data 10918 Apr  8 23:41 index.html -rw-r–r– 1 www-data www-data     Apr  9 00:13 srv01-file1.html -rw-r–r– 1 www-data www-data     Apr  9 00:13 srv01-file2.html -rw-r–r– 1 www-data www-data     Apr  9 00:13 srv01-file3.html

Membuat file di server02.

[INPUT]

1 2 touch /var/www/html/srv02-file{1..3}.html chown -R www-data.www-data /var/www/html

Jalankan kembali unison, lalu cek di server01 apakah file yang dibuat di server02 sudah tersinkronisasi.

Sinkronisasi file baru dari server02 ke server01

Tambahkan teks di dalam file srv02-file1.html di server02.

[INPUT]

1 echo “hello world” > /var/www/html/srv02-file1.html

Jalankan kembali unison, lalu cek di server01 apakah file yang diubah di server02 sudah tersinkronisasi.

Sinkronisasi ubah file antar server dari server02 ke server01

Menghapus file srv02-file3.html di server02.

[INPUT]

1 rm /var/www/html/srv02-file3.html

Jalankan kembali unison, lalu cek di server01 apakah file yang dihapus di server02 sudah tersinkronisasi.

Sinkronisasi hapus file antar server dari server02 ke server01

*Penjadwalan Sinkronisasi*

Unison belum bisa secara otomatis melakukan sinkronisasi ketika ada perubahan file. Tapi, kita masih bisa melakukan penjadwalan sinkronisasi dengan cron job sehingga tidak perlu menjalankan unison secara manual.

Membuat cron job.

[INPUT]

1 crontab -e

Jalankan unison setiap 5 menit.

[INPUT]

1 */5 * * * * /usr/bin/unison web.prf &> /dev/null

Lakukan perubahan file dan cek kembali filenya setelah 5 menit.

Selamat mencoba 🙂

/*Gratis saldo $100 untuk pendaftaran akun baru di Vultr. Daftar di sini.*/

Leave a Reply

Your email address will not be published.