Ada banyak sekali cara yang dapat dilakukan untuk memindahkan atau mentransfer file maupun folder (direktori) dari satu server ke server lainnya. Sebut saja dengan menggunakan wget atau ftp client yang biasa digunakan oleh kebanyakan orang. Namun, tahukah anda bahwa sebenarnya ada cara yang lebih mudah dan efektif untuk melakukan proses transfer file atau direktori tersebut, yaitu dengan menggunakan Rsync.
Pengertian dan Fungsi Rsync
Rsync adalah tool untuk melakukan transfer atau sinkronisasi file dan struktur direktori beserta isinya (tree) secara satu arah, baik di PC yang sama maupun antar PC yang berbeda yang berada dalam suatu jaringan. Fungsi Rsync ini sangat mirip sekali dengan fungsi scp, mv, cp dan ftp client, serta dapat juga diatur sebagai daemon dan menggantikan HTTP client seperti wget.
Kenapa harus menggunakan Rsync?
Sebenarnya tidak harus menggunakan Rsync apabila anda ingin mentransfer atau memindahkan file. Seperti yang saya utarakan diatas bahwa banyak sekali cara yang dapat anda pilih, tapi dari kesekian banyak cara yang dapat digunakan, Rsync adalah cara yang paling efektif, efisien dan fleksibel.
Berikut adalah beberapa kelebihan Rsync jika dibandingkan tools yang sejenis :
- Lebih Cepat
Bagi anda yang pernah menggunakan FTP atau SCP, mungkin anda pernah merasa kesal pada saat menunggu proses transfer filenya yang sangat lama, meskipun sebenarnya koneksi internet anda cepat, secepat kilat. Setidaknya, itulah yang pernah saya alami ketika menggunakan 2 tools tersebut untuk mentransfer file dari komputer lokal saya ke dalam komputer server.Hal yang berbeda justru saya alami ketika melakukan transfer file dengan menggunakan Rsync. Seluruh folder (direktori) berikut file-file dan sub-sub direktori yang terdapat pada direktori tersebut dapat ditransfer dengan sangat cepat, walaupun ukuran direktorinya lumayan besar.Semua itu dapat terjadi dikarenakan Rsync dapat melakukan pipelining. Pipelining adalah teknik yang digunakan untuk merealisasi Parallel Processing, yaitu dengan membagi operasi ke dalam k-stage (beberapa tingkatan) atau sub-operasi, sehingga pada satu saat ada k operasi berjalan yang sekaligus. Dengan pipelening ini, maka pekerjaan yang dilakukan oleh Rysnc jauh lebih cepat dan lebih efektif jika dibandingkan pekerjaan yang dilakukan oleh FTP atau SCP yang tidak dapat melakukan pipelening.
- Hemat Bandwidth
Bagi anda yang menggunakan jaringan internet pasti selalu memikirkan bandwidth atau kuota. Meskipun bandwidth anda cukup melimpah, tapi jika ada cara untuk menghemat bandwidth tersebut kenapa tidak?.Rsync mempunyai alogaritma khusus yang disebut dengan alogaritma Rsync. Alogaritma ini berguna untuk melakukan pengecekan perbandingan checksum terhadap blok-blok dalam file di kedua sisi, baik sisi pengirim maupun sisi penerima.Misalnya, pada saat anda ingin mengirim file, tapi ternyata file tersebut sudah ada di pihak (path) penerima dengan versi yang berbeda (misalnya ukurannya lebih kecil atau lebih besar atau terdapat perbedaan karena versinya lebih lama), maka Rsync hanya akan mengirimkan seberapa besar perbedaan tersebut, sehingga dengan cara seperti ini yang akan lebih dapat menghemat bandwidth internet anda.
- Lebih Fleksibel
Rsync dapat digunakan sesuai dengan keperluan anda. Rsync bukan hanya dapat mentransfer satu file saja, tapi Rsync juga dapat mentransfer seluruh direktori, sub direktori dan file-file, bahkan Rsync juga dapat mentransfer owner (user, grup), permission, date created, ACL, dan lain sebagainya.
Cara Menggunakan Rsync
Pada dasarnya struktur perintah Rsync tidak jauh berbeda dengan perintah cp atau mv. Perhatikan struktur perintahnya dibawah ini :
rsync opsi source destination
Adapun opsi-opsi yang biasa digunakan di Rsync adalah sebagai berikut :
- -a (archive mode)
Opsi ini digunakan pada saat anda ingin mentransfer atau menyalin data secara recursive (dan juga menjaga/mengikutkan symbolic links, hak akses file, kepemilikan (user dan grup) dan timestamp. Opsi ini adalah opsi yang paling kumplit, namun apabila anda hanya ingin mentransfer datanya saja, maka jangan pernah anda gunakan opsi ini. - -r (recursive mode)
Opsi ini digunakan pada saat anda ingin mentransfer atau menyalin data secara secursive dengan tanpa mengikutkan link simbolik, hak akses, kepemilikan dan timestamp yang terdapat pada data tersebut. - -v (verbose)
Opsi ini digunakan untuk membuat tampilan di layar tentang informasi file atau data-data yang sedang di transfer. Dengan menambahkan opsi ini, maka anda akan melihat file-file mana saja yang sudah berhasil di transfer dan berapa ukurannya. - -z (compress)
Opsi ini digunakan untuk mengkompress data yang akan ditransfer, oleh karena proses kompress ini, maka proses transfer Rsync bisa lebih praktis dan hemat bandwidth.
Berikut adalah contoh penggunaan Rsync :
- Contoh penggunaan Rsync untuk transfer dalam satu PC (lokal ke lokal) :
rsync -av -P /lokasi/sumber /lokasi/tujuan
Misalnya anda ingin menyalin direktori /var/www/dedeerik.com/ ke /usr/share/, maka perintah yang anda gunakan adalah :
rsync -av -P /var/www/dedeerik.com /usr/share
- Contoh penggunaan Rsync untuk transfer dari komputer lokal ke komputer remote dengan menggunakan SSH :
rsync -e ssh -av -P -z /lokasi/sumber user@host:/lokasi/tujuan
Proses transfer dari komputer lokal ke komputer remote ini bisa juga disebut dengan proses upload atau proses pengunggahan file atau direktori dari satu komputer ke komputer lainnya melalui jaringan. Cara inilah yang sebenarnya menjadi ini dari artikel yang saya buat ini.
Misalnya saya ingin mentransfer file yang ada di direktori /var/www/dedeerik.com ke server saya yang lain (dengan IP 49.213.16.109) dan akan diletakan di /usr/share/, maka perintahnya :
rsync -e ssh -av -P -z /var/www/dedeerik.com [email protected]:/usr/share/
Dengan perintah diatas, maka direktori dedeerik.com beserta file-file yang ada didalamnya akan ditransfer ke server 49.213.16.109 dan diletakan di path /usr/share/ di server tujuan tersebut. Jika ada konfirmasi atau pertanyaan permanently added bla bla bla setelah anda memberikan command diatas, silahkan ketik saja yes, lalu masukkan password user (root) server tujuan. Hal tersebut penting dilakukan, agar proses transfer dapat berjalan sesuai dengan yang anda harapkan. Jika anda tidak memasukkan atau salah memasukkan password, maka proses transfer ke server tujuan tidak akan dapat dilakukan (gagal). - Contoh penggunaan Rsync untuk transfer dari komputer remote ke komputer lokal dengan menggunakan SSH :
rsync -e ssh -av -P -z user@host:/lokasi/sumber /lokasi/penyimpanan
Jika pada contoh nomor 2 diatas prosesnya mirip dengan proses upload, maka pada contoh ketiga ini prosesnya lebih mirip dengan proses download yaitu proses mengunduh file dari komputer satu (remote) ke komputer lokal yang sedang anda gunakan.
Misalnya saja anda sudah login dalam server (VPS) pertama, kemudian anda membutuhkan sebuah data yang ternyata data tersebut berada di /var/www/dedeerik.com dalam server yang kedua (misal server kedua tersebut memiliki IP 185.106.122.114). Maka melalui Rsync ini, anda tidak perlu membuka server kedua dan melakukan proses transfer dari server yang kedua tersebut. Anda cukup memberikan command dibawah ini, maka data yang berada di /var/www/dedeerik.com dalam server kedua akan dapat anda ambil dengan mudah :
rsync -e ssh -av -P -z [email protected]:/var/www/dedeerik.com /var/www
Dengan command diatas, maka seluruh data yang berada di direktori /var/www/dedeerik.com pada server kedua akan otomatis tersalin ke direktori /var/www di VPS pertama (yang sedang digunakan). Jangan lupa pada saat diminta untuk memasukkan password, silahkan masukkan password server kedua anda dengan benar. Jika anda salah memasukkan password, maka akan ada pesan error pipelening.
Diatas hanyalah contoh dasar penggunaan Rsync yang paling populer. Tentu saja, anda bisa memodifikasi perintah-perintah diatas sesuai dengan kebutuhan anda. Silahkan anda rubah saja pada bagian opsi, path direktori atau file sumber serta path tujuannya.
Satu hal yang harus anda perhatikan adalah pada penggunaan garis miring. Dalam Rsync, garis miring (penutup) mempunyai arti tertentu. Misalnya saya mempunyai satu direktori yaitu dedeerik.com (/var/www/dedeerik.com) yang isinya terdapat file a, file b dan file c. Maka :
- Pada saat anda transfer ke server lain dengan tanpa menggunakan garis miring diujung, contoh command :
rsync -av -P /var/www/dedeerik.com /usr/share/
Direktori dedeerik.com akan ikut tertransfer ke /usr/share/ berikut dengan file-file yang ada di dalam direktori dedeerik.com tersebut.
- Sedangkan apabila anda menggunakan garis miring diujung (perhatikan garis miring setelah dedeerik.com) seperti berikut ini :
rsync -av -P /var/www/dedeerik.com/ /usr/share/
Direktori dedeerik.com tidak akan ikut tertransfer ke patch tujuan (/usr/share/). Anda hanya mentransfer file a, file b dan file c kedalam direktori /usr/share/ saja.
- Jika anda ingin merubah nama direktori yang anda kirim pada path yang dituju, silahkan berikan command seperti berikut :
rsync -av -P /var/www/dedeerik.com /usr/share/namabaru
Dengan command diatas, maka direktori dedeerik.com akan berganti nama menjadi direktori namabaru pada path yang dituju, sedangkan file-file yang dari awal berada dalam direktori dedeerik.com, tidak akan berganti nama.
Penggunaan dan penghilangan garis miring serta penggantian nama direktori seperti diatas dapat juga anda aplikasikan pada saat anda mentransfer file atau direktori dari satu sever ke server yang lain.
Untuk memastikan apakah direktori yang disalin sudah berganti nama atau belum, silahkan anda masuk ke path yang dituju dengan menggunakan cd /path/tujuan/, lalu gunakan perintah ls untuk melihat daftar file atau direktori yang ada.
Demikian kiranya sedikit bahasan tentang pengertian, fungsi dan cara-cara dasar menggunakan Rsync untuk berbagai keperluan, terutama untuk mempermudah mentransfer file dari satu server ke server yang lain. Saya rasa anda akan sangat mudah dalam memahaminya, terutama bagi yang sudah sedikit banyak memahami perintah dasar linux.