VPS本地备份及异地备份FTP上传到NAS群晖的自动脚本

Backup

1.群晖端操作

如果之前你的群晖已可以外部直接访问的话,那么很简单:

控制板面>共享文件夹>新建保存备份的文件夹,这里我命名为vpsbackup

控制板面>外部访问>路由器配置>新增FTP端口

为确保路由器端口映射成功,可以先用任何一个FTP客户端连接下看看。
当然,如果打算备份到其它服务器上也可以,直接看下面这段就可以了。

2.VPS端的操作

首先,新建一个目录,名为backup

[cc lang=”php”]
#mkdir backup
[/cc]

再在VPS的home目录下创建个脚本,我这里命名为backup.sh

[cc lang=”php”]
#cd /home
#vi backup.sh
[/cc]

编辑此脚本:
[cc lang=”php”]
#!bin/bash
./etc/profile
MYSQL_USER=root #mysql用户名
MYSQL_PASS=passba #mysql密码
MYSQL_NAME=wordpress #数据库名称
FTP_USER=USER #ftp用户名
FTP_PASS=passba #ftp密码
FTP_IP=ftp.money.com #ftp地址
FTP_backup=vpsbackup #ftp上存放备份文件的目录,这个要自己得ftp上面建的
WEB_DATA=/var/www/html #要备份的网站文件目录
#你要修改的地方从这里结束
OldWeb=Web_$(date -d -5day +”%Y%m%d”).tar.gz
WebBakName=Web_$(date +%Y%m%d).tar.gz
OldData=Data_$(date -d -5day +”%Y%m%d”).sql
DataBakName=Data_$(date +”%Y%m%d”).sql
rm -rf /backup/Data_$(date -d -3day +”%Y%m%d”).sql /backup/Web_$(date -d -3day +”%Y%m%d”).tar.gz
#删除本地3天前的数据
cd /backup
echo “You are in backup dir”
#导出数据库,这里sql文件我就不压缩了,就一个站的数据库大不到哪里去的
mysqldump -u$MYSQL_USER -p$MYSQL_PASS $MYSQL_NAME > $DataBakName
echo “Your database backup successfully completed”
#压缩网站文件数据,这个有点大
tar zcf /backup/$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
[/cc]

测试这个脚本事否能够运行
[cc lang=”php”]
#sh backup.sh
[/cc]

把这个脚本每日自动运行,每天凌晨3点开始运行
[cc lang=”sh”]
#crontab -e
00 03 * * * sh /home/backup.sh
[/cc]

因为我用的是Centos7,数据库使用Mariadb,所以脚本里导出命令和原作的有点不同。另外,我之前在直接运行原作的脚本时发现不能够自动运行,查了半天发现还是绝对路径的问题;在crontab的执行环境变量中,没有相应用户设置的环境变量,也需要手动设置一下环境变量,才能让它生效,所以脚本里我还添加了. /etc/profile脚本放什么目录都无所谓,只要记得作相应更改就可以了。

其实我有想法把这个脚本写成2份,数据库每天备份,网站文件什么的可以每周或更长时间,这个就看每个人喜欢了。

这个脚本本来还可以把备份的数据库文件发送指定邮箱的,可我的邮件postfix设置不知道搞什么鬼,到现在还没搞定。VPS这个坑太深,一时半会儿填不完了。

原创文章,作者:老D,如若转载,请注明出处:https://laod.cn/1523.html

(0)
上一篇 2016-01-27 00:45
下一篇 2016-01-29 23:57

相关推荐

发表回复

登录后才能评论