Senin, 03 Maret 2014

Transfer Data dalam Jaringan Menggunakan Rsync

__________________________________


TERIMA KASIH TELAH BERKUNJUNG TEMAN !
SEBELUM MELANJUTKAN MEMBACA, TOLONG SUBSCRIBE KE CHANNEL YOUTUBE SAYA YA KAWAN.
CARANYA KLIK TOMBOL MERAH DIATAS.

____________________________________________________________________________________________________________________________________
________________________




Rsync adalah tool untuk melakukan transfer ataupun sinkronisasi baik berupa file maupun tree (struktur direktori + isinya) secara satu arah, baik transfer lokal (di PC yang sama) maupun remote (antar PC dalam 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).

Kelebihan rsync :
  • Kecepatan : rsync dapat melakukan kompresi data saat mentransfer. Rsync lebih cepat dari FTP, karena dapat melakukan pipelining tidak seperti FTP yang boros koneksi TCP/IP untuk setiap file yang ditransfer. Ini semakin kentara untuk tree yang berisi file kecil-kecil yang jumlahnya banyak, dimana rsync dapat beberapa kali hingga belasan kali lebih cepat dibandingkan FTP maupun SCP.
  • Irit Bandtwith : jika di sisi penerima file yang ingin dikirimkan sudah ada, tapi belum tentu sama (misalnya lebih kecil atau lebih besar), maka rsync dapat melakukan serangkaian perbandingan checksum terhadap blok-blok dalam file di kedua sisi, untuk meminimalisir jumlah data yang harus ditransfer. Algoritma ini disebut Algoritma Rsync. Misalnya anda memiliki 2 buah versi file berukuran 500MB di dua tempat, dengan rsync mungkin hanya membutuhkan transfer data sebesar 50MB, 10MB atau bahkan di bawah itu, tergantung seberapa berbedanya file dari kedua sisi.
  • Fleksibel : Rsync tidak hanya bisa mentransfer file tunggal, tapi juga direktori beserta sub direktori dan beserta seluruh file yang berada di sana. Anda bisa memilih untuk menghapus file/direktori yang sudah tidak ada dari sisi pengirim tapi masih ada di sisi penerima, anda bisa memilih untuk juga mensinkronisasi metadata file seperti permission, owner, date created, ACL, dll. Rsync dapat menangani link simbolik, hardlink, device, dll. Dan ada banyak opsi lainnya.
Cara menggunakan Rsync :
  • Sintax dasar pada perintah rsync :
#rsync options source destination
  • Transfer dari lokal ke lokal :
 # rsync -av -P /lokasi/sumber /lokasi/tujuan
  • Transfer dari lokal ke remote :
 # rsync -e ssh -av -P -z /lokasi/sumber user@host:/lokasi/tujuan
  • Transfer dari remote ke lokal :
 # rsync -e ssh -av -P -z user@host:/lokasi/tujuan /lokasi/sumber 
Parameter -a (archive) adalah untuk mensinkronkan segala sesuatu, termasuk file/direktori secara rekursif dan metadata dan file-file spesial seperti simbolik. Umumnya ini yang kita mau, tapi dalam kasus-kasus tertentu anda tidak ingin rekursif atau tidak ingin mensinkronkan salah satu dari tanggal, owner atau yang lainnya, parameter ini dapat dihilangkan dan diganti dengan parameter lain seperti -r, -g, -o.
Parameter -v (verbose) membuat rsync menampilkan 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.

Aturan penggunaan garis miring
Rsync membedakan keberadaan garis miring penutup dalam spesifikasi lokasi folder (path). Garis miring di akhir path sumber berarti menghindari pembentukan level direktori di path tujuan. Sedangkan tanpa garis miring di akhir path sumber maka pada path tujuan akan terbentuk level direktori.
Contoh :
Saya memiliki struktur folder seperti berikut.

 
Struktur Folder

Untuk membuat struktur folder seperti diatas ketikkan perintah-perintah berikut :
it@it-H55M-S2:~/contohrsync$ mkdir FolderA
it@it-H55M-S2:~/contohrsync$ mkdir FolderA/{Folder1,Folder2,Folder3,Folder4}
it@it-H55M-S2:~/contohrsync$ mkdir -p FolderA/Folder2/Folder21/Folder22-Sumber
it@it-H55M-S2:~/contohrsync$ mkdir -p FolderA/Folder4/Folder41/Folder42
it@it-H55M-S2:~/contohrsync$ touch FolderA/Folder1/{File1.txt,File2.txt}
it@it-H55M-S2:~/contohrsync$ touch FolderA/Folder2/Folder21/{File4.txt,File5.txt}
it@it-H55M-S2:~/contohrsync$ touch FolderA/Folder2/Folder21/Folder22-Sumber/{File6.txt,File7.txt,File8.txt,File9.txt}
 
it@it-H55M-S2:~/contohrsync$ mkdir FolderB
it@it-H55M-S2:~/contohrsync$ mkdir -p FolderB/{Folder1,Folder2/Folder-Tujuan}
it@it-H55M-S2:~/contohrsync$ touch /home/it/contohrsync/FolderB/Folder2/Folder-Tujuan/{FileA.txt,FileB.txt}

Akhiran garis miring di folder sumber
Ketikkan perintah berikut di terminal :

it@it-H55M-S2:~/contohrsync$ rsync -av -P /home/it/contohrsync/FolderA/Folder2/Folder21/Folder22-Sumber/ /home/it/contohrsync/FolderB/Folder2/Folder-Tujuan/

Hasilnya adalah :


Tanpa Akhiran garis miring di folder sumber
Ketikkan perintah berikut di terminal :

it@it-H55M-S2:~/contohrsync$ rsync -av -P /home/it/contohrsync/FolderA/Folder2/Folder21/Folder22-Sumber /home/it/contohrsync/FolderB/Folder2/Folder-Tujuan/

Hasilnya adalah :


Ganti nama folder di path tujuan :
Ketikkan perintah berikut di terminal :

it@it-H55M-S2:~/contohrsync$ rsync -av -P /home/it/contohrsync/FolderA/Folder2/Folder21/Folder22-Sumber/ /home/it/contohrsync/FolderB/Folder2/Folder-Tujuan/gantinama

Hasilnya adalah :


Opsi-opsi yang sering digunakan pada perintah-perintah Rsync :
-v : verbose
-r : meng-copy data secara recursive (namun tidak menjaga/mengikutkan timestamp dan izin akses ketika data ditransfer).
-a : archive mode, archive mode memungkinkan kita meng-copy data secara recursive dan juga menjaga/mengikutkan symbolic links, hak akses file, ownership dari user & group, dan timestamp
-z : meng-compress file/data yang ditransfer
-h : human-readable, parameter-parameter output di layar konsol ditampilkan dalam format yang mudah difahami.
Berikut ini adalah beberapa contoh perintah rsync yang lain :
  • Salin / Sinkronisasi satu file pada komputer lokal
Kita akan menyalin / men-sinkronkan sebuah file ke folder /home/Rey/backup.
[Rey@localhost ~]$ rsync -zvh checkout.pdf /home/Rey/backup/1file/
created directory /home/Rey/backup/1file
checkout.pdf
 
sent 66.29K bytes  received 31 bytes  132.64K bytes/sec
total size is 80.28K  speedup is 1.21
Pada perintah di atas, apabila di dalam folder /home/Rey/backup/ tidak terdapat folder "1file", maka folder tersebut akan diciptakan secara otomatis. Namun, jika sudah ada folder "1file", maka file checkout.pdf akan langsung di salin kedalam nya tanpa ada folder yang diciptakan.
  • Salin / Sinkronisasi folder pada komputer lokal
[Rey@localhost ~]$ rsync -avzh /home/Rey/Desktop /home/Rey/backup/
sending incremental file list
Desktop/
Desktop/comodo-antivirus.desktop
sent 284 bytes  received 35 bytes  638.00 bytes/sec
 
total size is 213  speedup is 0.67
 
Hasilnya adalah folder Desktop akan diciptakan di path tujuan beserta salinan seluruh isinya, sehingga struktur folder di path tujuan menjadi /home/Rey/backup/Desktop.
  • Salin folder di komputer lokal ke komputer remote
[Rey@localhost ~]$ rsync -avz /home/Rey/Desktop/ it@192.168.1.7:/home/it/pwd/
it@192.168.1.7's password: 
sending incremental file list
./
comodo-antivirus.desktop
 
 sent 268 bytes  received 34 bytes  67.11 bytes/sec
 total size is 213  speedup is 0.71
