快捷搜索:

备份文件和数据库发送到邮箱,网站和数据库自

作者: w88官方网站手机版  发布:2019-10-21

一个误操作 把一个月的文件备份和数据库备份删掉了w88官方网站手机版 1

今天自己按照网上的教程,修改为只接发送到邮箱中,因为暂时还没有ftp空间来备份。具体我的操作如下:
 
一、mutt的安装
 
yum -y install sendmail mutt
 
二、配置信息
 
cp /etc/Muttrc /root/.muttrc
 
编辑/root/.muttrc以修改配置文件,
 
set charset=”utf-8″
 
set rfc2047_parameters=yes
 
set envelope_from=yes
 
set use_from=yes
 
set [email protected]
 
set realname=”xusy”
 
三、备份的脚本
 
#!/bin/bash
#你要修改的地方从这里开始
MYSQL_USER=root                             #mysql用户名
MYSQL_PASS=123456                       #mysql密码
[email protected]                 #数据库发送到的邮箱
WEB_DATA=/home/www                   #要备份的网站数据
#你要修改的地方从这里结束
 
#定义数据库的名字和旧数据库的名字
DataBakName=Data_$(date ”%Y%m%d”).tar.gz
WebBakName=Web_$(date %Y%m%d).tar.gz
#删除本地3天前的数据
rm -rf /home/backup/Data_$(date -d -3day ”%Y%m%d”).tar.gz /home/backup/Web_$(date -d -3day ”%Y%m%d”).tar.gz
cd /home/backup
#导出数据库,一个数据库一个压缩文件
for db in `/usr/local/mysql/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e ‘SHOW DATABASES’ | xargs`; do
(/usr/local/mysql/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 – > ${db}.sql.gz)
done
#压缩数据库文件为一个文件
tar zcf /home/backup/$DataBakName /home/backup/*.sql.gz
rm -rf /home/backup/*.sql.gz
#压缩网站数据
tar zcf /home/backup/$WebBakName $WEB_DATA
#发送数据库到Email,如果数据库压缩后太大,请注释这行
echo “主题:数据库和网站备份”| mutt -s “内容:数据库和网站备份”-a /home/backup/$DataBakName -a /home/backup/$WebBakName  $MAIL_TO
 
END
 
四、上传到root下并且赋予写权限
 
chmod x /root/AutoBackup.sh
 
五、利用系统crontab实现每天自动运行
 
crontab -e
 
输入内容:00 00 * * * /root/AutoBackup.sh
 
其中00 00为时间分/小时,可自行修改,例如:30 12 ***,就是每天12.30运行这个脚本。

今天分享一下昨天写好的一个备份数据库并以附件形式发送到邮箱的一个shell脚本

做了一个用sendmail发送到邮箱的备份脚本:

一、mutt的安装 yum -y install send...

首先我是用mutt来发送邮箱,所以我安装了mutt和msmtp。

Xml代码

安装方法如下:

  1. w88官方网站手机版,  
  2. #!/bin/bash   
  3. # X ,  sendmail hoodbc20117   
  4. ### Setting path ###   
  5. BACKPATH="/data0/mysql_bak"  
  6. DATE=`/bin/date " %Y-%m-%d-%H-%M-%S"`   
  7.   
  8. zip -rq $BACKPATH/erp_$DATE.zip /data/htdocs/www/erp/   
  9. echo "erp all backup" | mutt -a $BACKPATH/erp_$DATE.zip -s "erp all backup" bluehood24@163.com   
  10.   
  11. find $BACKPATH -ctime  30 -name *.zip -delete  

yum install mutt

顺便把数据库备份的脚本也记录下来:

yum install msmtp

Xml代码

因为我用的是centos系统,如果是ubuntu需要将yum改成apt-get,还有我用的是管理员账号,如果是普通账号可能需要在前面加上sudo(因为我没有测试过,不知道普通账号有没有权限问题)

  1. #!/bin/bash   
  2. # hoodbc20117   
  3.   
  4. ### database setting ###   
  5. USER='root'  
  6. PASSWORD=''  
  7. HOST="127.0.0.1"  
  8. DATABASES=(erp)   
  9.   
  10. ### Setting path ###   
  11. MYSQLDUMP=/usr/local/webserver/mysql/bin/mysqldump   
  12. BACKPATH="/data0/mysql_bak"  
  13.   
  14. DATE=`/bin/date " %Y-%m-%d-%H-%M-%S"`   
  15. for DATABASE in ${DATABASES[*]}   
  16. do   
  17.     FILENAME="$DATABASE-$DATE"  
  18.   
  19.     $MYSQLDUMP --add-drop-table --user $USER --password=$PASSWORD $DATABASE --lock-all-tables>> "$BACKPATH/$FILENAME.sql"   
  20. done   
  21.   
  22. #tar zcf -r $BACKPATH/erp_$DATE.tar.gz ~/data/htdocs/www/erp   
  23. #zip -rq $BACKPATH/erp_$DATE.zip /data/htdocs/www/erp/   
  24. zip -rq $BACKPATH/$FILENAME.zip $BACKPATH/$FILENAME.sql   
  25. echo "erp db backup" | mutt -a $BACKPATH/$FILENAME.zip -s "erp db backup" bluehood24@163.com   
  26.   
  27. find $BACKPATH -ctime  30 -name *.sql -delete  

如果你安装完应该可以在/etc/目录下找到Muttrc这个配置文件,编辑此文件,往文件最后添加下面几行

记得加上--lock-all-tables的参数,这样在导出sql文件的时候会锁定表,当然也可以直接把数据库文件打包。最后加到crontab里定时运行脚本。

set sendmail="/usr/bin/msmtp"

w88官方网站手机版 2

set use_from=yes

set realname="发送者"

set from=邮箱地址

set envelope_from=yes

你可以直接执行下面命令

echo 'set sendmail="/usr/bin/msmtp"

set use_from=yes

set realname="name"

set from=邮箱地址

set envelope_from=yes' >> /etc/Muttrc

特别说明一下,邮箱地址指的是你发送邮件的邮箱,此邮箱需要开通SMTP服务,你可以使用网易的、腾讯的SMTP服务,具体开通教程自己百度。

接下来你需要在主目录(也可以说是家目录)新建.msmtprc 和 .msmtp.log这两个文件

.msmtprc是msmtp的配置文件,.msmtp.log是一个日志文件,你不需要开启可以不用新建

注意:这里的主目录是你发送邮件的用户的主目录

然后在.msmtprc文件中加入以下内容

account default

host STMP服务器地址

#from 你要发送到哪个邮箱(也可以不设置,在发送邮箱的命令加上邮箱参数就可以了)

auth plain

user 开通了SMTP邮箱的邮箱地址

password 授权密码

logfile ~/.msmtp.log

当你以上都配置完mutt就可以发送邮件了

下面我们来看一下数据库备份的脚本


#!/bin/bash

mysql_user="登录数据库用户名"

mysql_name="你要备份的数据库"

mysql_pwd="数据库登录密码"

#要备份的数据库信息

d=`date " %Y-%m-%d"`

t="MySQL Backup - $d"

#发送邮件标题和内容,这里以天来区分,因为我是每天备份一次

BackName=backup_mysql_$d

#数据库文件名称

BackPath=/mysqlBack/

#备份数据库存放路径,我们也可以定期SFTP去下载

mysqldump -u${mysql_user} -p${mysql_pwd} $mysql_name > $BackPath$BackName.sql

#导出数据库

tar -czPf $BackPath$BackName.tar.gz $BackPath$BackName.sql

#压缩数据库包,这样节省空间

echo "$t"|mutt -s "$t" '你要发送到的邮箱地址' -a $BackPath$BackName.tar.gz

#下面是定时删除以前的备份文件(这里没有做优化,只是删除第前5天的备份,如果第前6天的没删除,你执行此脚本不会删除第前6天的备份)

days=5  #我设置了删除5天前的

backName=backup_mysql_

day=`date -d "$days days ago" %Y-%m-%d`

rm -f $BackPath$backName$day.sql $BackPath$backName$day.tar.gz

exit

#退出当前脚本


提醒一下,你备份的数据库存放目录一定是要存在的,不存需要提前创建好

当然你也可以为脚本添加执行权限

chmod x 脚本路径

这样你就可以直接路径运行脚本了

最后我们只需要写定时任务就好了

crontab -e

然后添加

30 0 * * * bash /root/back.sh

上面的意思是每天的凌晨12点半执行一次脚本

本文由www.w88985.com发布于w88官方网站手机版,转载请注明出处:备份文件和数据库发送到邮箱,网站和数据库自

关键词: www.w88985.c

上一篇:Linux认证教导,多少个常用的Linux命令
下一篇:没有了