Senin, 05 Desember 2016

Web Backup PHP

Membuat aplikasi web untuk backup dan restore database menggunakan PHP


Membuat aplikasi web untuk backup dan restore database menggunakan PHP


Latar Belakang
Database banyak digunakan untuk menyimpan data baik pada  aplikasi desktop maupun berbasis web.  untuk alasan keamana, database perlu dilakukan proses backup. sehingga jika suatu saat terjadi kerusakan data, dapat dilakukan proses restore database.
Bagi teman-teman yang terbiasa menggunakan aplikasi phpmyadmin pasti pernah menggunakna fasilitas export dan import database. nah pada artikel kalo ini saya akan membahas tentang sebuah aplikasi sederhana yang digunakan untuk backup dan restore database. Dalam aplikasi ini terdapat 3 file yaitu :

  • index.php yang digunakan untuk backup sekaligus halaman utama aplikasi
  • download_backup_data.php yang digunakan untuk mendownload file database (*.sql) yang sudah tersimpan didalam folder backup
  • recovery_data.php digunakan untuk restore atau mengembalikan  database ke keadaan semula sesuai dengan isi query yang ada didalam file backup database
Script Backup Database
1) Buat nama file untuk backup database

//membuat nama file
$file=date(“DdMY”).’_ri32_backup_data_’.time().’.sql’;
2) Memanggil fungsi backup database
//panggil fungsi dengan memberi parameter untuk koneksi dan nama file untuk backup
backup_tables(“localhost”,”root”,”",”absensi_db“,$file);
3) Fungsi untuk backup database
/*
untuk memanggil nama fungsi :: jika anda ingin membackup semua tabel yang ada didalam database, biarkan tanda BINTANG (*) pada variabel $tables = ‘*’
jika hanya tabel-table tertentu, masukan nama table dipisahkan dengan tanda KOMA (,)
*/
function backup_tables($host,$user,$pass,$name,$nama_file,$tables = ‘*’)
{
//untuk koneksi database
$link = mysql_connect($host,$user,$pass);
mysql_select_db($name,$link);
if($tables == ‘*’)
{
$tables = array();
$result = mysql_query(‘SHOW TABLES’);
while($row = mysql_fetch_row($result))
{
$tables[] = $row[0];
}
}else{
//jika hanya table-table tertentu
$tables = is_array($tables) ? $tables : explode(‘,’,$tables);
}
//looping dulu ah
foreach($tables as $table)
{
$result = mysql_query(‘SELECT * FROM ‘.$table);
$num_fields = mysql_num_fields($result);
//menyisipkan query drop table untuk nanti hapus table yang lama
$return.= ‘DROP TABLE ‘.$table.’;';
$row2 = mysql_fetch_row(mysql_query(‘SHOW CREATE TABLE ‘.$table));
$return.= “\n\n”.$row2[1].”;\n\n”;
for ($i = 0; $i < $num_fields; $i++)
{
while($row = mysql_fetch_row($result))
{
//menyisipkan query Insert. untuk nanti memasukan data yang lama ketable yang baru dibuat. so toy mode : ON
$return.= ‘INSERT INTO ‘.$table.’ VALUES(‘;
for($j=0; $j<$num_fields; $j++)
{
//akan menelusuri setiap baris query didalam
$row[$j] = addslashes($row[$j]);
$row[$j] = ereg_replace(“\n”,”\\n”,$row[$j]);
if (isset($row[$j])) { $return.= ‘”‘.$row[$j].’”‘ ; } else { $return.= ‘”"‘; }
if ($j<($num_fields-1)) { $return.= ‘,’; }
}
$return.= “);\n”;
}
}
$return.=”\n\n\n”;
}
//simpan file di folder yang anda tentukan sendiri. kalo saya sech folder “DATA”
$nama_file;
$handle = fopen(‘./backup/‘.$nama_file,’w+’);
fwrite($handle,$return);
fclose($handle);
}
4) Membuat link untuk download file backup database
<p align=”center”><a style=”cursor:pointer” onclick=”location.href=’download_backup_data.php?nama_file=<?php echo $file;?>‘” title=”Download”>Backup database telah selesai. <font color=”#0066FF”>Download file database</font></a></p>
Script download File Backup database
<?php
$file=$_GET['nama_file'];
// header yang menunjukkan nama file yang akan didownload
header(“Content-Disposition: attachment; filename=”.$file);
// header yang menunjukkan ukuran file yang akan didownload
header(“Content-length: “.$file);
// header yang menunjukkan jenis file yang akan didownload
header(“Content-type: “.$file);
// proses membaca isi file yang akan didownload dari folder ‘data’
$fp  = fopen(“./backup/”.$file, ‘r’);
$content = fread($fp, filesize(‘./backup/’.$file));
fclose($fp);
// menampilkan isi file yang akan didownload
echo $content;
exit;
?>
Script Upload file sebelum di Restore
//definisikan variabel file dan alamat file
$uploaddir=’./restore/‘;
$alamatfile=$uploaddir.$nama_file;
//periksa jika proses upload berjalan sukses
if (move_uploaded_file($_FILES['datafile']['tmp_name'],$alamatfile))
Script untuk restore database
$filename = ‘./restore/’.$nama_file.”;
// Temporary variable, used to store current query
$templine = ”;
// Read in entire file
$lines = file($filename);
// Loop through each line
foreach ($lines as $line)
{
// Skip it if it’s a comment
if (substr($line, 0, 2) == ‘–’ || $line == ”)
continue;
// Add this line to the current segment
$templine .= $line;
// If it has a semicolon at the end, it’s the end of the query
if (substr(trim($line), -1, 1) == ‘;’)
{
// Perform the query
mysql_query($templine) or print(‘Error performing query \’<strong>’ . $templine . ‘\’: ‘ . mysql_error() . ‘<br /><br />’);
// Reset temp variable to empty
$templine = ”;
}}
echo “<center>Berhasil Restore Database, silahkan di cek.</center>”;
Tampilan Output

Backup Database

Restore Database

Download Database
Download
http://www.4shared.com/file/uw0iZKbg/backup-restore.html
Thanks Referensi

Tidak ada komentar:

Posting Komentar