RSS订阅专注X86/ARM架构技术
博客交流QQ群693563350 赞助本站
你现在的位置:网站首页 / 建站 / 正文内容

Linux VPS 每日自动备份网站及数据库脚本

14740 建站 | 2016年08月09日

玩VPS最怕服务商突然跑路,钱亏了不重要,数据没了就够得哭一阵子了,所以,做好网站数据备份,灰常重要。

下面是通过bash命令制作的自动备份脚本,可以设置每日自动备份到FTP,及自动发送备份的数据库文件到邮箱里,灰常方便。

原作者地址:

http://imcat.in/auto-backup-site-files-database-upload-ftp/

个人不喜欢tar压缩,winrar打不开,命令也挺复杂的,所以改成了zip压缩,如果zip报错没有该命令,那么请自行yum安装一个。

首先安装EMAIL发送组件:

yum install sendmail mutt

安装完成后复制下面代码到你的编辑器里,并设置好你的用户名密码FTP等等:

#!/bin/bash

#你要修改的地方从这里开始

MYSQL_USER=mysqlusername                   #mysql用户名

MYSQL_PASS=yourpassword                    #mysql密码

MAIL_TO=youremail@domain.com               #数据库发送到的邮箱

FTP_USER=ftpuser                           #ftp用户名

FTP_PASS=ftppassword                       #ftp密码

FTP_IP=X.X.X.X                             #ftp地址

FTP_backup=backup                          #ftp上存放备份文件的目录,这个要自己得ftp上面建的

WEB_DATA=/home/wwwroot/yourdomain          #要备份的网站数据

#你要修改的地方从这里结束

 

#定义数据库的名字和旧数据库的名字

DataBakName=Data_$(date +"%Y%m%d").zip

WebBakName=Web_$(date +%Y%m%d).zip

OldData=Data_$(date -d -5day +"%Y%m%d").zip

OldWeb=Web_$(date -d -5day +"%Y%m%d").zip

#删除本地3天前的数据

rm -rf /home/backup/Data_$(date -d -3day +"%Y%m%d").zip /home/backup/Web_$(date -d -3day +"%Y%m%d").zip

cd /home/backup

#导出数据库,一个数据库一个压缩文件

/usr/local/mysql/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs > mysqldata

sed -i 's/information_schema //g' mysqldata

sed -i 's/mysql //g' mysqldata

for db in `cat mysqldata`; do

    (/usr/local/mysql/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS --databases ${db}> ${db}.sql)

done

#压缩数据库文件为一个文件

zip -r $DataBakName /home/backup/*.sql

rm -rf /home/backup/*.sql mysqldata

#发送数据库到Email,如果数据库压缩后太大,请注释这行,使用自动命令执行该脚本时,如果下面的主题,内容是中文,则邮件会产生乱码,所以建议使用英文

echo "Subject:yongpei.wang data backup" | mutt -a /home/backup/$DataBakName -s "Content:yongpei.wang data backup" $MAIL_TO

#压缩网站数据

zip -r $WebBakName $WEB_DATA

#上传到FTP空间,删除FTP空间5天前的数据

ftp -v -n $FTP_IP << END

user $FTP_USER $FTP_PASS

type binary

cd $FTP_backup

delete $OldData

delete $OldWeb

put $DataBakName

put $WebBakName

bye

END


将以上代码保存为:AutoBackupToFtp.sh 并上传到root目录下,然后给脚本添加权限:

chmod +x /root/AutoBackupToFtp.sh

现在,你可以执行脚本测试一下,看看能否正常备份到FTP并发送到你的邮箱:

sh AutoBackupToFtp.sh

如果一切没有问题,那么下一步,就开始设定每天自动执行脚本,备份数据:

crontab -e

然后通过VI命令添加:

输入i进入插入状态,添加以下代码:

00 03 * * * /root/AutoBackupToFtp.sh

其中第一个00是分,第二个03是时,即每天3点00分自动执行该脚本,可以通过date命令查看你的服务器时间

按Esc退出,输入:wq保存并退出就OK啦,当然你也可以先设个就近的时间看看是否能够正常执行。

参考链接:https://yongpei.wang/70.html


上一篇:LNMP 1.2/1.3升级Nginx、MySQL/MariaDB、PHP教程

下一篇:百度不支持收录https网页以及XP系统不支持SNI的解决办法

猜你喜欢