php备份指定的多个数据库并压缩然后发送邮件

php
直接上代码:

<?php $loader = require 'vendor/autoload.php'; // 设置数据库连接信息 

$host = "xxx.xxx.92.240"; 
$user = "xxx"; 
$password = "1xxx%"; 
$database = "xxx askme yyy xxx xx-xxx"; // 多个数据库之间使用空格连接 // 设置备份文件存放目录 
$backup_dir = "/tmp/backup/"; // 设置备份文件名格式(如:20211103_backup.sql) 
$backup_filename = date("Ymd") . "_backup.sql"; // // 执行备份 
$command = "/usr/local/mysql/bin/mysqldump --routines --user={$user} --password={$password} --host={$host} --databases {$database} > {$backup_dir}{$backup_filename}";
system($command);

// 压缩备份文件为zip格式
$zip = new ZipArchive();
$zip_filename = $backup_dir . date("Ymd") . '_'.str_replace(' ', '_', $database) . "_backup.zip";
if ($zip->open($zip_filename, ZipArchive::CREATE) !== TRUE) {
    die("Could not open archive");
}
$zip->addFile($backup_dir . $backup_filename, $backup_filename);
$zip->close();

// 发送备份文件至指定邮箱
$to = "xxx@qq.com";
$subject = "MySQL Backup " . date("Y/m/d");
$body = "MySQL Backup " . date("Y/m/d");
$file = $zip_filename;
$filename = basename($file);

// 初始化phpmailer对象
$mail = new PHPMailer\PHPMailer\PHPMailer();
$mail->isSMTP();
$mail->Host = 'smtp.163.com'; // 设置SMTP服务器
$mail->SMTPAuth = true; // 启用SMTP验证
$mail->Username = 'xxx@163.com'; // SMTP 用户名
$mail->Password = 'xxx'; // SMTP 密码
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
$mail->From = 'xxxx@163.com';
$mail->FromName = 'MySQL Backup';
$mail->addAddress($to);
$mail->addAttachment($zip_filename, $filename); // 添加邮件附件
$mail->isHTML(false);
$mail->Subject = $subject;
$mail->Body = $body;

// 发送邮件
if (!$mail->send()) {
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message sent!';
}

// 删除旧的备份文件和压缩文件
$old_backup = $backup_dir . date("Ymd", strtotime("-1 day")) . "_backup.sql";
if (file_exists($old_backup)) {
    unlink($old_backup);
}
if (file_exists($zip_filename)) {
    unlink($zip_filename);
}
所有用户都可以去薅羊毛,192元充值200元话费!先到先得!导航栏话费充值,正规可靠,快充慢充自由选择。
欧阳逸资源站 » php备份指定的多个数据库并压缩然后发送邮件

发表评论