Tuesday, July 26, 2016

Tutorial Rsync

Rsync adalah tool sinkronisasi terbaik. Dengan rsync anda tidak perlu copy-paste, tidak perlu tool back-up lain, hanya rsync saja. Begitu anda menguasainya, manajemen file terasa mudah.

Perintah dasar:

rsync fileSumber FolderTujuan
rsync -avz FolderSumber/ FolderTujuan/   
Perintah pertama akan mengcopy file 'fileSumber' kedalam 'FolderTujuan', sedang perintah kedua akan mensinkronkan file-file didalam 'FolderSumber' kedalam 'FolderTujuan'. Jika tidak ada slash di argumen pertama ('FolderSumber') maka 'FolderSumber' akan dicopy (bukan hanya file-filenya, tapi foldernya) didalam 'FolderTujuan'. Jika ada slash ('FolderSumber/') maka yang dicopy hanya file-filenya saja (bukan foldernya). Opsi -avz adalah archieve, verbose dan compress artinya rsync dilakukan secara rekursif (isi folder), menampilkan informasi sinkronisasi dan mengkompress saat pengiriman.

Skenario 1: Anda punya dua direktori/folder/drive yang akan anda sinkron-kan, misal namanya adalah tes1 dan tes2. Di dalam tes1 ada beberapa file, sedang tes2 masih kosong. Simply speaking, anda ingin memback-up atau mengcopy paste isi file didalam folder tes1 ke dalam folder tes2.

Kondisi 0:
tes1
+--- file1
+--- file2
+--- file3
tes2
Perintah:
Buat folder dan file1..3 dalam folder tes1
$ cd /tmp
$ mkdir -p tes1 && cd $_
$ touch file{1..3}
$ mkdir ../tes2
Dengan perintah diatas skenario kondisi 0 tercapai, kita mempunyai tiga file dalam folder tes1 dan nol file dalam tes2. Sekarang saatnya memback-up atau copy paste dengan rsync,
$ pwd
tes1
$ rsync -avz --update ./ ../tes2

Maka kita akan memperoleh kondisi 1 sbb:
tes1
+--- file1
+--- file2
+--- file3
tes2
+--- file1
+--- file2
+--- file3
Sekarang kita buat sedikit modifikasi
$ pwd
tes1
$ rm ../tes2/file3
Hasilnya:
tes1
+--- file1
+--- file2
+--- file3
tes2
+--- file1
+--- file2
Kita modifikasi dan sinkronkan lagi,
$ pwd
tes1
$ echo "ini adalah file1" >> file1
$ rsync -avz --update ./ ../tes2/
Hasilnya:
tes1
+--- file1 (ini adalah file1)
+--- file2
+--- file3
tes2
+--- file1 (ini adalah file1)
+--- file2
+--- file3

rsync --existing vs rsync --ignore-existing


Sejauh ini kita telah berkenalan dengan rsync --avz --update yang berfungsi untuk mengupdate file-file di tujuan agar sesuai/terupdate dengan file-file yang ada di sumber. Selain opsi --update ada opsi lainnya yakni: --existing untuk menskip mencopy/membuat file jika file tsb sudah ada di folder tujuan dan --ignore-existing untuk menskip mengupdate file-file di folder tujuan
--update                skip creating new files on receiver
--ignore-existing       skip updating files that exist on receiver
--existing              skip creating new files on receiver
Maka jika kita hanya ingin mengupdate file-file yang exist saja tanpa mengcopy file baru (file yang belum ada di folder tujuan) perintahnya,
 rsync -avz -u --existing tes1/ tes2/ 
Namun jika kita juga ingin mengupdate file yang belum ada dan tidak mengupdate file yang sudah ada, maka perintahnya adalah:
 rsync -avz -u --ignore-existing tes1/ tes2/ 

rsync --exclude

Ada kalanya kita tidak ingin memasukkan beberapa file/folder ke dalam back-up kita, maka perintah --exclude bisa digunakan untuk keperluan ini. Berikut perintah dasarnya,
rsync -avz --update --exclude='file3' . ../tes2
Maka kedua folder, tes1 dan tes2, akan disinkronkan tanpa mengikutkan file3 didalam folder tes1.

rsync --info=progress2

Untuk sinkronisasi file dalam jumlah yang sangat besar, kita ingin tahu seberapa progress copy-paste/sinkronisasi tersebut. Untuk tujuan ini kita bisa menggunakan argumen --proress atau yang lebih baru --info=progress2 untuk menampilkan persentasi dari progress tersebut.
rsync -avz -u --progress tes1/ tes2/
Sayangnya, baik argumen --progress ataupun --info=progress2 hanya berlaku secara lokal, artinya kita tidak bisa mengetahui progress secara keseluruhan/total.

rsync -aP

Jika --progress adalah sama dengan argumen --info=progress2 maka -aP adalah kepanjangan dari --partial --progress. Argumen ini berguna untuk transfer file dalam jumlah besar.
Contoh,
 rsync -aP /usr/share/doc/ /tmp/test/

synch.sh

Langkah terakhir, jika anda sudah cukup familiar atau bahkan sudah expert menggunakan perintah rsync, anda bisa menuliskannya dalam bash file alih-alih mengetikkannya di terminal secara panjang. Anda juga bisa memback-up secara terjadwal dengan bantuan crontab . Contoh berikut adalah bash file yang saya berinama synch.sh yang saya gunakan untuk mengcopy file di server (hp83-inf-39) ke dalam current directory saya saat ini (dimana file synch.sh berada).
#!/usr/bin/bash
rsync -avz --update batmaja@hp83-inf-39:/scratch/batmaja/WORLD .
chmod go-w -R .

Selamat mencoba!
Related Posts Plugin for WordPress, Blogger...