起因
之前一直是手动备份网站到GitHub,至于数据库也是手动下载到本地。前段时间一个手抖把网站给删了,自己的服务商镜像居然四个都没有用,开不了机,写信给他们寻求帮助,也是没什么实质性建议。说让我不要过于依赖他们的备份,尽量自己搞备份。还好文章数码只有40多篇,自己前一周又备份,有一些还有印象,就重新搞了一下!今天搞备份想能不能搞一个脚本能自动备份最重要的数据库到GIthub,就找到了方法;
:)
方法
-
建立一个文件夹(如:/home/BACKUP)并建立好与Github的连接,这个我就不介绍了,直接看链接:GIT使用教程;
-
备份网站目录到/home/BACKUP,比如我的:
cp -r /blogger /home/BACKUP
-
在BACKUP里面建立一个文件夹(如:DB)来存放数据库。
cd /home/BACKUP && mkdir DB
-
建立脚本文件(比如:backup.sh),我是把脚本也放在/home/BACKUP下面的;
vim backup.sh
内容如下
#!/bin/bash cd /home/BACKUP/DB message=$(date +%Y-%m-%d) mysqldump -uDBNAME -pDBPASSWORD DBNAME > 'DBNAME.sql' mv DBNAME.sql DBNAME"${message}".sql git add -A git commit -m "${message}" git push
注意替换
- DBNAME:数据库名字
- DBPASSWORD:数据库密码
-
自动执行
crontab -e
-
希望是每天的凌晨执行一次备份,并添加到远程仓库,那么添加
0 0 * * * /bin/sh /home/BACKUP/backup.sh
对linux的crontab指定的时间只有五个部分
段位 | 时间 |
---|---|
第一段 | 代表分钟 0—59 |
第二段 | 代表小时 0—23 |
第三段 | 代表日期 1—31 |
第四段 | 代表月份 1—12 |
第五段 | 代表星期几,0代表星期日 0—6 |
- 查看执定时任务
crontab -l
- 如果服务没有启动,那么重新启动定时任务
centossystemctl restart crond
ubuntu
/etc/init.d/cron restart