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.
1 | apt install unison |
Sinkronisasi Antar Folder
Membuat dua folder.
1 | mkdir folder1 folder2 |
Membuat 3 file di dalam folder1.
1 | touch folder1/f1-data{1..3}.txt |
Mengecek isi folder1.
1 2 3 4 5 | ls -l folder1 -rw-r--r-- 1 root root 0 Apr 8 08:07 f1-data1.txt -rw-r--r-- 1 root root 0 Apr 8 08:07 f1-data2.txt -rw-r--r-- 1 root root 0 Apr 8 08:07 f1-data3.txt |
Sinkronisasi folder1 dengan folder2.
1 | unison folder1 folder2 |
Tampil pertanyaan.
1 | Press return to continue.[<spc>] |
Tekan ENTER.
Dilanjutkan proses sinkronisasi dari folder1 ke (—->) folder2, jawab f.
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.
1 | Proceed with propagating updates? [] |
Jawab y.
Mengecek isi folder2, apakah file dari folder1 sudah tersinkronisasi ke folder2.
1 2 3 4 5 | ls -l folder2 -rw-r--r-- 1 root root 0 Apr 8 08:13 f1-data1.txt -rw-r--r-- 1 root root 0 Apr 8 08:13 f1-data2.txt -rw-r--r-- 1 root root 0 Apr 8 08:13 f1-data3.txt |
Membuat 1 file baru di folder2.
1 | touch folder2/f2-data1.txt |
Jalankan sinkronisasi.
1 | unison folder1 folder2 |
File f2-data1.txt disinkronisasi ke folder1.
Mengecek isi folder1, apakah f2-data1.txt sudah ada.
1 2 3 4 5 6 | ls -l folder1 -rw-r--r-- 1 root root 0 Apr 8 08:12 f1-data1.txt -rw-r--r-- 1 root root 0 Apr 8 08:12 f1-data2.txt -rw-r--r-- 1 root root 0 Apr 8 08:12 f1-data3.txt -rw-r--r-- 1 root root 0 Apr 8 08:16 f2-data1.txt |
Menambahkan teks ke dalam file f1-data1.txt yang berada di dalam folder2.
1 | echo "ini teks dari folder2" > folder2/f1-data1.txt |
Jalankan sinkronisasi.
1 | unison folder1 folder2 |
Tampilkan isi dari file f1-data1.txt yang berada di folder1, untuk memastikan file sudah tersinkronisasi.
1 | cat folder1/f1-data1.txt |
Menghapus file f1-data3.txt yang berada di dalam folder2.
1 | rm folder2/f1-data3.txt |
Jalankan sinkronisasi.
1 | unison folder1 folder2 |
Mengecek isi folder1, apakah file f1-data3.txt sudah terhapus.
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 0 Apr 8 08:12 f1-data2.txt -rw-r--r-- 1 root root 0 Apr 8 08:16 f2-data1.txt |
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.
- server01 = 128.199.153.187
- server02 = 128.199.208.184
Install Unison dan Apache
Install unison dan Apache di kedua server.
1 | apt install unison apache2 -y |
Membuat 3 file di server01.
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.
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.
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 Number of key(s) added: 1 and check to make sure that only the key(s) you wanted were added. |
Tes login SSH dengan key.
1 | ssh root@128.199.208.184 |
Membuat Unison Profile
Membuat file Unison profile yang berisi konfigurasi sinkronisasi.
1 | nano ~/.unison/web.prf |
Isi dari file web.prf.
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.
1 | unison web.prf |
Cek isi folder /var/www/html di server02, apakah sudah tersinkronisasi.
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 0 Apr 9 00:13 srv01-file1.html -rw-r--r-- 1 www-data www-data 0 Apr 9 00:13 srv01-file2.html -rw-r--r-- 1 www-data www-data 0 Apr 9 00:13 srv01-file3.html |
Membuat file di server02.
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.
Tambahkan teks di dalam file srv02-file1.html di server02.
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.
Menghapus file srv02-file3.html di server02.
1 | rm /var/www/html/srv02-file3.html |
Jalankan kembali unison, lalu cek di server01 apakah file yang dihapus di server02 sudah tersinkronisasi.
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.
1 | crontab -e |
Jalankan unison setiap 5 menit.
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.