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 = "[email protected]";
$name_pengirim = "Nama Pengirim e-Mail";
$pengirim = "[email protected]";
$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!

Wagiman Wiryosukiro

Petani Sistem Informasi, tukang las plugin & themes Wordpress. Co-Founder SistemInformasi.biz. Saat ini aktif sebagai Developer & kontributor di OpenMandriva Linux.

You may also like...

8 Responses

  1. Roni says:

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

  2. arifin says:

    pak kalo di windows seperti apa coding nya?

    • Luthfi Emka says:

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

      • arifin says:

        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 says:

    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 says:

      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 says:

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

Leave a Reply to arifin Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: