alabalist
New Member
Реших да споделя с всички как архивирам базите си данни за сайтовете. Омръзна ми да търся подходящи и недописани Plugins и готови скриптове и затова създадох мой вариант.
Какво върши:
Архивира база данни като първо я сваля и ZIP-ва и я изпраща на определени адреси като прикачен файл, като след това изтрива файла. Разбира се може и да не изпраща, а може и да не трие локалните копия. В името на файла е домейна, базата данни и дата и час на архивирането.
Имайте предвид, че скрипта е подходящ само за малки бази данни от порядъка на 8 MB.
Какво е необходимо:
1. Последна версия на https://github.com/PHPMailer/PHPMailer
2. Скрипта
3. Папка извън public_html
4. Настройка на Cron job с параметър:
Тестван е на superhosting.bg и host.bg, но при host.bg трябва за $dbhost да се ползва 'localhost', а при superhosting.bg трябва да е '127.0.0.1'.
Какво върши:
Архивира база данни като първо я сваля и ZIP-ва и я изпраща на определени адреси като прикачен файл, като след това изтрива файла. Разбира се може и да не изпраща, а може и да не трие локалните копия. В името на файла е домейна, базата данни и дата и час на архивирането.
Имайте предвид, че скрипта е подходящ само за малки бази данни от порядъка на 8 MB.
Какво е необходимо:
1. Последна версия на https://github.com/PHPMailer/PHPMailer
2. Скрипта
3. Папка извън public_html
4. Настройка на Cron job с параметър:
Код:
php -q /home/MY_HOME_DIR/sqlbackup/backup-db.php >/dev/null 2>&1
Тестван е на superhosting.bg и host.bg, но при host.bg трябва за $dbhost да се ползва 'localhost', а при superhosting.bg трябва да е '127.0.0.1'.
PHP:
<?php
// Create and mail the MySQL backup file
// Nikolay Unguzov - v1.3
// Settings -------------------------------------------------------------------------
$domainname = "mysite.com";
$dbuser = 'dbuser'; // Database username
$dbpass = 'dbPa$$0rd!@'; // Database password
$dbname = 'dbname'; // Database name
$dbhost = 'localhost'; // Usually localhost or 127.0.0.1
$sendto[] = "[email protected]";
$sendto[] = "[email protected]";
$sendfromName = "DB Backup {$domainname}";
$sendfrom = "cms@{$domainname}";
$sendsubject = "{$domainname} - Database Backup";
$bodyofemail = "Attached backup of database for {$domainname}.";
//-----------------------------------------------------------------------------------
// Backup database
$backupfile = "{$domainname}-{$dbname}--" . date("Y-m-d_H-i") . '.sql.gz';
$systemCommand = 'mysqldump -h' . $dbhost . " --user='" . $dbuser . "' --password='". $dbpass . "' '" . $dbname . "' | gzip -9 > " . $backupfile;
system($systemCommand);
// Mail the file
require_once('phpmailer/class.phpmailer.php');
$email = new PHPMailer();
$email->From = $sendfrom;
$email->FromName = $sendfromName;
$email->Subject = $sendsubject;
$email->Body = $bodyofemail;
$email->AddAttachment($backupfile, $backupfile);
foreach ($sendto as $recepient)
{
$email->AddAddress($recepient);
}
$email->Send();
// Delete the file from server
unlink($backupfile);
?>
Последно редактирано: