RSYNC untuk sinkronisasi dan backup file di Ubuntu Server 22.04 LTS

Kebutuhan atas pengamanan sebuah data adalah sesuatu yang sangat diperlukan pada sebuah server maupun storage data. Atas dasar keamanan data inilah perlunya dilakukan backup, siknronisasi maupun sentralisasi data.

Dalam suatu kasus, dimana seorang system administrator akan melakukan backup melalui protocol FTP/SFTP. Yang artinya proses backup ini akan dilakukan secara manual dengan mendownload langsung ke server. Hal tersebut wajar dan memang menjadi sebuah keharusan bagi system administrator untuk mencadangkan data. Namun akan menjadi kesulitan jika prosec backup / mencadangkan data ini hanya bisa dilakukan pada waktu waktu tertentu, seperti pada tengah malam saat pergantian tanggal dan waktu. Atau proses pencadangan ini dilakukan secara serentak untuk berbagai macam server yang dikelolanya. Kasus kasus stersebut akan sangat membuat pusih dan menyusahkan. Rsync adalah salah satu solusinya untuk membuat proses pencadangan ini lebih mudah.

RSYNC

Rsync adalah sebuat tools pada sistem berbasis linux/unix yang difungsikan untuk sinkronisasi juga backup data pada ruang lingkup local mapun pada server atau host lainnya yang bisa terhubung melalui jaringan.

Pada tulisan ini, saya akan membahas rsync secara singkat sesuai dengan kebutuhan yang sering dipakai dalam pengoperasian dan pengamanan data pada server Ubuntu 22.04 LTS. Dengan berbagai contoh kebutuhan dasar, hingga kebutuhan yang cukup kompleks. Namun terlepas dari ini, rsync pun dapat digunakan pada RHEL, FreeBSD, Debian maunpun MacOS.

INSTALLASI

Untuk melakukan installasi, pastikan ubuntu server kalian sudah melakukan update dan upgrade package dengan versi terbaru. Lakukan perintah dibawah ini untuk update dan upgrade.

# apt-get update

# apt-get upgrade

Installasinya cukup mudah, dan pastikan setelah installasi kita cek versinya dari rsync yang telah kita install.

# apt-get install rsync

# rsync --version

rsync  version 3.2.3  protocol version 31
Copyright (C) 1996-2020 by Andrew Tridgell, Wayne Davison, and others.
Web site: https://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, hardlink-specials, symlinks, IPv6, atimes,
    batchfiles, inplace, append, ACLs, xattrs, optional protect-args, iconv,
    symtimes, prealloc, stop-at, no crtimes
Optimizations:
    SIMD, no asm, openssl-crypto
Checksum list:
    xxh128 xxh3 xxh64 (xxhash) md5 md4 none
Compress list:
    zstd lz4 zlibx zlib none

rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU

Jika membutuhkan informasi dan dokumentasi terkait rsync, kamu bisa membaca baca manual dokumentasinya dengan mengetikkan.

# man rsync

METODE

  1. Local : metode sync yang dilakukan pada host yang sama ( server local itu sendiri )
  2. Pull : metode sync secara remote dari host lain ke host local ( ambil dari server ke local )
  3. Push : metode sync dari local dikirim ke host server ( kirim dari locak ke server )

CARA MENGGUNAKAN

Rsync Local, secara umum rumus dasarnya adalah ” rsync -a /sourceawal/ /tujuan/ . Sebagai contoh, ingin melakukan sinkronisasi dari directori /var/www/html/web1 kedalam directori /backup/web1 , maka kodenya adalah sebagai berikut.

# rsync -a /var/www/html/web1/ /backup/web1/

Kode diatas jika dijalankan akan melakukan sikronisasi semua file yang berada didalam sub directori /var/www/html/web1/ ke direktori tujuan. Yang artinya hanya file yang terjadi penambahan saja yang akan disinkronisasikan.

# rsync -a /var/www/html/web1 /backup/web1

Berbeda dengan kode di atas, untuk directory yang dimaksud tanpa menggunakan garis miring “/”, maka semua file dari /web1 akan digandakan seutuhnya walau pada direktori tujuan sudah ada file yang sama, dengan ukuran dan permisiion yang sama. Hal tersebut akan cukup sia sia dan membuang waktu, resource dan memory saat kode tersebut dieksekusi.

Untuk metode sync Pull dan Push juga hampir mirip tapi akan ada bebrapa option tambahan yang perlu dilakukan. Untuk memudahkan dalam tahapan selanjutnya, ketika melakukan rsync terhadap server. Alangkah baiknya kita sudah menginstall ssh key pair, yang berguna untuk pairing antar host server. Namun jika belum silahkan simak cara dibawah ini terlebih dahulu denga login menggunakan user root.

Membuat ssh key

Ketikakan perintah berikut setelah login menggunakan root. Kemudian enter sampai psoses selesai maka kalian akan memiliki dua buah file bernama id_rsa dan id_rsa.pub .

# ssh-keygen -b 2048 -t rsa

The key fingerprint is:
SHA256:S602oFcw4Iy8TsKOnq5scE4dQxM+ySH7XP4pskSgwio root@mainserver
The key's randomart image is:
+---[RSA 2048]----+
|  . =o.          |
|.. Xo*           |
|..=.O.=          |
|o. +o= + .       |
|E.o.oo= S .      |
|=+o .+ + o       |
|o=. . + =        |
|o.o  o . .       |
|==               |
+----[SHA256]-----+

Setelah itu kita perlu mendaftarkan id_rsa.pub kita ke server yang akan menjadi tujuan. Maksudnya adalah agar kita akan terhubung dengan server tanpa perlu login ssh setiap kali ingin menjalankan rsync ke server.

ssh-copy-id -i id_rsa.pub root@ip-server
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub"
/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@ip-server's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@ip-server'"
and check to make sure that only the key(s) you wanted were added.

Sudah dapat dipastikan selanjutnya kita bisa login ssh ke server tanpa mengetikkan password, akrena key ssh yang sudah kita buat sudah terdaftar pada sever. Silahkan coba perintah berikut untuk mencoba login ssh.

# ssh root@-ipserver

Rsync Remote Pull, digunakan untuk melakukan sinkronasi dari server ke lokal. Cukup ketikkan perintah berikut.

# rsync -avzh root@ip-server:/var/www/html/web1/ /backup/web1/

Rsync Remote Push, digunakan untuk melakukan sinkronisasi dari local ke server. Cukup ketiikan perintah dibawah ini.

# rsync -avzh /backup/web1/ root@ip-server:/var/www/html/web1/ 

Opsi DELETE

Ada sebuah opsi lain, yang befungsi untuk menghapus file hasil atau yang akan di sinkronisasi. Ada kasus dimana kita melakukan sinkronisasi, namu pada sumber asli ( server ) file tersebut sudah di hapus namun pada lokal atau backup file tersebut masih ada. Dengan begini, walau proses sinkronisasi berjalan dan terjadi, nyatanya kedua file tidak memiliki kesamaan antara local dan server. Solusinya adalah kita perlu melakukan penghapusan, dengan cara menambahkan opsi delete pada kode kita.

### ketika server di hapus, lokal ikut terhapus
# rsync -avzh root@ip-server:/var/www/html/web1/ /backup/web1/ --delete

### ketika lokal di hapus, server akan ikut terhapus
# rsync -avzh /backup/web1/ root@ip-server:/var/www/html/web1/ --delete

Secara garis besar, kode perintah diatas sudah cukup mewakili kebutuhan dasar yang akan diperlukan oleh system administrator. Namun untuk kemampuan otomatis yang lebih kita perlu mengintergrasikannya dengan Cron agar bisa berjalan dengan terjadwal. Sebagai contoh kita perlu melakukan sinkronisasi setiap tengah malam.

Tambahkan bari dibawah pada cronjob.

# 0 0 * * * rsync -avzh root@ip-server:/var/www/html/web1/ /backup/web1/

Semoga bermanfaat 🙂

Add a Comment

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