cron_dayli.php - server is for web backups and sql backups
Here is small code for sql backup with cron_dayli.php called by cron_daily.sh. Maybe someone help you :)
uses('ini_parser,file,services,getconf'); $server_config = $app->getconf->get_server_config($conf['server_id'], 'server'); $backup_dir = $server_config['backup_dir']; if($backup_dir != '') { if(!is_dir($backup_dir)) { mkdir(escapeshellcmd($backup_dir), 0750, true); } $sql = "SELECT * FROM web_domain WHERE type = 'vhost'"; $records = $app->db->queryAllRecords($sql); if(is_array($records)) { foreach($records as $rec) { if(rec['backup_interval'] == 'daily' or (
rec['backup_interval'] == 'weekly' && date('w') == 0) or ($rec['backup_interval'] == 'monthly' && date('d') == '01')) {
$web_path = $rec['document_root'];
$web_user = $rec['system_user'];
$web_group = $rec['system_group'];
$web_id = $rec['domain_id'];
$web_backup_dir = backup_dir.'/web'.
web_id;
if(!is_dir(web_backup_dir)) mkdir(
web_backup_dir, 0755);
chmod($web_backup_dir, 0755);
chown($web_backup_dir, 'root');
chgrp($web_backup_dir, 'root');
$gid = $rec['sys_groupid'];
sql2 = "SELECT * FROM web_database WHERE sys_groupid='".
gid."'";
$records2 = $app->db->queryAllRecords($sql2);
if(is_array($records2)) {
foreach($records2 as $rec2) {
$dbname = $rec2['database_name'];
$dbuser = $rec2['database_user'];
$dbpass = $rec2['database_password'];
$sid = $rec2['server_id'];
}
}
sql3 = "SELECT * FROM server WHERE server_id='".
sid."'";
$rec3 = $app->db->queryOneRecord($sql3);
$dbhost = $rec3['server_name'];
$fullhostname = exec("hostname -f");
if ($fullhostname == $dbhost) { $dbhost = "localhost"; }
exec('mysqldump -h '. $dbhost .' -B '. $dbname. ' -u '. $dbuser .' -p'. $dbpass .' | gzip -9 >'. $web_backup_dir .'/sql.gzip');
// Rename or remove old backups
backup_copies = intval(
rec['backup_copies']);
if(is_file(web_backup_dir.'/sql.'.
backup_copies.'.gzip')) unlink(web_backup_dir.'/sql.'.
backup_copies.'.gzip');
for($n = $backup_copies - 1; $n >= 1; $n--) {
if(is_file(web_backup_dir.'/sql.'.
n.'.gzip')) {
rename(web_backup_dir.'/sql.'.
n.'.gzip',web_backup_dir.'/sql.'.(
n+1).'.gzip');
}
}
if(is_file(web_backup_dir.'/sql.gzip')) rename(
web_backup_dir.'/sql.gzip',$web_backup_dir.'/sql.1.gzip');
// Create backupdir symlink
if(is_link(web_path.'/backup')) unlink(
web_path.'/backup');
symlink(web_backup_dir,
web_path.'/backup');
chmod($web_path.'/backup', 0755);
}
if($rec['backup_interval'] == 'none') {
$web_id = $rec['domain_id'];
$web_user = $rec['system_user'];
web_backup_dir = realpath(
backup_dir.'/sql'.$web_id);
if(is_dir($web_backup_dir)) {
exec('sudo -u '.escapeshellarg(web_user).' rm -f '.escapeshellarg(
web_backup_dir.'/*'));
}
}
}
}
}