28 July 2013

Mentransfer atau mengcopy file dengan cepat menggunakan rsync di Linux Ubuntu

Hiyaa....kita bertemu lagi di blog Tutorial Linux Ubuntu Berbahasa Indonesia. Pernah tidak anda mengalami kejadian dimana anda harus mentransfer file dari satu server ke server yang lain, dan saat anda melakukannya dengan meremote salah satu server tersebut dan melakukan transfer file dengan scp. Apa yang anda rasakan? Apakah proses tersebut berjalan seperti yang anda inginkan? Tidak tau apa yang terjadi pada anda, tapi ketika saya melakukannya remote saya terputus dan ketika saya masuk kembali proses tersebut terhenti! Sangat menyebalkan! >_<
Berbagai cara saya coba untuk melakukannya dengan benar namun tidak ada satupun yang membuktikan cara yang efektif, sampai akhirnya saya menemukan sebuah cara yang mungkin cukup jarang orang melakukannya dengan ini untuk urusan transfer file biasa. Entahlah, pada awalnya saya hanya tau bahwa rsync adalah salah satu perintah linux yang diidentikan dengan mirroring file pada server (CMIIW). Setelah menemukan beberapa referensi untuk dipelajari, pada artikel ini saya akan sedikit membagikan knowledge saya mengenai cara cepat mentransfer atau mengcopy file menggunakan rsync di linux kepada anda.


[ Rsync adalah . . . ]


Rsync adalah tool untuk melakukan transfer atau sinkronisasi file atau tree (struktur direktori beserta semua isinya) secara satu arah, baik transfer lokal (di pc yang sama) maupun remote (jaringan). Fungsi rsync mirip dengan tools seperti scp, mv, cp, ftp client. Rsync biasanya digabungkan dengan SSH sebagai metode transfer remotenya, walaupun dapat juga diatur untuk menjadi daemon sehingga tidak memerlukan SSH. Untuk kasus-kasus tertentu rsync juga dapat digunakan menggantikan HTTP Client (seperti wget).

[ Kenapa harus rsync . . . ? ]


Jika pertanyaan ini yang ada dibenak anda jawabannya adalah, pertama kecepatan, rsync dapat melakukan kompresi data saat transfer. Dibandingkan dengan FTP pun rsync lebih cepat karena dapat melakukan pipelining, sementara transfer menggunakan ftp boros koneksi TCP/IP untuk setiap file yang ditransfer. Ini akan semakin kentara untuk tree berisi file kecil-kecil yang jumlahnya banyak, dimana rsync dapat beberapa kali hingga belasan kali lebih cepat dibandingkan FTP maupun SCP.

Kedua, jika metode ini dilakukan dalam jaringan internet maka irit bandwidth. jika dii sisi penerima file yang ingin dikirimkan sudah ada, tapi belum tentu sama (misalnya ukurannya lebih kecil atau lebih besar atau terdapat perbedaan karena versinya lebih lama), maka rsync dapat melakukan serangkaian pengecekan perbandingan checksum terhadap blok-blok dalam file di kedua sisi, untuk meminimalisir jumlah data yang harus di transfer. Algoritma ini disebut algoritma rsync. Bahkan sebetulnya rsync berawal dari sebuah paper yang menjelaskan algoritma ini. Jadi, misalnya anda memiliki 2 buah versi file berukuran kurang lebih 500 MB di dua tempat, dengan rsync anda mungkin hanya membutuhkan transfer data sebesar 50 MB, 10 MB atau bahkan dibawah 50, itu tergantung seberapa berbedanya file dari kedua sisi.

Ketiga, dibandingkan dengan metode lain rsync jauh lebih fleksibel. Rsync tidak hanya bisa mentransfer file tunggal, tapi juga direktori beserta sub direktori dan beserta seluruh file yang berada disana. Anda bisa memilih untuk menghapus file/direktori yang sudah tidak ada dari sisi pengirim tapi masih ada di sisi penerima, anda bisa memilih untuk mensinkronisasi juga metadata file seperti permission, owner, date created, ACL, dll. Rsync dapat menangani link simbolik, hardlink, device, dll. Dan ada banyak options lainnya, termasuk yang sering dijumpai di tool lain seperti tar, cp, dll.

[ Cara penggunaan ]


Pada umumnya perintah-perintah ini yang sering digunakan. Untuk transfer lokal ke lokal (di pc yang sama) bisa dengan melakukan perintah ini :
# rsync -av -P /path/sumber /path/tujuan
Untuk transfer lokal ke remote :
# rsync -e ssh -av -P -z /path/sumber user@host:/path/tujuan
Untuk transfer remote ke lokal :
# rsync -e ssh -av -P -z user@host:/path/sumber /path/tujuan
Keterangan :
Parameter -a (archive) adalah untuk mensinkronkan segala sesuatu, termasuk file / direktori secara rekursif dan metada dan file-file spesial seperti link simbolik. Umumnya ini yang kita mau, tapi dalam kasus-kasus tertentu dimana anda tidak ingin rekursif atau tidak ingin mensinkronkan salah satu dari tanggal atau owner atau yang lain, parameter ini dapat dihilangkan dan diganti dengan parameter lain seperti -r, -g, -o.

Parameter -v (verbose) membuat rsync memperlihatkan ke layar nama-nama file yang sedang ditransfer. Parameter ini membuat rsync lebih verbose lagi, yaitu menampilkan juga proses transfer. Jika menggunakan rsync dalam script non interaktif bisa jadi output yang dihasilkan terlalu banyak, maka dalam kasus tersebut kita dapat menghilangkan parameter ini dan -P.

Parameter -z (compress) membuat rsync mengkompress data yang akan ditransfer. Inilah sebabnya saya menganggap ini irit bandwidth. Untuk transfer remote, gunakan parameter lain, kecuali jika anda berada di internet yang amat cepat bahkan lebih cepat dari bandwidth harddisk (misalnya gigabit ethernet).


[ Akhiran garis miring ]


Ini benar-benar perlu saya ingatkan kepada anda yang menggunakan rsync, karena seringkali menjebak dan membuat bingung, rsync membedakan keberadaan garis miring penutup dalam spesifikasi path.
Garis miring diakhir path sumber berarti menghindari pembentukan level direktori tambahan.
# rsync -av /home/apocalypsix/data/debian /backup/
Maka hasilnya adlaah /home/apocalypsix/data/debian karena path sumber tidak diakhiri garis miring. Tapi jika kita menambahkan garis miring :
# rsync -av /home/apocalypsix/data/debian/ /backup/
maka isi dari direktori debian-lah yang akan tersalin ke /backup/ (kemungkinan ini bukan hal yang Anda inginkan, karena direktori /backup/ mungkin saja berisi hal-hal lain). Jika Anda ingin mengganti nama debian di path tujuan, maka sintaks berikut ini yang benar:
# rsync -av /home/apocalypsix/data/debian/ /backup/mirror-debian

Saya rasa sudah cukup untuk penjelasannya, jika anda ingin bertanya silahkan posting dikomentar. Semoga bermanfaat untuk anda,

Semoga bermanfaat,
Salam penguin! :)

No comments:

Post a Comment