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

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

1.群晖端操作

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

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

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

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

2.VPS端的操作

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

1
mkdir backup

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

1
2
#cd /home
#vi backup.sh

编辑此脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!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

测试这个脚本事否能够运行

1
#sh backup.sh

把这个脚本每日自动运行,每天凌晨3点开始运行


GeSHi Error: GeSHi could not find the language sh (using path /home/wwwroot/laod.org/wp-content/plugins/codecolorer/lib/geshi/) (code 2)

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

1
. /etc/profile

脚本放什么目录都无所谓,只要记得作相应更改就可以了。

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

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

SS推荐
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: