Selasa, 19 Mei 2015

Perintah rsync pada linux

 

Rsync adalah tool untuk transfer dan sinkronisasi file atau tree (struktur direktori dan file) secara satu arah, baik transfer lokal (di sistem yang sama) maupun remote (jaringan/internet). Fungsi rsync mirip/identik dengan tool-tool ini: cp, mv, scp, FTP client. Rsync biasanya digabungkan dengan SSH sebagai metode transpor remotenya, walaupun dapat juga disetup untuk menjadi daemon sehingga tidak membutuhkan SSH. Dalam kasus-kasus tertentu rsync juga dapat digunakan menggantikan HTTP client (seperti wget)

sintaks dasarnya
1
rsync  -av PATHSUMBER/ PATHTUJUAN/

Menghapus berkas di /tujuan/ yang tidak ada di /sumber/ gunakan:
1
rsync -av --delete /PATHSUMBER/ /PATHTUJUAN/

Jika penghapusan hanya boleh setelah penyalinan sukses:
1
rsync -av --delete --delete-after /PATHSUMBER/ /PATHTUJUAN/

jika ada file yang tidak ingin di copy
1
rsync -av --exclude 'namafile.txt' /PATHSUMBER/ /PATHTUJUAN/

Untuk transfer lokal ke lokal
1
rsync -av -P PATHSUMBER PATHTUJUAN

Untuk transfer lokal ke remote melalui ssh
1
rsync -e ssh -av -P -z PATHSUMBER USER@HOST:PATHTUJUAN

Untuk transfer remote ke lokal melalui ssh, cukup kebalikan perintah sebelumnya:
1
rsync -e ssh -av -P -z USER@HOST:PATHSUMBER PATHTUJUAN
 opsi lainnya

a: (archive) adalah untuk mensinkronkan segala sesuatu, termasuk file/direktori secara rekursif dan metadata (seperti tanggal, kepemilikan, permission) dan file-file spesial seperti link simbolik
v: (verbose) memperlihatkan ke layar nama-nama file yang sedang ditransfer
z : (zip) membuat rsync mengkompresi data yang ditransfer
P:  selain memperlihatkan ke layar nama-nama file yang sedang ditransfer  juga menampilkan progres/persentasi saat sebuah file sedang ditransfer.
–version : melihat versi rsync

Jika kita menggunakan rsync dalam skrip noninteraktif, bisa jadi output yang dihasilkan terlalu banyak. Maka dalam kasus tersebut kita dapat menghilangkan opsi -v dan -P.

Akhiran garis miring

Keberadaan garis miring di akhir path sumber berarti menghindari pembentukan level direktori tambahan
misalnya
rsync  -av /home/user/tempatnya/ /home/userhasil/backup/
maka file hasil akan tercopy di /home/userhasil/backup/

tapi jika garis miring tidak ditambah diakhir skrip sumber akibatnya terjadi pembuatan direktory
misalnya
rsync  -av /home/user/tempatnya /home/userhasil/backup/
maka akan terbentuk file hasil akan tercopy di /home/userhasil/backup/tempatnya 
(terbentuk direktori bernama tempatnya yang berisi file file hasil sinkronisasi)
 
Keunggulan Rsync :

Hemat bandwidth dan Mendukung Resume. Jika di sisi penerima, file yang ingin dikirimkan sudah ada, tapi belum tentu sama (misalnya ukurannya lebih kecil/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 meminimalisasi jumlah data yang harus ditransfer. Algoritma ini disebut algoritma rsync. Bahkan sebetulnya rsync bermula dari sebuah paper yang menjelaskan algoritma ini.Jadi, misalnya Anda memiliki 2 buah versi file berukuran kurang lebih 100MB di dua tempat, dengan rsync Anda mungkin Anda hanya membutuhkan transfer data sebesar 50MB, 10MB, atau bahkan di bawah 1MB untuk menyamakan kedua buah versi file ini, bergantung pada seberapa mirip kedua file tersebut sebelumnya.Atau, misalnya Anda sedang mentransfer file besar lalu putus di tengah jalan. Anda dapat menjalankan kembali rsync dan rsync akan melanjutkan kembali transfer dari posisi putus dan memastikan hasil akhirnya nanti sama.

Cepat. Rsync cepat salah satunya karena algoritma rsync yang disebutkan di atas. Selain itu rsync dapat melakukan kompresi data saat transfer. Dibandingkan 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 (misalnya file-file website yang umumnya berisi banyak file HTML dan gambar), di mana rsync dapat beberapa kali hingga belasan kali lebih cepat dari FTP.

Fleksibel. Rsync tidak hanya bisa mentransfer file tunggal, tapi juga direktori dan tree secara rekursif. Anda bisa memilih untuk menghapus file/direktori yang sudah tidak ada dari sisi pengirim tapi masih ada di sisi penerima. Anda juga bisa memilih untuk melakukan proses sinkronisasi  metadata file seperti permission, kepemilikan, tanggal, ACL, dll. Rsync dapat menangani link simbolik, hardlink, device, dll. Selain opsi tersebut, masih banyak opsi lainnya, termasuk yang sering juga dijumpai di tool lain seperti tar, cp, dll.
 
 
 

Keterbatasan rsync

Meskipun merupakan swiss-army knife dalam urusan transfer dan sinkronisasi tree, namun rsync tidaklah sempurna. Dua kelemahan utama rsync adalah sifat sinkronisasi yang 1 arah dan lambat jika ukuran tree sudah terlalu besar.

Hanya 1 arah. Sinkronisasi rsync hanya bersifat satu arah, dari pengirim (P1) ke penerima (P2). Jika misalnya baik tree di P1 maupun di P2 berubah secara independen oleh pihak ketiga, lalu P1 dan P2 ingin bertukar perubahan secara 2 arah, maka rsync tidak dapat digunakan. Ada opsi -u untuk melewati file-file di P2 yang lebih baru daripada P1, Anda bisa menggunakan opsi ini pada kasus-kasus tertentu, tapi secara umum, untuk melakukan sinkronisasi 2 arah, sebaiknya digunakan tool lain seperti unison (atau mungkin Anda butuh tool version control seperti subversion atau git).

Lambat untuk tree superbesar. Cara kerja rsync adalah dengan mula-mula membangun daftar file lengkap baik di sisi pengirim maupun penerima untuk kemudian dibandingkan. Untuk tree yang sudah amat besar proses ini akan memakan waktu dan juga memori amat besar. Misalnya direktori backup lokal di beberapa server shared hosting di tempat kerja saya yang isinya lebih dari 20 juta file, karena berisi histori backup menggunakan hardlink. Meng-rsync tree ini sekaligus membuat proses rsync memakan memori lebih dari 2-3GB untuk menyusun daftar file, sehingga menghabiskan memori dan mengganggu proses lain.
Kebutuhan memori dalam pembangunan daftar file lengkap di awal proses rsync ini juga membuat para penyedia situs mirror agak enggan menyediakan layanan via rsync. Atau setidaknya membatasi jumlah koneksi simultan rsync, misalnya hanya 1-5.
Diharapkan revisi program dan/atau algoritma rsync berikutnya dapat membuat inovasi dalam hal sinkronisasi tree superbesar, misalnya dengan membentuk daftar file secara paralel atau sambil jalan.
 

 

Tidak ada komentar:

Posting Komentar