31 July 2013

Tutorial AWK di Linux / Unix


Pada artikel sebelumnya mengenai awk saya sudah sedikit menjelaskan apa itu awk. Perlu diketahui lagi, dari beberapa referensi yang saya dapat bahwa AWK itu ternyata sebuah singkatan dari pembuat algoritma pengurai ini. AWK diambil dari inisial ketiga pembuatnya yaitu “Aho, Weinberger, and Kernighan”. Awk paling sering digunakan untuk me-scan dan mem-proses sebuah pola. Pencarian pada sebuah file yang cocok dengan pola yang dibuat lalu menyaring pencarian tersebut kedalam sebuah file baru.

Berikut ini adalah fitur-fitur yang dimiliki Awk :
  • Awk menjadikan text file sebagai records dan fields
  • Seperti bahasa pemrograman lainnya, Awk mengandung variabel, kondisi, dan looping
  • Awk mempunyai operator aritmatika dan string
  • Awk bisa digenerate menjadi laporan yang berformat

Awk membaca dari sebuah file atau dari input standard, dan menjadikannya output standard. Awk tidak bisa digunakan pada file yang tidak mengandung text.

syntax :
awk '/search pattern1/ {action}
     /search pattern2/ {action}' file
 

Dari syntax awk diatas, artinya :
  • Pencarian pola adalah merupakan regular expression
  • Action - statements atau keputusan yang akan diambil
  • Awk bisa memungkinkan kita untuk membuat banyak pola dan banyak action

Cara kerja Awk 
  • Awk membaca baris dalam sebuah file.
  • Untuk beberapa baris, ini dicocokkan dengan pola yang dibuat. Jika polanya cocok maka keputusan selanjutnya bisa dilakukan, seperti print misalnya.
  • Jika tidak ada pola yang cocok, maka tidak ada action/keputusan yang akan diambil.
  • Memberikan pola atau action tidak diharuskan.
  • Jika tidak ada pola yang dibuat, maka output default nya adalah setiap baris dari file yang anda pakai.
  • Jika tidak ada action/keputusan yang dibuat, maka output default nya adalah memunculkan hasil pencarian pada layar anda.
  • Kurung kurawal tanpa action itu artinya tidak ada keputusan, tapi tidak akan memunculkan output default tadi.
  • Setiap statemen dalam action harus di pisahkan dengan tanda titik koma (;) 

Mari kita praktekan, meskipun algoritma awk ini ada pada linux maupun unix, saya menggunakan Ubuntu 12.04. Pertama, kita buat file yang berisi seperti ini :

root@laborate:/home/apocalypsix/awk# cat pegawai.txt
1000001 Deri    Manager         Sales           Rp.2.000.000
1000002 Pepi    Developer       IT              Rp.3.000.000
1000003 Desi    Sysadmin        IT              Rp.5.000.000
1000004 Anisa   Manager         Marketing       Rp.6.000.000
1000005 Rendi   DBA             IT              Rp.7.000.000

Contoh 1 : Metode default pada awk



Secara default awk mencetak setiap baris dalam sebuah file.

root@laborate:/home/apocalypsix/awk# awk '{print;}' pegawai.txt
1000001 Deri    Manager         Sales           Rp.2.000.000
1000002 Pepi    Developer       IT              Rp.3.000.000
1000003 Desi    Sysadmin        IT              Rp.5.000.000
1000004 Anisa   Manager         Marketing       Rp.6.000.000
1000005 Rendi   DBA             IT              Rp.7.000.000

Pada contoh diatas kita tidak membuat sebuah pola, jadi action ini berlaku untuk semua baris tanpa penyaringan. Action print tanpa argumen akan mencetak semua baris juga secara default, jadi ini mencetak semua baris dari file tersebut. Statement action harus berada dalam kurung kurawal seperti contoh diatas.


Contoh 2 : Print baris-baris tertentu yang cocok dengan pola



root@laborate:/home/apocalypsix/awk# awk '/Deri/
> /Anisa/' pegawai.txt
1000001 Deri    Manager         Sales           Rp.2.000.000
1000004 Anisa   Manager         Marketing       Rp.6.000.000


Dari contoh diatas awk mencetak baris-baris tertentu yang memiliki kecocokan dengan pola. Pola yang kita buat adalah “Deri” dan “Anisa”. Awk mencari baris yang mengandung “Deri” maupun “Anisa” pada baris manapun dalam file tersebut.


Contoh 3 : Hanya mencetak field tertentu secara spesifik.



Algoritma memiliki angka dari variable yang dibangun. Untuk setiap record pada baris dalam sebuah file, ini di pecah oleh pemisah karakter blank space atau whitespace secara default dan tersimpan dalam variabel $n. Jika pada baris hanya memiliki 4 kata, maka akan tersimpan sebagai $1, $2, $3, $4. $0 mewakili semua baris. NF yang dibuat dalam variabel yang mewakili jumlah field dalam record.

root@laborate:/home/apocalypsix/awk# awk '{print $2,$5;}' pegawai.txt
Deri Rp.2.000.000
Pepi Rp.3.000.000
Desi Rp.5.000.000
Anisa Rp.6.000.000
Rendi Rp.7.000.000
root@laborate:/home/apocalypsix/awk# awk '{print $2,$NF;}' pegawai.txt
Deri Rp.2.000.000
Pepi Rp.3.000.000
Desi Rp.5.000.000
Anisa Rp.6.000.000
Rendi Rp.7.000.000

Dari contoh diatas $2 dan $5 mewakili Nama dan Gaji. Kita bias mendapatkan gaji menggunakan $NF juga, dimana $NF mewakili field terakhir.


 Contoh 4 : Inisialisasi dan Final Action



Awk memiliki 2 pola penting yang dibuat spesifik berdasarkan kata kunci yang disebut BEGIN dan END.

Syntax:

BEGIN { Actions}
{ACTION} # Action for everyline in a file
END { Actions }

# is for comments in Awk

Action yang spesifik pada bagian BEGIN akan meng-eksekusi sebelum memulai pembacaan baris file dari input. Action END akan melakukannya setelah selesai membaca dan memproses baris dalam input.

root@laborate:/home/apocalypsix/awk# awk 'BEGIN {print "Nama\tPosisi\tDivisi\tGaji";}
> {print $2,"\t",$3,"\t",$4,"\t",$NF;}
> END {print "Report Generated\n-------------";
> }' pegawai.txt
Nama     Posisi          Divisi          Gaji
Deri     Manager         Sales   Rp.2.000.000
Pepi     Developer       IT      Rp.3.000.000
Desi     Sysadmin        IT      Rp.5.000.000
Anisa    Manager         Marketing       Rp.6.000.000
Rendi    DBA     IT      Rp.7.000.000
Report Generated
-------------

Dari contoh diatas, awk mencetak semua headline dan baris terakhir untuk laporan.


Contoh 5 : Mencari pegawai yang memiliki ID lebih besar dari 1000002



root@laborate:/home/apocalypsix/awk# awk '$1 >1000002' pegawai.txt
Nip     Nama    Posisi          Divisi          Gaji
1000003 Desi    Sysadmin        IT              Rp.5.000.000
1000004 Anisa   Manager         Marketing       Rp.6.000.000
1000005 Rendi   DBA             IT              Rp.7.000.000

Dari contoh diatas, pertama field $1 adalah ID karyawan. Jadi jika $1 lebih besar dari 1000002, maka lakukan action default print untuk mencetak semua baris.


Contoh 6 : Cetak list dari karyawan dari Divisi IT



Nama divisi berada pada field ke-4. Jadi perlu di cek jika $4 cocok dengan string “IT”, jika ya print baris nya.

root@laborate:/home/apocalypsix/awk# awk '$4 ~/IT/' pegawai.txt
1000002 Pepi    Developer       IT              Rp.3.000.000
1000003 Desi    Sysadmin        IT              Rp.5.000.000
1000005 Rendi   DBA             IT              Rp.7.000.000

Operator ~ adalah untuk pembanding regular expression. Jika cocok action default (Print semua baris akan dilakukan)


Contoh 7 : Print jumlah pegawai yang berada di Divisi IT



Contoh dibawah ini, lakukan cek jika divisi nya IT. Jika ya, pada action, hanya menghitung jumlah variabel, dimana telah diinisialisasi dengan 0 pada bagian BEGIN.

root@laborate:/home/apocalypsix/awk# awk 'BEGIN {count=0;}
> $4 ~ /IT/ { count++; }
> END { print "Jumlah karyawan divisi IT =",count;}' pegawai.txt
Jumlah karyawan divisi IT = 3

Lalu dibagian akhir dari proses, hanya lakukan pencetakan isi dari variabel count yang kita buat untuk menghitung karyawan yang berada di divisi IT.

Sekian dulu tutorial awk di linux/unix ini. jika anda mengalami kesulitan jangan sungkan untuk bertanya, saya dengan senang hati akan membantu.

Semoga bermanfaat.
Salam penguin! :)

30 July 2013

Mengatasi Blank Page Drupal

Mungkin diantara kita ada yang pernah mengalami website blank. Artinya meskipun alamat yang kita panggil sudah benar, tetapi apa yang tersaji dilayar ternyata tidak sesuai dengan yang seharusnya.

Hal ini acapkali terjadi pada banyak website dengan cms yang amat familiar sekalipun, seperti Wordpress, Joomla, Drupal dll.

Blank page
Tentunya penyebab dan penanganannya berbeda-beda antara yang satu dengan yang lain.

Karena kebetulan saya juga pernah mengalami website yang blank tersebut, maka disini saya coba untuk sedikit berbagi tips atau sekedar membuat catatan khusus untuk saya dimasa depan jika berhadapan dengan "blank page".

Karena blank terakhir yang saya dapati adalah dari Drupal, maka kali ini kita coba mengatasinya khusus untuk D7x.

Sebenarnya kalau terjadi error pada D7x, kita akan mendapatkan error message pada layar kita.

Tapi parahnya, saya mematikan fitur display error message. Jadinya saat terjadi error, termasuk blank screen-pun disana tidak ditampilkan informasi apapun.

Rasain lu :) gitu kali ya? hahahaha..

Kesimpulan

Kita harus mengetahui error yang sebenarnya menimpa website kita. 

Terus caranya gimana agar kita bisa mengetahui error message tersebut?

Begini jo

Coba kita buka dan edit file index.php yang ada di root direktori D7x, kemudian setelah terbuka kita tambahkan kode berikut setelah tag

Jangan lupa ya.. setelah tag
/*Menampilkan error message*/
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);


Setelah, selesai mengedit file index.php, simpan perubahan yang kita lakukan. Langkah berikutnya adalah merefresh halaman "blank page" yang tadi kita buka.

Kalau beruntung :) hahaha.. ya seharusnya dan biasanya kita akan melihat error message dari website kite. Hah? kite? Iye.. kita maksudnya :)

Artinya kita telah mendapatkan wangsit alias petunjuk apa yang harus diperbaiki untuk bisa menampilkan kembali wajah website kita.

Terus? kalau berlum juga tampil?  Gimana dong?
Jawabnya : wah parah tuh :) semacam penyakit ghoib  kali ya? :) hahaha..
Tentunya bukanlah jo, hal yang bisa kita lakukan adalah dengan melihat kembali apache atau nginx log yang kita pakai.

Wah panjang juga neh dakwahnya, moga dapet pahala, mumpung bulan puasa :)


Konfigurasi Proxy HTTP di Linux Ubuntu

Hiya...kita bertemu lagi di blog Tutorial Linux Ubuntu Berbahasa Indonesia. Di artikel ini saya akan bercerita tentang cara konfigurasi proxy http di linux.
Bagi anda yang mengalami kasus keterbatasan IP Public sedangkan web yang harus anda hosting cukup banyak tentu ini jadi permasalahan sendiri bagi seorang admin, apalagi jika sang admin baru melek didunia server seperti saya :)

Dengan keterbatasan seperti ini bukan berarti anda tidak bisa bergerak leluasa untuk melakukan hosting website perusahaan anda. Solusinya adalah Proxy HTTP. Metode ini tidak hanya berlaku untuk keterbatasan IP Public, tapi juga bisa jadi salah satu antisipasi pengamanan server anda didalam jaringan seluas internet. Mengapa? Karena website-website yang anda hosting berada di belakang Server Proxy HTTP yang berperan untuk menjembatani antara website/server anda dengan jaringan internet. Skema singkatnya seperti ini :

Skema singkat proxy http

Dari gambar diatas bisa dilihat bahwa peranan Proxy http itu bukan hanya sekedar tukang redirect traffic dari internet ke domain tertentu karena keterbatasan IP Public, tapi juga berperan sebagai pengaman server-server yang ada dibelakangnya. Mengapa demikian? Karena siapapun dari internet tidak akan bisa masuk melalui front end (sisi website) untuk mengotak-atik back end (sisi server) karena tentu saja traffic proxy http ini hanya akan melayani untuk port 80 (HTTP) atau 443 (HTTPS) saja, dia akan menolak semua traffic yang tertuju kepada port 22 (SSH) misalnya atau 21 (FTP) atau yang lainnya. 


[ Bagaimana konfigurasinya . . . ? ]

Akan saya jelaskan langkah-langkah konfigurasi proxy http di linux, anda bisa mengikuti langkah-langkahnya. Pertama jika server anda belum terinstall web server apache, lakukan perintah ini untuk menginstall nya :
sudo apt-get install apache2
Selanjutnya jika apache sudah terinstall, cara mengaktifkan proxy http di linux :
sudo a2enmod proxy_http
Sampai disini proxy http sudah aktif pada web server anda. Selanjutnya kita akan melakukan redirect dari server proxy http ke server-server anda yang lain. Anda bisa membuat file baru di /etc/apache2/sites-available/web_anda atau anda bisa juga menyimpan konfigurasi ini di file /etc/apache2/sites-available/default. Saya pribadi memilih membuat file baru, supaya manajemen nya lebih nyaman. Pada file baru tersebut saya memasukkan konfigurasi ini :
# Website 1
<VirtualHost *:80>
        ServerAdmin webamin@apocalypsix.com
        ServerName apocalypsix.com
        ProxyRequests Off
        ProxyPreserveHost On
        ProxyPass / http://10.1.1.120/
        ProxyPassReverse / http://10.1.1.120/
        <Proxy *>
        Order deny,allow
        Allow from all
        </Proxy>

       ErrorLog ${APACHE_LOG_DIR}/error.log
       LogLevel warn

 \"%{Referer}i\" \"%{User-Age$
       CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Network DMZ milik saya adalah 10.1.1.0/24,  Anggap saja IP Private server proxy http ini adalah 10.1.1.10, IP Address 10.1.1.120 adalah IP Address server web yang dijadikan tujuan proxy http sebagai domain apocalypsix.com. Dari sisi server web (10.1.1.120) saya tidak melakukan konfigurasi apapun pada web server apache selain memberikan domain pada bagian ServerName. Untuk catatan access.log, saya menyatukan semua catatan traffic kesemua server web pada satu file di /var/log/apache2/access.log.

Setelah anda membuat konfigurasi tadi, bagi anda yang menyimpan konfigurasi ini di file /etc/apache2/sites-available/default cukup melakukan restart apache saja denga perintah :
apachectl graceful atau service apache2 restart/reload atau /etc/init.d/apache2 restart/reload
Namun bagi anda yang mengikuti cara saya dengan membuat file baru di /etc/apache2/sites-available/web_anda, sebelum melakukan restart apache anda harus mengaktifkan konfigurasi website tersebut dengan mengeksekusi perintah ini :
a2ensite web_anda
Sampai disini konfigurasi web_anda sudah aktif. Lalu anda lakukan restart apache. Dengan begini keterbatasan IP Public bukanlah masalah lagi bagi anda, bahkan memberikan pengamanan khusus kepada server web_anda.

Semoga tutorial cara konfigurasi proxy http di linux ini bisa bermanfaat. Jika menghadapi masalah dalam konfigurasi ini jangan sungkan untuk bertanya, silahkan ajukan pertanyaan anda di komentar, saya akan dengan senang hati memberikan penjelasan.

Semoga bermanfaat,
Salam Penguin! :)

29 July 2013

Cara meremote MySQL dengan Phpmyadmin di Linux Ubuntu

Ada baiknya sebuah server database tidak dibuka untuk publik karena sangat rentan sekali untuk diserang pihak-pihak yang tidak bertanggung jawab. Seorang sistem administrator pasti menjadi sasaran bully perusahaan ketika data perusahaannya berhasil dibobol oleh seorang hacker. Apalagi jika data-data tersebut adalah data-data yang sangat krusial. Serangan hacker seakan menjadi terror bagi para sistem administrator. Berbagai cara mereka lakukan untuk mengamankan server mereka, tidak jarang juga mereka mendapatkan bencana ini padahal mereka sudah mengamankan server sebaik mungkin. Pada dasarnya kata AMAN 100% pada sebuah jaringan itu tidak ada, brand sebesar facebook saja mempunyai celah keamanan untuk diretas, apalagi jika kita tidak melakukan apapun untuk mengamankan server?

Port 3360 (MySql) adalah salah satu sasaran para hacker untuk diretas, serangan MySql injection menjadi salah satu cara mereka untuk memasukinya. Apalagi jika kita menginstall phpmyadmin dan tidak membuat sistem keamanan diatasnya? Lewat sana, bahkan para hacker mungkin sekali untuk masuk sebagai root. Mengerikan!

Pada linux hal ini bisa diatasi dengan berbagai cara, yang pertama adalah mungkin kita mengubah URL phpmyadmin di linux menjadi nama lain yang menurut kita susah ditebak siapapun, metode ini menurut saya sangat recommended. Cara yang kedua adalah membuka portal phpmyadmin by request, artinya portal ini hanya akan dibuka jika ada rekan kerja kita yang meminta akses, jika sudah selesai kita bisa menutupnya lagi, menurut saya cara ini juga cukup recommended untuk diterapkan di server kita. Cara yang ketiga adalah, Memberikan hak akses pada server lain yang juga diinstall phpmyadmin agar dapat meremote server kita.

Dari ketiga metode yang saya jelaskan, alangkah sangat baik sekali jika kita menerapkan ketiganya. Kenapa tidak? Lebih aman lebih baik bukan. Dalam artikel ini saya akan menjelaskan ketiga metode tadi dengan step by step sejelas-jelasnya. Dalam percobaan ini saya menggunakan Linux Ubuntu Server 12.04 LTS.

Pertama-tama kita install dulu phpmyadmin di server yang akan digunakan untuk kita meremote database. Cara menginstall phpmyadmin :


sudo apt-get install phpmyadmin


Pilih webserver yang anda gunakan. Disini saya menggunakan apache.


Pada bagian ini saya memilih "no" karena saya ingin settingan phpmyadmin saya sama persis dengan mysql saya

Sampai disini installasi phpmyadmin selesai. Selanjutnya, karena kita akan menerapkan ketiga metode tadi pada server kita, maka kita akan mengubah url phpmyadmin sesuai keinginan kita. Untuk melakukannya kita buka file /etc/phpmyadmin/apache.conf lalu ubah bagian ini dibagian paling atas. Cara merubah url phpmyadmin di linux :

# phpMyAdmin default Apache configuration

Alias /phpmyadmin /usr/share/phpmyadmin
Ubah menjadi seperti ini :
# phpMyAdmin default Apache configuration

Alias /restrictedarea /usr/share/phpmyadmin
Anda melihat bedanya kan? Setelah perubahan, jangan lupa untuk merestart apache anda!

Sampai disini metode pertama "merubah url phpmyadmin di linux" telah selesai! Kita akan lanjut ke metode selanjutnya kita akan membuka atau menutup phpmyadmin kita by request. Caranya sangat mudah, anda cukup masuk kedalam file tadi (/etc/phpmyadmin/apache.conf). Pada bagian anda merubah url, berikan tanda comment untuk mendisable nya.
# phpMyAdmin default Apache configuration

#Alias /restrictedarea /usr/share/phpmyadmin
Untuk membuktikannya silahkan datangi url anda, misalnya http://webanda/restrictedarea, maka yang muncul adalah URL NOT FOUND. Metode kedua, selesai! Selalu restart apache anda setelah melakukan perubahan ini.

Sekarang kita lanjut ke metode ketiga, yaitu menghubungkan phpmyadmin yang baru saja kita install, ke server lain. Pada sisi server tujuan, kita tidak diharuskan menginstall phpmyadmin. Itu optional! Yang perlu dicatat adalah bahwa kita harus memberikan hak akses dari Server utama kepada server phpmyadmin kita. Dari sisi server utama, kita hanya cukup melakukan GRANT ACCESS saja. Silahkan masuk ke mysql server utama anda. Syntax dibawah adalah cara memberikan hak akses dan membuat user di mysql.
GRANT SELECT ON database.* TO 'user'@'host' IDENTIFIED BY 'password';
Perlu dicatat bahwa grant access diatas adalah hanya untuk select saja. Setelah melakukan grant access, lupakan server utama anda. Sekarang kita memberikan beberapa konfigurasi di sisi server phpmyadmin. Pertama kita copy file /etc/phpmyadmin/config.inc.php menjadi /etc/phpmyadmin/config.inc.php.ori. Kedua kita buka file /etc/phpmyadmin/config.inc.php dan tambahkan sintaks ini pada line 85 :
$cfg['Servers'][$i]['verbose'] = 'DB_CRUCIAL';
$cfg['Servers'][$i]['host'] = 'SERVER_TUJUAN_ANDA';
$cfg['Servers'][$i]['port'] = '3306';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
Setelah melakukan perubahan ini jangan lupa merestart apache. Sampai disini anda bisa meremote server penting anda dengan phpmyadmin di server yang lain dengan hak akses yang terbatas. Bahkan kita bisa memberikan hak akses untuk beberapa tabel saja. Untuk memberikan grant access beberapa tabel saja cukup mudah, sintaksnya seperti ini :
GRANT SELECT ON database.table_anda TO 'user'@'host' IDENTIFIED BY 'password';
Lakukan seperti diatas sampai table-table yang anda grant selesai.

Sampai disini saya pikir sudah cukup, jika anda mempunyai pertanyaan silahkan posting di komentar. Saya pasti usahakan untuk menjawab pertanyaan anda.

Semoga bermanfaat,
Salam penguin! :)

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! :)

Cara Menjalankan Winbox Mikrotik di Linux Mint, Ubuntu, dll

Bagaimana cara menjalankan Aplikasi Winbox Mikrotik di Linux? Pertanyaan itu mungkin pernah mencuat di benak anda pengguna open surce terutama Linux. Seperti yang kita tau winbox adalah aplikasi yang berfungsi untuk melakukan konfigurasi pada sistem operasi jaringan RouterOS Mikrotik dimana aplikasi Winbox ini berjalan pada OS Windows. Terus gimana caranya biar winbox bisa berjalan di Linux? Nah, kali ini kita akan membahas pertanyaan tersebut.

Winbox Mikrotik dapat dijalankan pada sistem operasi Linux, seperti Ubuntu, Linux Mint, Debian, dan distro linux lainnya. Cara menjalankan winbox Mikrotik di Ubuntu dan Linux Mint cukup mudah. Caranya sama saja, yaitu dengan menggunakan aplikasi Windows Emulator atau sering disebut wine. Dengan menggunakan wine kita dapat menjalankan aplikasi windows di Linux. 

Instalasi Wine

Silakan install wine dulu pada linux anda masing-masing. Anda dapat melihat cara install wine disini. Berikut ini saya pandu untuk instalasi Wine pada Linux Mint dan Ubuntu. Dalam hal ini saya menggunakan Linux Mint 15 codename "Olivia".
1. Buka Terminal.
2. Tambahkan repository wine melalui perintah berikut :
sudo add-apt-repository ppa:ubuntu-wine/ppa
3. Update repository
sudo apt-get update
4. Download dan Install Wine
sudo apt-get install wine
5. Silakan tunggu hingga proses instalasi selesai. Proses ini agak lama, tergantung koneksi internet anda, karena akan beberapa kali download installer.

Download Winbox

Setelah Wine selesai diinstall, silakan download winbox mikrotik untuk linux terbaru dari Mikrotik dengan menggunakan perintah berikut ini pada terminal :
wget http://www.mikrotik.com/download/winbox.exe
Setelah proses download selesai, buka Winbox Mikrotik dengan perintah :
wine winbox.exe


Mikrotik Winbox loader akan muncul seperti paga gambar di atas. Tinggal isikan IP address, dan login detail nya dan klik connect. Tampilan Winbox pada Linux nya seperti pada gambar berikut ini :


Winbox Mikrotik saya jalankan pada Linux Mint 15 dan dapat bekerja dengan baik dan berjalan lancar. Silakan anda coba menggunakan Winbox Mikrotik pada Linux anda masing-masing.

27 July 2013

Menghapus File lebih dari x hari di Linux


Hiyaa, ketemu lagi di blog Tutorial Linux Ubuntu Berbahasa Indonesia. Metode ini biasanya digunakan untuk daily backup pada sebuah storage yang dikhususkan untuk backup. Retensi backup yang diberikan bisa diatur sesuai keinginan kita. Mengapa harus seperti ini? Jawabannya adalah untuk menghemat space di storage kita. Bayangkan saja kalau setiap hari membackup pasti lama-lama storage kita akan penuh, maka dari itu file-file backup yang lama bisa di burning ke DVD/CD, atau kita menghapusnya seperti topik yang akan saya bahas.

Metode ini menggunakan Shell Script yang akan di eksekusi dengan crontab setiap jangka waktu tertentu, sudah pasti ini akan menjadi patokan retensi backup kita kan. :) sebenarnya tidak terlalu sulit untuk melakukannya, jadi jangan khawatir. Ikuti saja langkah-langkah cara menghapus file lebih dari x hari ini, anda juga bisa dengan bebas menjiplak shell script yang akan saya buat :)

Skenario :
Kita melakukan daily backup pada folder /home/apocalypsix/backup/. Didalam folder tersebut pasti akan tersimpan file backup dengan timestamp yang berbeda-beda. Setiap 7 hari jam 12:01 malam crontab akan mengeksekusi shell script dibawah ini.

Sample script :
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin

SEVENDAY=`date "+%d.%m.%Y" --date="-7 days"`

rm /home/apocalypsix/backup/backup_$SEVENDAY.tar.gz

  • Pada baris pertama dan kedua kita menentukan eksekutor shell script.
  • Pada baris ketiga kita sedang membuat aturan retensi hari, untuk bagian "--date="-7 days" anda bisa mengubah angkanya menjadi hari yang anda inginkan.
  • Pada baris keempat kita akan menghapus semua file yang bernama backup_ dengan memasukkan variabel retensi serta ekstensi file.
Untuk mengatur shell script ini berjalan setiap 7 hari, kita menggunakan crontab. Asumsi bahwa shell script tersimpan di /home/apocalypsix/shell/delete7day.sh. Jangan lupa untuk menambahkan permission x pada shell script anda, chmod 700 /home/apocalypsix/shell/delete7day.sh.
1 0 * * 0 /home/apocalypsix/shell/delete7day.sh
Dari crontab diatas, shell script kita akan di eksekusi pada hari ke 0 (hari minggu), pada jam 12:01 malam.

[ TAMBAHAN ]


Parameter tambahan untuk settingan retensi ada banyak. Parameter yang saya tau adalah bahwa pada bagian --date="x days", pada bagian "x" mempunyai parameter tersendiri, seperti jika kita membuat file untuk 5 hari kedepan maka value dari "x" maka tidak boleh memakai tanda minus (-). Tanda minus hanya digunakan jika anda ingin melakukan sesuatu pada beberapa hari kebelakang. Lain hal nya jika anda ingin melakukan penghapusan tadi pada setiap file sehari sebelum tanggal sekarang. Value dari "x" tadi harus menjadi "yesterday".

Sample script :
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin


YESTERDAY=`date "+%d.%m.%Y" --date="yesterday"`

rm /home/apocalypsix/backup/backup_$YESTERDAY.tar.gz
Dalam shell script diatas retensi penghapusan menjadi 1 hari. Tentunya ini harus disesuaikan pula dengan settingan crontab anda karena settingan crontab tersebut saling terkait dengan shell script anda. Crontab anda harusnya menjadi seperti ini :
1 0 * * * /home/apocalypsix/shell/delete1day.sh

Sekian dulu postingan kali ini, jika ada pertanyaan anda bisa tanyakan melalui komentar.
Semoga bermanfaat dan,
Salam Penguin :)

Otomatis Menyetujui saat Menginstall Aplikasi Ubuntu


Kadang kala kita harus menginstall beberapa aplikasi dalam satu perintah secara bersamaan sob, atau kita Ada kalanya koneksi kita lempot sob, dan saat me request aplikasi maka akan makan waktu lama bukan ada kalanya sih seringnya ya :P.









Nah dan saat yang bersamaan kita hendak minum, ke kamar kecil atau melakukan tugas lain, tentu untuk beberapa orang sangat senang melakukan beberapa

26 July 2013

youtube-dl Video Downloader

Jika sering melihat video di youtube, mungkin kita pernah juga mendownload video tersebut.

Belakangan ini telah banyak berbagai aplikasi downloader yang bisa mendowload video dari youtube.

Kali ini saya ingin sekedar membagi cerita tentang aplikasi yang bisa juga digunakan untuk mendownload video youtube.

Jika biasanya menggunakan plugin ataupun aplikasi berbasis GUI, ternya ada juga aplikasi youtube downloader berbasis teks command.

Nama aplikasinya yaitu youtube-dl. Kita bisa menginstallnya diubuntu dan mendownload video hanya dengan mengcopy link video yang ingin kita download.

Perintah :


youtube-dl [link video]

Misal :

youtube-dl youtube.com/watch?v=fH2VHiIW_dE

Jikta kita telah tahu cara downloadnya, sekarang mari kita coba menginstallnya. Caranya dengan menambahkan repository, berikut caranya :

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install youtube-dl


Ok

Ubuntu - Gnome Shell vs. Pantheon Shell

Hiya, ketemu lagi di blog Tutorial Linux Ubuntu Berbahasa Indonesia. Jika anda memakai ubuntu dan bingung antara memilih Gnome Shell atau Pantheon Shell sebagai Desktop Environment anda, pada postingan ini saya akan membagikan sedikit pengalaman saya selama memakai keduanya.

Gnome Shell Desktop Environment


Gnome Shell mempunyai tampilan yang menarik, simple tapi powerful. Jika dibandingkan dengan Desktop Environment bawaannya Ubuntu (Unity) Gnome Shell lebih ringan dan nyaman dipakai. Aplikasi pendukung untuk optimalisasi juga cukup menarik, diantaranya ada Gnome Shell Extension dan Tweak Tool. Untuk Themes pun ada banyak pilihan yang bisa digunakan, seperti Windows theme dan icon theme. selain itu terminal-nya pun lebih nyaman daripada Unity. Kita bisa memberikan background sesuka hati didalam terminal. Keren

Untuk Tweak tools saya menggunakan dconf-editor. Disana saya bisa meng-customize tampilan menu, ukuran menu dan font standard yang digunakan, dan bahkan saya bisa mengubah ukuran icon application pada menu, karena dirasa terlalu besar dan kurang nyaman dilihat. Tapi untuk melakukannya anda harus menggunakan CLI, di postingan selanjutnya akan saya bahas cara meng-customize Gnome Shell.

Gnome Shell Desktop Environment
Gnome Shell Desktop Enviroment

Ketika saya sedang asyik-asyiknya menggunakan Gnome Shell sebagai Desktop environment saya, saya mengalami kejadian aneh seperti hang, tapi anehnya cursor bisa berfungsi. Entahlah apa namanya ini tapi hal ini semakin sering terjadi ketika saya sedang bekerja. Saya pernah menunggu kejadian ini dan berharap akan kembali normal, tapi setelah 20 menit apa yang saya harpkan tidak kunjung terjadi. Situasi ini memaksa saya melakukan hal yang kejam T_T
Dengan terpaksa saya harus melakukan hardboot Laptop saya, karena Ctrl + Alt + Del pun tidak bekerja. Dari sini saya mulai kecewa pada Gnome Shell. Saat itu, gara-gara kejadian ini banyak pekerjaan saya yang belum tersimpan menjadi hilang gara-gara hardboot.

Pantheon Shell Desktop Environment


Kejadian kurang menyenangkan bersama Gnome Shell membuat saya kecewa. Setelah mencari-cari referensi akhirnya saya memutuskan untuk pindah dari Gnome Shell ke Pantheon Shell - Elementary. Dan ternyata saya menemukan sesuatu yang WOOW disini, tampilannya lebih simple, cukup mirip dengan MacOS Lion apalagi ketika saya memakai cursor MacOS Lion juga. Tapi itu belum seberapa, saya merasakan performa Laptop saya pun seperti bertambah. YA! Pantheon Shell lebih ringan dari Gnome, percaya atau tidak untuk membuktikannya silahkan anda coba sendiri. Pada desktop bagian bawah ada Dock bar mirip dengan MacOS, kita bisa mengatur apa saja yang harus berada di Dock Bar tersebut. Selain itu, pada Pantheon Shell juga kita bisa mengatur agar ketika mouse di mouse over disatu sudut maka akan melakukan suatu aksi tertentu seperti minimize, close, open start menu, switch application, atau switch desktop. Keren bukan! :D

Pantheon Shell Desktop Environment (Elementary)

Pada setiap environment biasanya akan membawa beberapa aplikasi bawaaan seperti misalnya browser. Memang tidak ada yang sempurna 100%, Midori...browser bawaan Pantheon Shell menurut saya tidak recommended, berat! Saya lebih suka menggunakan Google Chrome disini.

Untuk Tweak Tools, kita bisa menggunakan "Ubuntu Tweak Tool". Anda bisa dengan mudah mendapatkannya di Software Center. Dengan tool ini saya juga bisa dengan mudah meng-customize tampilan, login screen, theme, dan cursor theme. Hal yang saya suka pada Tweak Tool ini adalah Janitor. Sebuah tool semacam Tune Up Utilities pada Windows. Janitor bisa digunakan untuk membersihkan cache pada semua paket dan aplikasi, ini membuat Ubuntu saya menjadi segar seperti baru diinstall ulang. Nyaman sekali!

Kesimpulan :
Sebenarnya semua tergantung pada user nya masing-masing. Tapi menurut saya Pantheon Shell jauh lebih baik dibandingkan dengan Gnome Shell. Ada banyak hal yang tidak saya temukan pada Gnome Shell dan saya menemukannya di Pantheon Shell. Tidak menghambat Berjalan maksimal tapi tidak menghambat performa platform. Semakin sering saya mengupdate Pantheon Shell saya juga merasakan kenyamanannya bertambah. Bagaimana dengan anda, itu semua tergantung pada anda sendiri :)

Saya cukupkan dulu artikel hari ini, jangan lupa terus kunjungi blog Tutorial Linux Ubuntu Berbahasa Indonesia. Dan jika anda mengalami kesulitan anda bisa bertanya di komentar, saya akan dengan senang hati akan membantu :)

Semoga bermanfaat,
Salam Penguin! :)

25 July 2013

Google Luncurkan Android versi 4.3


Hai, sahabat Linuxku.com, ada kabar super baik nih untuk kalian para pecinta Android. Google kini sudah merilis Android versi terbarunya lho, yaitu versi 4.3. Kalau kalian tanya apa codename dari rilis terbaru ini, jawabannya adalah masih sama seperti versi sebelumnya 4.2.2, yaitu Jelly Bean.

Walaupun masih dalam keluarga Jelly Bean, namun kabarnya Android versi 4.3 ini membawa banyak fitur dan perubahan baru yang semakin membuat kalian nyaman dalam menggunakannya.

Beberapa fitur terbaru itu adalah :

1. Support OpenGL ES 3.0 yang memungkinkan developer membuat game yang lebih bagus dalam sisi grafis di perangkat Android.
2. Memiliki keyboard baru dengan fitur pengkoreksian otomatis yang lebih baik.
3. Adanya penambahan fitur Restricted Users sehingga dapat memungkinkan kalian mengatur apa-apa saja yang boleh diakses oleh akun-akun tertentu.
4. DRM APIs yang memudahkan perusahaan media menampilkan kontennya. Misalnya streaming video definisi tinggi lebih gampang dilakukan.

Berikut ada sedikit video yang mengulas perbedaan versi Android 4.3 dengan versi yang terdahulu 4.2.2



Perangkat-perangkat yang akan langsung dibenamkan OS terbaru ini adalah Nexus 4, Nexus 7, Nexus 10, dan Samsung Galaxy S4 Google Edition.

Hayo, gimana? mau langsung coba?

Semoga bermanfaat :)

SUMBER