<?php
// Path: config.php
// this file contains all the configuration for the backup script
# /usr/bin/php /home/xddd/mysite.com/backup.php //add cronjob like this
$host = "localhost"; // host name
$user = ""; // username
$password = ""; // password
$database = ""; // database name
$backupFolder = 'backups/'; // backup folder name
$hasOneDriveFolder = true; // if you have a onedrive folder to save the backup file
$fileName = $database .'-' . date('Y-m-d').'-'. time() . '.sql';
// Path: log_error.php
// Compare this snippet from backup.php:
if(!function_exists('log_error')){
function log_error($error){
$log_file = 'error_log.txt';
$log = fopen($log_file, 'a');
fwrite($log, date('Y-m-d H:i:s') . ' ' . $error . PHP_EOL);
fclose($log);
}
}
// create dd function
if(!function_exists('dd')){
function dd(... $data){
// if console connection
if(php_sapi_name() == 'cli'){
foreach($data as $d){
print_r(PHP_EOL);
// add color green to output
print_r("\033[0;32m");
print_r($d);
print_r("\033[0m");
print_r(PHP_EOL);
}
print_r(PHP_EOL);
die();
}
echo '<pre>';
foreach($data as $d){
print_r(PHP_EOL);
print_r($d);
print_r(PHP_EOL);
}
echo '</pre>';
die();
}
}
try{
// create DB connection
$dir = dirname(__FILE__) . $backupFolder . $fileName;
$conn = new mysqli($host, $user, $password, $database);
// Check connection
if ($conn->connect_error) {
// add error to log
log_error("Connection failed: " . $conn->connect_error);
die("Connection failed: " . $conn->connect_error);
}
// create dump of DB
exec("mysqldump --user={$user} --password={$password} --host={$host} {$database} --result-file={$dir} 2>&1", $output);
// create backup file from dump
// add backup file to zip archive
$zip = new ZipArchive();
$zip_name = dirname(__FILE__) .$backupFolder.'/backup-' .$fileName . '.zip';
if($zip->open($zip_name, ZipArchive::CREATE) !== TRUE){
log_error("cannot open <$zip_name>");
exit("cannot open <$zip_name>");
}
$zip->addFile($dir, $fileName);
$zip->close();
unlink(dirname(__FILE__) . $backupFolder .$fileName); //delete sql file only need zip file
// remove old backups (older than 7 days)
$files = glob(dirname(__FILE__) . $backupFolder . '*'); // get all file names
foreach($files as $file){ // iterate files
if(is_file($file) && time() - filemtime($file) >= 60*60*24*7) // if file is older than 7 days 60*60*24*7
unlink($file); // delete file
}
/* if($hasOneDriveFolder){
// add backup file to one drive (using onedrive local folder)
$onedrive = dirname(__FILE__) . '/onedrive/';
$backup = dirname(__FILE__) . '/backup-' .$fileName . '.zip';
copy($backup, $onedrive . $fileName . '.zip');
// remove backup file from server
unlink($backup);
// remove old backups from one drive (older than 7 days)
$files = glob(dirname(__FILE__) . '/onedrive/*'); // get all file names
foreach($files as $file){ // iterate files
// dd($files, $file, time() - filemtime($file));
if(is_file($file) && time() - filemtime($file) >= 60*60*24*7) // if file is older than 7 days
unlink($file); // delete file
}
}*/
// success message
echo 'Backup created successfully';
echo PHP_EOL;
exit(1);
}catch(Exception $e){
log_error($e->getMessage());
die($e->getMessage());
}