Blog Emka

Portal tutorial linux, pemrograman sistem informasi, computer security & informasi santri Indonesia

PHP

Belajar PHP: Membuat Cron Backup database + kirim hasil ke email Gmail

Backup adalah aksi wajib bagi pengelolaan sebuah sistem. Ada banyak cara dan jalan dalam membuat backup, dari yang manual sampai yang otomatis. Teknik backup data yang akan kita lakukan kali ini akan memanfaatkan skrip PHP untuk membackup database, memampatkannya menjadi format GZIP dan mengirimnya ke email Gmail. Kenapa Gmail? Karena Gmail menawarkan storage yang besar untuk tiap akunnya (sekitar 7Giga lebih saat artikel ini dipublish).

Ada beberapa software/pustaka yang akan kita gunakan, antara lain mysqldump bawaan MySQL, class PHPMailer dan aplikasi gzip bawaan Linux. Berikut contoh skripnya:

<?php
/*
* Contoh Skrip backup database + gzip + kirim ke Gmail
*
*/

// definisikan nama file backup
$time = date("y-m-d_H-i-s");
$filename = 'sia_'.$time;

// eksekusi mysqldump dg tambahan aksi gzip supaya file lebih kecil/terkompresi
exec("mysqldump -unamauser -ppasswordmuapa --add-drop-table namatabel | gzip -c > /home/cron/sql/$filename.sql.gz");

$tujuan = "alamattujuan@gmail.com";
$name_pengirim = "Nama Pengirim e-Mail";
$pengirim = "alamatasalpengirim@namadomain.namadomain";
$letak_file = "/home/cron/sql";
$nama_file = "$letak_file"."/$filename.sql.gz";
$subject = "Subjek/Judul e-Mail";
$message = "Isi e-Mail. Inilah backup data dari sistem. Silakan unduh attachment $filename.sql.gz jika diperlukan";

// mulai inisiasi pengiriman email
$mail = new PHPMailer;
$mail->ClearAddresses();
$mail->AddAddress($tujuan, $tujuan);
$mail->From = $pengirim;
$mail->FromName = $name_pengirim;
$mail->Subject = $subject;
$mail->Body = $message;
$mail->AddAttachment($nama_file, $filename.".sql.gz");

if ($mail->Send()){
   echo 'email terkirim';
}else{
  echo 'email gagal karena'.$mail->ErrorInfo;
} 

Langkah selanjutnya cukup tambahkan aksi ke crontable server anda, misalnya saya ingin mengeksekusi skrip ini tiap jam 3 pagi:

10 3 * * *  php /var/www/letak_script_backup_anda.php

Selamat mencoba!

8 Comments

  1. Roni

    Wah, masih blm ngerti gan..
    hiks… hiks..

    • admin

      silakan dipraktekkan dulu mas roni, atau pelajari dasar-dasar php dulu, php-exec dan php-mail

  2. arifin

    pak kalo di windows seperti apa coding nya?

    • Luthfi Emka

      Tidak ada cron di windows mas Arifin. Cara yang bisa kita gunakan yaitu menggunakan Task Scheduller.

      • arifin

        iya maksud saya script php nya backup kalo untuk di windows seperti apa pak ? kemudian biar auto send di ftp server backup, makasih pencerahan nya 😀

  3. asbi

    Kalo misalkan ngirim status gimana ya mas bisa apa engga , jadi kalo misalkan kita aplikasi ga berjalan nahh langsung ngirim ke mail itu bisa apa engga ?

    • Luthfi Emka

      kalau bikin telemetri begitu, mending pake satu mesin lagi diluar mesin yang digunakan. jadi kalau mesin yg digunakan cron itu mati, aplikasi telemetri untuk deteksi juga ga ikutan mati mas

  4. asbi

    bisa ga kalo buat melihat status apache pada server aktif atau tidak ya ?
    mohon pencerhan nya ya mas

Leave a Reply

Theme by Anders Norén

%d bloggers like this: