1. 程式人生 > >nodejs 定時調用shell腳本來備份數據庫和日誌文件並發送到郵箱

nodejs 定時調用shell腳本來備份數據庫和日誌文件並發送到郵箱

nodejs linux shell腳本 備份數據庫 定時

安裝mailx,靠它來發送郵件

yum install mailx

編輯配置文件

vim /etc/mail.rc #添加如下內容

set [email protected]
set smtp=smtp.163.com
set [email protected]
set smtp-auth-password=xxx
set smtp-auth=login

---說明
from:對方收到郵件時顯示的發件人
smtp:指定第三方發郵件的smtp服務器地址
set smtp-auth-user:第三方發郵件的用戶名
set smtp-auth-password:用戶名對應的密碼,有些郵箱填的是授權碼
smtp-auth:SMTP的認證方式,默認是login,也可以改成CRAM-MD5或PLAIN方式

linux腳本文件源碼(註意一定要直接在linux系統裏直接編輯,不然創建文件的後綴名會帶問號!!!):

#!/bin/bash
echo "開始"
#備份數據庫
mysqldump -uroot -p數據庫密碼 數據庫名字 > /home/wwwroot/bak/`date +%Y_%m_%d`.sql
echo ‘備份數據庫完畢‘ 
#備份日誌(將日誌文件復制到備份數據庫的文件夾裏)
oldlog=/home/wwwlogst/web.log
newlog=/home/wwwroot/bak/`date +%Y_%m_%d`.log
cp ${oldlog}  ${newlog} 
echo "" > ${oldlog}
echo ‘備份日誌完畢‘ 
#打包文件夾
name= /home/wwwroot/`date +%Y_%m_%d_%H_%M_%s`.zip 
old= /home/wwwroot/bak
zip -r ${name} ${old} 
echo ‘打包文件夾完畢‘
#發送郵件
echo `date +%Y_%m_%d數據庫備份` | mail -s `date +%Y_%m_%d備份郵件` -a  ${name} 你的郵箱@qq.com 
echo ‘發送郵件完畢‘
echo "全部完畢"

nodejs 定時調用腳本的源碼

/**
 * Created by Administrator on 2018/2/25 0025.
 */
var https = require(‘http‘);
var schedule = require(‘node-schedule‘);
var exec = require(‘child_process‘).exec;
var cmdStr = ‘sh /home/wwwroot/myemail.sh‘;//這裏面寫你要執行的命令就行

var rule = new schedule.RecurrenceRule();
// rule.second = [0,10,20,30,40,50];//隔十秒
rule.hour =23;rule.minute =55;rule.second =0;//每天23點55分執行
var j = schedule.scheduleJob(rule, function(){
exec(cmdStr, function(err,stdout,stderr){
    console.log("已執行");
});
console.log(‘現在時間:‘,new Date());
});

nodejs 定時調用shell腳本來備份數據庫和日誌文件並發送到郵箱