Hasilnya adalah isi dari folder /home/Rey/Desktop/ (komputer lokal) disalin ke /home/it/pwd/ (komputer remote). Yang disalin ke komputer remote hanyalah isinya saja, tanpa ada pembentukan direktori baru. 
[Rey@localhost ~]$ rsync -avz /home/Rey/Desktop it@192.168.1.7:/home/it/pwd
it@192.168.1.7's password:
sending incremental file list
Desktop/
Desktop/comodo-antivirus.desktop
 
sent 284 bytes  received 35 bytes  70.89 bytes/sec
total size is 213  speedup is 0.67

Nah perintah diatas akan menyalin folder Desktop dan isinya ke komputer remote. Sehingga struktur folder di komputer remote saat ini menjadi /home/it/pwd/Desktop/
  • Salin folder di komputer remote ke komputer lokal
[Rey@localhost ~]$ rsync -avzh it@192.168.1.7:/home/it/pwd /home/Rey
it@192.168.1.7's password:
receiving incremental file list
pwd/
pwd/Desktop/
pwd/Desktop/comodo-antivirus.desktop
 
sent 38 bytes  received 307 bytes  53.08 bytes/sec
total size is 213  speedup is 0.62
Ini mengakibatkan folder Desktop di komputer remote beserta isinya di salin ke folder /home/it komputer lokal. Perintah diatas juga membuat direktori pwd di komputer lokal, sehingga struktur folder di komputer lokal saat ini menjadi /home/Rey/pwd/Desktop/
  • Salin sebuah file dari komputer lokal ke komputer remote melalui ssh
[Rey@localhost ~]$ rsync -avz /home/Rey/Desktop it@192.168.1.7:/home/it/pwd
it@192.168.1.7's password:
sending incremental file list
Desktop/
Desktop/comodo-antivirus.desktop
 
sent 284 bytes  received 35 bytes  70.89 bytes/sec
total size is 213  speedup is 0.67
Cara ini dikenal dengan Rsync Over SSH. Dengan menggunakan SSH, maka data yang kita transfer dengan rsync di jaringan / internet tidak akan bisa dibaca karena dienkripsi. Disamping itu juga mentransfer data antar komputer dalam jaringan, kita perlu memberikan password user/root komputer remote agar bisa diakses, sehingga dengan menggunakan koneksi SSH dalam menggunakan rsync akan membuat password yang kita kirimkan dalam jaringan menjadi aman. Untuk menjalankan rsync melalui SSH, kita harus menambahkan opsi "-e" yang diikuti protocol yang digunakan dalam hal ini "ssh", dan tentunya di komputer remote harus sudah terinstall SSH Server dan di komputer lokal sudah terinstall SSH Client. Perhatikan contoh di bawah ini.
[Rey@localhost ~]$ rsync -avzhe ssh checkout.pdf it@192.168.1.7:/home/it/pwd/
it@192.168.1.7's password:
sending incremental file list
checkout.pdf
 
sent 66.31K bytes  received 31 bytes  12.06K bytes/sec
total size is 80.28K  speedup is 1.21
  • Salin sebuah file dari komputer remote ke komputer lokal melalui ssh
Sama halnya dengan contoh sebelumnya, hanya saja ini adalah kebalikannya. Perhatikan contoh di bawah ini.
[Rey@localhost ~]$ rsync -avzhe ssh it@192.168.1.7:/home/it/pwd/checkout.pdf /home/Rey/pwd/
it@192.168.1.7's password:
receiving incremental file list
checkout.pdf
 
sent 30 bytes  received 66.31K bytes  14.74K bytes/sec
total size is 80.28K  speedup is 1.21
  • Tampilkan Progress saat mentransfer data
Untuk melakukan hal ini kita membutuhkan opsi --progress.
[Rey@localhost ~]$ rsync -avzhe ssh --progress it@192.168.1.7:/home/it/pwd/ /home/Rey/tes
it@192.168.1.7's password:
receiving incremental file list
created directory /home/Rey/tes
./
checkout.pdf
 
  80.28K 100%   25.52MB/s    0:00:00 (xfer#1, to-check=0/2)
 
sent 33 bytes  received 66.33K bytes  18.96K bytes/sec
total size is 80.28K  speedup is 1.21
  • Batasi ukuran file yang ditransfer
Untuk melakukan hal ini membutuhkan opsi "--max-size". Misal kita akan membatasi hanya file yang berukuran lebih besar atau sama dengan 150kB saja yang ditransfer, maka opsinya adalah "--max-size=150k". Untuk ukuran Mega dan Giga dapat digunakan M dan G. Contoh :
[Rey@localhost ~]$ rsync -avzhe ssh --progress --max-size='150k' it@192.168.1.7:/home/it/BACKUP/reynes/sda1-windows/User/Desktop/ /home/Rey/tes/
  • Batasi bandwith yang digunakan untuk transfer
Kita juga dapat membatasi besar bandwith saat mentransfer file dengan opsi "--bwlimit". Misal kita akan membatasi bandwith saat mentransfer file sebesar 10 kB/sec, maka perintahnya :
[Rey@localhost ~]$ rsync -avzhe ssh --progress --bwlimit=10 it@192.168.1.7:/home/it/BACKUP/reynes/sda1-windows/User/Desktop/ /home/Rey/tes/
it@192.168.1.7's password:
receiving incremental file list
./
 
PeraturanDirjenPajak_36_PBBKehutanan_2012.jpg
 
     376.83K  44%   10.00kB/s    0:00:46

Ok, kita cukupkan perkenalan dengan rsync sampai disini. Dari segitu banyak opsi lantas untuk menggunakan rsync kita harus mulai dari mana ?.
Hm...mm.. baiklah, saya akan memberikan contoh implementasi rsync untuk menyalin data antara 2 host (PC) linux dalam jaringan lokal. Adapun topology jaringan yang saya gunakan dapat dilihat pada gambar di bawah ini :

Transfer data antar 2 host linux dengan rsync

Saya akan menggunakan metode penyalinan data dari local ke remote. Komputer local dengan ip 192.168.1.99, komputer remote dengan ip 192.168.1.7. Komputer local = fedora 18, komputer remote = ubuntu 13.10 Desktop. Perintah yang digunakan :

rsync -e ssh -av -P -z /path/local /user@host:/path/tujuan

Karena saya menggunakan protocol ssh, maka di komputer remote harus sudah terinstall ssh server dan di komputer client sudah terinstall ssh client. Kalau pada kedua host tersebut belum tersedia ssh, install dengan perintah :

sudo apt-get install ssh
sudo yum install ssh

Setelah itu pastikan dari komputer lokal (Fedora 18) bisa melakukan remote ssh ke komputer remote (Ubuntu 13.10) :
[Rey@localhost ~]$ ssh it@192.168.1.7
 
The authenticity of host '192.168.1.7 (192.168.1.7)' can't be established.
RSA key fingerprint is 5e:87:16:65:6f:c3:49:a7:c8:39:41:4f:0d:cd:ff:34.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.7' (RSA) to the list of known hosts.
it@192.168.1.7's password:
 
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
 
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
 
it@it-desktop:~$ exit
 
logout
 
Connection to 192.168.1.7 closed.
 
[Rey@localhost ~]$ 

Di komputer remote (Ubuntu 13.10) buat folder /home/it/BACKUP. Disini kita akan menyalin semua isi folder "/media/mount/sda5" dan "/media/mount/sda1/Documents and Settings" (komputer lokal) ke folder "/home/it/BACKUP" (komputer remote). Dari komputer lokal (Fedora 18), salin data (sda5) menggunakan rsync ke komputer remote (Ubuntu 13.10) :

[Rey@localhost ~]$ ls -l /media/mount 
total 48 
drwxrwxrwx 1 root root 12288 Feb 27 14:10 sda1 
drwxrwxrwx 1 root root 36864 Feb 27 22:18 sda5
 
[Rey@localhost ~]$ rsync -e ssh -av -P -z /media/mount/sda5/ it@192.168.1.7:/home/it/BACKUP/reynes/
it@192.168.1.7's password:
sending incremental file list
./
.pdf
      973151 100%   14.46MB/s    0:00:00 (xfer#1, to-check=1338/1340)
111.xlsx
        8260 100%  128.04kB/s    0:00:00 (xfer#2, to-check=1337/1340)
222.xlsx
        8329 100%  127.09kB/s    0:00:00 (xfer#3, to-check=1336/1340)
333.xlsx
         .
         . 
         . 
         . 
www/server/UbuntuServer.vmdk
  3485466624 100%   17.18MB/s    0:03:13 (xfer#181688, to-check=14/190102)
www/server/UbuntuServer.vmsd
           0 100%    0.00kB/s    0:00:00 (xfer#181689, to-check=13/190102)
www/server/UbuntuServer.vmx
        2396 100%    6.41kB/s    0:00:00 (xfer#181690, to-check=12/190102)
www/server/UbuntuServer.vmxf
         267 100%    0.71kB/s    0:00:00 (xfer#181691, to-check=11/190102)
www/server/vmware-0.log
       81769 100%  216.99kB/s    0:00:00 (xfer#181692, to-check=10/190102)
www/server/vmware-1.log
       80089 100%  211.38kB/s    0:00:00 (xfer#181693, to-check=9/190102)
www/server/vmware-2.log
       91277 100%  238.98kB/s    0:00:00 (xfer#181694, to-check=8/190102)
www/server/vmware.log
      132667 100%  343.65kB/s    0:00:00 (xfer#181695, to-check=7/190102)
www/server/vprintproxy.log
       15712 100%   40.70kB/s    0:00:00 (xfer#181696, to-check=6/190102)
www/server/application/
www/server/application/application/
www/server/application/application/views/
www/server/application/application/views/Blue/
www/server/application/views/
www/server/application/views/Blue/
 
sent 116587300909 bytes  received 3485859 bytes  10397359.14 bytes/sec
total size is 149834129962  speedup is 1.29

Setelah selesai menyalin isi folder sda5, lakukan lagi penyalinan untuk folder sda1 :

[Rey@localhost ~]$ rsync -e ssh -av -P -z /media/mount/sda1/Documents\ and\ Settings/ it@192.168.1.7:/home/it/BACKUP/reynes/sda1-windows
    . 
    . 
    . 
    . 
teguhpriyadisetyawan/Templates/wordpfct.wpd
          30 100%    0.05kB/s    0:00:00 (xfer#136022, to-check=1/217099)
teguhpriyadisetyawan/Templates/wordpfct.wpg
          57 100%    0.09kB/s    0:00:00 (xfer#136023, to-check=0/217099)
 
sent 74973849140 bytes  received 2765141 bytes  10716303.05 bytes/sec
total size is 104932972576  speedup is 1.40 

Ok, kita sudah selesai menyalin seluruh data sda5 dan "sda1/Documents and Settings" komputer lokal ke folder /home/it/BACKUP yang ada di komputer remote. Untuk opsi-opsi yang lain dalam perintah rsync, anda dapat mencobanya sendiri, sesuai dengan kebutuhan anda. Sebagai bonus saya akan memberikan satu lagi contoh. Anggap saat ini saya sudah memiliki 1 unit PC baru terinstall OpenSUSE 12.3 dan saya ingin mengambil / menyalin / me-sinkronisasi data di komputer Ubuntu 13.10 ke komputer saya saat ini (OpenSUSE 12.3). Posisi saya berada di terminal OpenSUSE 12.3, berarti metode yang saya gunakan adalah menyalin data komputer remote ke komputer lokal, maka perintah yang harus saya ketikkan adalah :

it@OpenSUSE:~> rsync -e ssh -avzh --progress it@192.168.1.7:/home/it/BACKUP /home/it/
The authenticity of host '192.168.1.7 (192.168.1.7)' can't be established.
ECDSA key fingerprint is b8:fa:19:0c:75:3f:68:09:03:85:a6:4c:46:43:7b:92.
Are you sure you want to continue connecting (yes/no)? yes
it@192.168.1.7's password: 
 

Dengan perintah diatas, pada komputer OpenSUSE 12.3 saya saat ini akan terbentuk folder baru (BACKUP) di lokasi /home/it beserta seluruh isinya.

Selamat mencoba.

"Everything should be made as simple as possible but not simpler...."
"Learning by doing..."
"Less theory more result..."

Sumber :
http://tutorialubuntuindonesia.blogspot.com/2013/07/mentransfer-atau-mengcopy-file-dengan.html
http://www.tecmint.com/rsync-local-remote-file-synchronization-commands/


















JANGAN LUPA DI-SUBSCRIBE CHANNEL YOUTUBE-NYA YA KAWAN !