Pencarian

Selasa, 03 Mei 2011

Rsync dan login ssh untuk backup file di ubuntu

Artikel ini saya buat setelah terjadi insiden di laptop saya, ketika dengan sadar saya menghapus partisi data (ntfs) yang sebelumnya saya juga telah menghapus partisi home (ext4) yang mengakibatkan saya harus kehilangan hampir seluruh data-data baik yang penting maupun yang tidak penting :p (paling tidak menurut saya).

Apa itu rsync ?
Setelah sekian lama di linux akhirnya saya berkenalan juga dengan rsync.
Dari sumber yang saya dapat, 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 ini mirip dengan ftp client,kelebihan dari rsync sendiri cukup banyak, antara lain melakukan sinkronisasi file, baik ukuran, struktur folder dll. rsync juga mampu melanjutkan transfer yang putus di tengah jalan tanpa harus mengulang kembali. Bahasa mudahnya, rsync ini akan mengcopy folder yang kita inginkan dan mencakup subfolder ke suatu komputer lain baik di jaringan lokal maupun di di jaringan internet.

Sedangkan ssh, tentu pengguna linux sudah cukup familiar dengan tools remote yang satu ini. Pada artikel ini, rsync akan menggunakan ssh namun tanpa harus memasukkan password ssh, jadi hanya menjalankan satu perintah saja.

Saya mempunyai 1 komputer sebagai gateway yang juga digunakan sebagai tempat backup data dengan ip 192.168.100.1 dan laptop yang saya gunakan sehari-hari dengan ip 192.168.100.123

Agar ssh bisa login tanpa menggunakan password, kita harus membuat public key dan private key terlebih dahulu.
Untuk membuat public key dan private key, di laptop saya mengetikkan perintah berikut:

a3m-nix@f0r-e4ch:~$ cd .ssh/
a3m-nix@f0r-e4ch:~/.ssh$
a3m-nix@f0r-e4ch:~/.ssh$ ssh-keygen

Tekan enter untuk tiap pertanyaan.
lalu duplikat isi file id_rsa.pub menjadi file authorized_keys dan beri permission
a3m-nix@f0r-e4ch:~/.ssh$ cat id_rsa.pub >> authorized_keys
a3m-nix@f0r-e4ch:~/.ssh$ sudo chmod 600 authorized_keys
Setelah itu copy file authorized_keys ke server yang ingin di remote tanpa password.
a3m-nix@f0r-e4ch:~/.ssh$ scp -p keysumber usertujuan@iptujuan:path_ssh_tujuan
a3m-nix@f0r-e4ch:~/.ssh$ scp -p authorized_keys a3m-nix@192.168.100.1:/home/a3m-nix/.ssh

Selanjutnya coba lakukan login ke server dengan ip 192.168.100.1 menggunakan user a3m-nix
a3m-nix@f0r-e4ch:~/.ssh$ ssh userkomputertujuan@192.168.100.1
a3m-nix@f0r-e4ch:~/.ssh$ ssh a3m-nix@192.168.100.1
Pada contoh diatas, saya menggunakan username yang sama untuk laptop dan komputer, namun dengan password yang berbeda, hal ini tidak menjadi masalah dan seharusnya kamu sudah bisa login dengan user a3m-nix tanpa harus memasukkan password.
Dan selanjutkan melakukan backup dengan rsync. ketikkan perintah berikut di komputer sumber (pada contoh ini di laptop saya).
a3m-nix@f0r-e4ch:~$ rsync -e ssh -av -P -z foldersumber a3m-nix@iptujuan:foldertujuan
a3m-nix@f0r-e4ch:~$ rsync -e ssh -av -P -z /home/a3m-nix/www/ a3m-nix@192.168.100.1:www
Pada contoh diatas, saya melakukan rsync folder /home/a3m-nix/www di laptop saya agar di copy kan ke /home/a3m-nix/www di komputer tujuan.

Penjelesan perintah ini saya dapat dari tutorial masterwebnet.

Opsi -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. Umumnya ini yang kita mau, tapi dalam kasus-kasus tertentu di mana Anda tidak ingin rekursif atau tidak ingin mensinkronkan salah satu dari tanggal/kepemilikan/dll, opsi -a dapat dihilangkan dan/atau diganti dengan opsi-opsi lain seperti -r, -g, -o,

Opsi -v (verbose) membuat rsync memperlihatkan ke layar nama-nama file yang sedang ditransfer. Opsi -P membuat rsync lebih verbose lagi, yaitu menampilkan juga progres/persentasi saat sebuah file sedang ditransfer. 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.

Opsi -z (compress) membuat rsync mengkompresi data yang ditransfer. Ini menghemat bandwidth. Untuk transfer remote, gunakanlah selalu opsi ini, kecuali jika Anda berada di intranet yang amat cepat bahkan lebih cepat dari bandwidth harddisk (mis: di lingkungan gigabit ethernet).

Untuk memudahkan hal tersebut, perintah rsync saya jadikan script agar mudah di jalankan.
a3m-nix@f0r-e4ch:~$ nano rsync
#!bin/bash
rsync -e ssh -av -P -z /home/a3m-nix/www/ a3m-nix@192.168.100.1:www
dan untuk menjalankan rsync, saya tinggal mengetikkan perintah
a3m-nix@f0r-e4ch:~$ sh rsync
rsync ini juga bisa dikombinasikan dengan crontab agar sinkronisasi berjalan secara otomatis,. Maybe next time, karena saya juga akan membuat script untuk melakukan pengecekkan IP tujuan agar rsync hanya terjadi ketika saya berada di jaringan komputer di rumah saya. :D
Selamat mencoba...

Tidak ada komentar:

Posting Komentar