首页 > W3C Lab > Linux > 利用Crontab、Git将文件自动备份到Github
2015
07-13

利用Crontab、Git将文件自动备份到Github

最近在学Git,分布式大法好,退SVN保平安(虽然我连SVN是什么都不知道)…

我们知道Git每次新建一个文件时候都要先

$ git add [新建文件]

然后才能

$ git commit -m "[备注]"

commit 命令有个 -a 可以监视被修改的程序,不用每次都 add 到工作区…但是对于新建的文件还是很麻烦

__________________一切为了偷懒__________________

我就自己写了一个shell脚本,能新建一个文件的同时执行 git add 命令,然后直接进入 vim 编辑器,参数就是要新建的文件名,放在了 /usr/local/bin 下面,赋予执行权限,然后将这个脚本改成了 gitnew 这样一个山寨的命令就出现了(我也不知道其他真正的命令是不是这么写的), 可以在一个git文件夹里使用这个命令

$ gitnew test.php

这样就可以啦,没有任何判断此文件夹是不是已经git init 过,所以非 git 文件夹的话就是和 vim 命令一样

gitnew(.sh)代码如下

#!/bin/bash

touch $1

/usr/bin/git add $1

vim $1

要不要这么简单简单啊 – – 好没技术含量,当然命令目录可以省略,之前被环境变量坑惨了好多次

有了个gitnew命令,之后的git commit -am 就好用多了,为crontab计划任务铺平了道路…

 

进入正题,Crontab的执行

crontab怎么用不多说,首先 crontab -e 进入编辑模式 写下

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin ←PATH啊,每次出错都是你

*/1 * * * * gitBackUp /root/git/gitTest

其实gitBackUp和上面的gitnew一样也是个有执行权限的文本,接受的参数就是git文件夹的路径,而crontab任务每分钟检查一次改动,然后上传到github上面去…其实1分钟有点频繁了,几个小时,或者一天一次就行,也可以再添加一个只在本地commit ,去掉最后 push 到 Github 的一行命令就可以了。

gitBackUp(.sh)代码如下

#!/bin/bash

#"Back up to Github!"

cd $1

upTime=date "+%Y-%m-%d %H:%M:%S"

cmt=${upTime}" Crontab Auto Update"

/usr/bin/git commit -am "$cmt"

/usr/bin/git push origin master

同样这个gitBackUp如上放进 /usr/local/bin,而且我想应该放在 $PATH 变量里任何文件夹里都行吧,这样就可以自动备份 /root/git/gitTest 文件夹下的文件到 Github 啦,解放双手指日可待,不过我现在还是双手打字以证清白!

最后编辑:
作者:scplay
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。