• 现在越来越多的博客系统是通过自己私人服务器所搭建的,保存的数据也越来越多,为了防止数据库服务出现异常情况,导致数据丢失,所以我就在服务器上搞个定时脚本来进行数据库备份。后期发现存在服务器上也有一定风险,获取文件也很不方便,又搞个脚本来进行自动上传Github,体验还不错,在这里分享给大家。

准备工作(操作系统: CentOS 7.6 64位):

  • 安装crontabs服务
  • 安装git服务并配置git账号信息
  • 创建GitHub项目
  • 设置定时任务

1.首先要先安装crontabs

yum install crontabs

说明:

service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置

查看crontab服务状态:service crond status
手动启动crontab服务:service crond start

查看crontab服务是否已设置为开机启动,执行命令:ntsysv

加入开机自动启动:

chkconfig crond on

2.安装git服务并配置git账号信息

安装git

git安装:
`sudo apt install git`

配置git用户名
`git config --global user.name "git的用户名"`

配置git邮箱
`git config --global user.email "git的邮箱"`

生成密钥 
`ssh-keygen -t rsa -C "git的邮箱"` 

查看密钥并复制到git ssh配置中
`cat ~/.ssh/id_rsa.pub`

3.创建git项目,并配置密钥

点击登陆 Github

1.创建一个项目,并把项目设置为"Private" (你懂得)

2.选择 "setting"

3.点击左侧菜单 "Deploy keys"

4.然后选择 "Add Deploy keys"

5.将上述复制的ssh密钥填入并选择 "Allow write access" 后保存

检查是否可用:

ssh -T git@github.com

Hi RoninLee! You ve successfully authenticated, but GitHub does not provide shell access. 
出现这句话,说明配置正常,可以使用

初始化项目

git init

设置远程仓库

git remote add origin git@github.com:xxxxxxxxxxx/xxxx.git

然后可以手动使用命令commit测试了


4.设置定时任务脚本

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root


# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed


参数说明:

  • Minute:每个小时的第几分钟执行该任务;取值范围0-59
  • Hour:每天的第几个小时执行该任务;取值范围0-23
  • Day:每月的第几天执行该任务;取值范围1-31
  • Month:每年的第几个月执行该任务;取值范围1-12
  • DayOfWeek:每周的第几天执行该任务;取值范围0-6,0表示周末
  • CommandPath:指定要执行的程序路径

查看定时任务

crontab -l

设置定时任务

crontab -e

查看定时任务日志

tail -f /var/log/cron


定时任务脚本实例:

0 0 1 * * /usr/bin/certbot renew --force-renewal        #每月1号凌晨强制更新 Encrypt证书
5 0 1 * * /usr/sbin/service nginx restart               #每月1号凌晨更新证书后重启nginx
00 01 * * * /bin/sh /home/sh-file/backupdb.sh           #上面的定时任务意思是每天凌晨1点会执行脚本,进行MySQL数据库的定时备份.
10 01 * * * /bin/sh /home/sh-file/gitpush.sh            #上面的定时任务意思是每天凌晨1点10分会执行脚本,进行Git仓库文件上传.

数据库备份脚本实例:

#创建脚本内容如下:
#!/bin/sh
db_user="数据库用户名"
db_passwd="数据库密码"
db_name="数据库名称"
name="$(date +"%Y%m%d%H%M%S")"
/usr/bin/mysqldump -u$db_user -p$db_passwd $db_name >>/home/db-backup/$name.sql
#说明:
#/usr/bin/mysqldump :mysql数据库安装目录下的mysqldump备份工具路径
#dbname :需要备份的数据库名字

GitHub自动提交脚本实例:

#创建脚本内容如下:
#!/bin/sh
message="定时自动备份数据库文件"
cd  /home/db-backup/
git pull
git add -A
git commit -m $message 
git push