1、创建定时任务
创建定时任务的使用方法参见:https://tytrock.com/topics/218
这里创建了一个叫backup的任务调度
2、配置发送邮件(使用QQ邮箱)
修改.env文件
MAIL_DRIVER=smtp MAIL_HOST=smtp.qq.com MAIL_PORT=465 MAIL_USERNAME=test_send@qq.com MAIL_PASSWORD=ocmvdkncpyusbjeg #并非QQ邮箱登录账号,是QQ邮箱转为SMTP等服务设置的授权码 MAIL_ENCRYPTION=ssl
3、编写程序
进入刚创建的任务调度文件,app/Console/Commands/Backup.php,编写handle方法
$res = DB::select("show databases"); foreach ($res as $key => $val) { if ($val->Database == "redu" || $val->Database == "dal") { $content = "/usr/local/mysql/bin/mysqldump -hlocalhost -uroot -ptest " . $val->Database; $content .= " >/usr/site/web/storage/backup/" . $val->Database . "-".date('Y-m-d').".sql"; exec($content); } } //压缩刚生成的备份文件,需先安装zip exec("zip -r /usr/site/web/storage/backup.zip /usr/site/web/storage/backup/*"); $flag = Mail::send('emails.test',['name'=>'数据备份'],function($message){ $to = 'test_receive@qq.com'; $message->to($to)->subject(date('Y-m-d').' 数据备份'); $attachment = storage_path('backup.zip'); //在邮件中上传附件 $message->attach($attachment,['as'=>'backup.zip']); }); //删除压缩文件 exec("rm -f /usr/site/web/storage/backup.zip"); //删除备份文件 exec("rm -rf /usr/site/web/storage/backup/*");
本帖已被设为精华帖!