每天都在改变

使用crontab将网站定时备份到GitHub

2019.11.13

工作流程

  • 安装crontab服务
  • 配置git账号信息
  • 创建GitHub仓库并连接仓库
  • 设置定时任务脚本

1、安装crontab服务

  • centos平台
yum install crontabs
  • Debian平台
apt-get install crontabs

查看crontab状态信息

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

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

chkconfig crond on		//加入开机自动启动

2、配置git账号信息

git config --global user.name "yourname"        #引号里面输入你的名字
git config --global user.email "youremail"      #输入邮箱
git config --global core.autocrlf false         #消除由于Windows和Linux平台中换行符的差异导致的问题
git config --global core.quotepath off          #消除由于路径或者是文件名包含中文导致的乱码问题
git config --global gui.encoding utf-8          #消除gui界面中文乱码问题(如果全程使用命令行的话不用担心这个问题)
ssh-keygen -t rsa -C "youremail"                #配置ssh的密钥,输完之后一路回车
eval `ssh-agent`                                #启用ssh-agent
ssh-add ~/.ssh/id_rsa                           #添加密钥
ssh-add -l                                      #将它添加到已知的key列表中
cat ~/.ssh/id_rsa.pub                           #把这个公钥添加到自己的Github账户上去

3、创建GitHub仓库并连接仓库

  • 创建一个私密 Github 项目
  • 在站点目录下初始化 Github 项目
cd ~/.halo								#待备份网站目录
git init
git remote add origin [email protected]:blog-guang/backup_halo.git		#GitHub私有仓库名字
  • 尝试同步待备份目录
cd ~/.halo			#进入待备份目录
git add -A			#将目录下所有文件变化(增、删、改)提交到暂存区
git commit -m "backup"
ssh-agent bash			#启动 SSH 密钥管理器
ssh-add /root/github		#将之前创建的github密匙文件添加到密匙管理器中
git push -u origin master	#推送所有更改到 Github 项目

4、设置定时任务脚本

利用crontab定时向GitHub私有仓库定时push一次

在任意位置创建定时备份sh文件,例如:/home/backup_halo.sh,并写入以下内容。

#!/bin/bash
cd ~/.halo
git add -A
git commit -m "backup"
ssh-add /root/github
git push -u origin master

使用chmod命令来修改backup_halo.sh的权限。

chmod 744 backup_halo.sh

crontab命令选项

crontab -u		#指定一个用户
crontab -l		#列出某个用户的任务计划
crontab -r		#删除某个用户的任务
crontab -e		#编辑某个用户的任务

创建一个任务调度

crontab -e

此时会进入到vim编辑界面,来编写我们要调度的任务,调度任务的文件地址为/var/spool/cron/root,crontab调度命令的格式如下:

30 3 * * * bash /home/backup_halo.sh

:wq保存成功后,shell会出现如下提示:crontab: installing new crontab,表示定时调度任务创建成功。/home/backup_halo.sh为上述调度任务执行的的脚本,上述代码的含义是:每天凌晨3:30分执行ssh-agent bash /home/backup_halo.sh命令。

写在最后

crontab自动化定时执行命令实例:

每隔一分钟,将系统的时间写入到/home目录下的date.txt文件里面。 1 、创建任务调度

crontab -e

2、写入定时调度任务

* * * * * date >> /home/date.txt
  • 调度任务含义:
* * * * *		#表示时间是每隔一分钟
date			#得到当前的系统时间
>>			#将结果累加到文件后面
>			#命令则表示将结果覆盖文件 

参考文章