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 thoughts on “Belajar PHP: Membuat Cron Backup database + kirim hasil ke email Gmail

      1. 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 😀

  1. 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 ?

    1. 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

Leave a Reply

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

%d bloggers like this: