阿里云限量代金券 | 此广告位出租25元/月 |
玩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
推荐您阅读更多有关于“”的文章
Powered By Z-Blogphp
分享:
支付宝
微信