发布于2022年11月4日2年前 [Meting][Music server="netease" id="1330861946" type="song"/][/Meting]前言下午闲来无事,写了linux下的定时任务管理。大体思路是这样的,首先备份数据库,让后将数据库发送到我们指定的邮箱中。并删除本地备份的数据。shell脚本#!/bin/ #进入到备份文件夹 cd /root/back #创建存放备份文件和数据库的文件夹,并修改权限为777 mkdir -m 777 -p ./backup$(date +"%Y%m%d") #导出数据库到备份文件夹内 mysqldump -u 数据库账号 -p密码 数据库 > ./backup$(date +"%Y%m%d")/blog.sql #压缩存放备份文件和数据库的文件夹 tar zcvf ./backup$(date +"%Y%m%d").tar.gz ./backup$(date +"%Y%m%d") #以附件形式发送压缩包到指定邮箱 echo "数据备份"|mail -v -s "备份时间:$(date +%Y-%m-%d)" -a /root/back/backup$(date +"%Y%m%d").tar.gz [email protected] #删除备份文件夹与压缩包 rm -rf /root/back/backup$(date +"%Y%m%d") rm /root/back/backup$(date +"%Y%m%d").tar.gz安装环境yum install sendmail yum install mailxDebian/Ubuntu使用apt-get安装。配置centos7环境在/etc/mail.rc增加如下配置:set from="[email protected]" set smtp="smtps://smtp.ym.163.com:465" set smtp-auth-user="[email protected]" set smtp-auth-password="xiaoke-password" set smtp-auth=login set ssl-verify=ignore set nss-config-dir=/etc/pki/nssdb填坑阿里云对25端口不开放,所以这次使用smtps协议也就是465端口来发送邮件验证echo "sometext"|mail -s "my subject" 要发送的邮箱地址更新在使用以上方式配置后,可以发送邮件但是会提示Error in certificate: Peer's certificate issuer is not recognized.解决方法:創建目錄,用來存放證書mkdir -p /root/.certs/向163請求證書echo -n|openssl s_client -connect smtp.qiye.163.com:465|sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/163.crt添加一個證書到證書數據庫中certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/163.crt certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/163.crt使證書得到認可,避免發郵件後報錯:Error in certificate: Peer's certificate issuer is not recognizedcd /root/.certs (一定要進入到證書所在目錄才行) certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i ./163.crt列出目錄下證書certutil -L -d /root/.certs3.追加配置:vim /etc/mail.rc set from="[email protected]" set smtp="smtps://smtp.qiye.163.com:465" set [email protected] set smtp-auth-password=123456789 set smtp-auth=login set ssl-verify=ignore set nss-config-dir=/root/.certs测试echo 'hello'|mail -v -s "test mail" [email protected]unbunt或debian相对来说就很简单了,只需要将脚本最后一句echo "数据备份"|mail -v -s "备份时间:$(date +%Y-%m-%d)" -a /root/back/backup$(date +"%Y%m%d").tar.gz 邮箱改为sendEmail -f [email protected] -t [email protected] -s smtp.163.com -u 'test' -o message-content-type=html -o message-charset=utf8 -xu [email protected] -xp 'passwd' -m 'test'即可。sendemail命令详解收到此提示表示发送成功-f [email protected] #发件人邮箱地址 -t [email protected] #收件人邮箱地址 -s smtp.163.com #发件人邮箱的smtp服务器地址 -u 'test' #邮件标题 -o message-content-type=html #邮件内容格式为html -o message-charset=utf8 #邮件内容编码为utf8 -xu [email protected] #发件人邮箱登录用户名 -xp 'passwd' #发件人邮箱登录密码 -m 'test' #邮件内容也就是说centos系列系统用的是mail发送和debian系列用的是sendmail发送。定时执行,每日备份2、设定自动任务crontab -eSSH执行以上命令。3、添加任务00 00 * * * /root/backup.sh按键盘字符:“i”,回车另起一行,添加以上代码,路径和时间请根据实际情况修改。其中00 00为时间分/小时,可自行修改,例如:30 00 ,就是每天凌晨0:30运行这个脚本。这里的5个 分别代表分 时 日 月 周需要多久备份一次可以自己修改。修改完成之后按esc或者ctrl+c退出编辑状态,再输入 :wq 保存任务。可以用crontab -l 来查看添加的任务是否在进行中。crontab命令详解以下是 crontab 文件的格式:{minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script} o minute: 区间为 0 – 59 o hour: 区间为0 – 23 o day-of-month: 区间为0 – 31 o month: 区间为1 – 12. 1 是1月. 12是12月. o Day-of-week: 区间为0 – 7. 周日可以是0或7.看不懂,没关系看这个00 00 * * *每天晚上00:00分执行备份00 13 * * *每天下午03:00分执行备份00 13 03 * *每月3号下午13点开始备份效果 版权属于:逍遥子大表哥本文链接:https://blog.bbskali.cn/547.html按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
创建帐户或登录后发表意见