Это может помочь вам вместо этого.
Сначала я заархивировал файл .sql, чтобы убедиться, что все содержимое включено, и уменьшил размер электронного письма (полезно, если у вас база данных объемом 10 МБ или более).
Для этого я использую скрипт .sh, который я назвал "sqlbackup.sh":
примечание: мой файл .sql хранится в папке "db_backup / sqldata" на веб-сервере и является единственным файлом .sql в этой папке. Создайте две папки, если они еще не существуют.
#!/bin/sh
cd /home/<username>/db_backup/sqldata/
tar -zcvf sqldata.tar *.sql
cd /home/<username>/db_backup/
perl emailsql.pl
далее я создал почтовый файл php, который отправляет этот zip-файл на мою электронную почту, которую я назвал "mail.php"
примечание: я использовал адрес no-reply@domain.co.za для адреса from и в качестве ответа на него, так как он отправлялся самому себе. отредактируйте соответственно.
<?php
$to = '<enter email to send to>';
$subject = 'SQL Backup' . date('r', time());
$random_hash = md5(date('r', time()));
$headers = "From: <from address>\r\nReply-To: <reply to address>";
$headers .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\"";
$attachment= chunk_split(base64_encode(file_get_contents('sqldata/sqldata.tar')));
ob_start();
?>
--PHP-alt-<?php echo $random_hash; ?>--
--PHP-mixed-<?php echo $random_hash; ?>
Content-Type: application/x-tar; name="sqldata.tar"
Content-Transfer-Encoding: base64
Content-Disposition: attachment
<?php echo $attachment; ?>
--PHP-mixed-<?php echo $random_hash; ?>--
<?php
$message = ob_get_clean();
$mail_sent = @mail( $to, $subject, $message, $headers );
?>
Затем все, что я сделал, это создал задание cron, чтобы сначала запустить файл sqlbackup.sh, чтобы создать zip, а затем, в зависимости от размера файла, создать задание cron для запуска файла mail.php. Я запускаю свой файл mail.php через час после настройки zip.
если вы хотите добавить сообщение к электронному письму, посетите ЭТУ ССЫЛКУ и добавьте соответствующий код в область после 'ob_start (); ?> '
Надеюсь, это поможет.