使用git备份网站

这两天我突然想备份一下网站,总是担心啥时候openshift会挂掉。

一开始我想直接把网站打包下载下来,但是现在我的网络太不争气了,下载只有10K/s的速度了。。。。这得下到什么时候(ーー;)
于是我就想把网站备份到在线服务上去,然后发现了各种备份wordpress的插件巴拉巴拉巴拉。。。。

但是感觉这样每次备份都要把整个网站打包发出去实在太伤身了啊,于是我就想到了用git来备份这个方法。。இ௰இ,这样只要朝备份服务器push改动的文件就行了,而且这样也方便在网站搬家的时候直接从备份拉取,免了上传下载的烦恼。

那么接下来就开始做吧!

1是设置git服务的教程,已经有了的跳到底下看2

1.首先你得找个可以推备份的地方,我原来是想用github的,但是github的私有空间要付费吖吖吖吖吖吖吖吖吖!备份总不能用公有空间吧,这样数据库密码什么的就都暴露了。

没办法,另外找个提供免费私有git空间的地方吧,于是我找到了bitbucket,现在我正一边写这篇文章一边开始我的备份之旅。

那就现在bitbucket注册个帐号吧,过程还算简单,而且我已经注册好了,所以就不在这里写注册过程了。

然后创建一个Repository,一注册好帐号他就会提示你创建一个Repository,跟着提示走就行了,步骤也很简单,我就不写在这里了。创建好了以后应该会进入以下页面

 

那么现在我已经创建好了一个叫BackUp的Repository,然后我们要配置一下让代码可以传过来。(看不懂的话可以进设置改成中文)

从这里开始到第2大点前的步骤都不是必须的,以下操作只能用来拉取文件而不能上传

点齿轮进入设置

接着就进入了设置页面

点部署key

然后就会进入这个页面

结果出来了个这东西,Lable可以随便起一个,Key按照下面的步骤(Windows懒猪用户)

 

找个puttygen,打开

点Generate,然后用鼠标在这个程序界面上乱移。。直到进度条跑完,得到以下结果(我不会用这个的╮(╯▽╰)╭)

那个框框里被选中的字就是要复制到刚刚那个框里的公钥了,然后把它复制过去,接着添加Key

同时别忘了保存私钥和公钥文件,点分别保存到一个地方,以后会用到。

接着点上面的克隆,里面有git地址,我们也就是要把备份推到这个地址来。

注:由于bitbucket对通过ssh访问git有只读限制,所以以上创建的密钥对只能用来从bitbucket拉回备份或克隆到其他主机上。想要写入的话需要使用https模式

然后就本地测试一下配置是否正确了,在自己电脑上推点东西上去试试(怎么使用git见百度或谷歌)

经检测以上步骤无误,接下来就是重点了(我用我的demo.luojia.me做一下演示)

2.把网站推到备份服务器上

要是问我为什么不直接用自己电脑把网站pull回来备份的话,我只能说:openshift不会把服务器自己创建的文件放进版本管理,而且我也不知道怎么手动把新文件放进版本库,所以只能用这样从openshift推到其他地方的方法了。

随便找个ssh软件登录到自己的openshif(方法见百度或谷歌),进去以后是这个样子

 

ls一下发现有这些东西:app-deployments app-root git mysql php phpmyadmin

我们主要是要把网站推到备份里去,所以就进入我们的主站目录

cd app-root/repo/
也可能不在这个目录里,具体位置视最初创建应用时的设置而定
比如我的演示站文件都在app-root/repo/里,博客的文件却在app-root/runtime/repo/php里

然后ls一下看看东西是不是都在里面(当然在里面咯)

主要步骤开始了!

配置远端地址,git会把网站推到这个地址

git init
git remote add origin 地址 //刚刚那个框里的地址,比如我的https://JiaJiaJiang@bitbucket.org/JiaJiaJiang/backup.git
git config push.default simple     //配置一下

然后用以下命令把所有文件(整个网站)加入版本管理

git add .
git commit –m "随便写点东西"
git push --set-upstream master master             //进行另外一些设置(如果这行和下一行出错可以尝试跳过)
git branch --set-upstream-to=origin/master master

接着可以用以下命令检查一下是不是都加进版本库了。

git status

屏幕上刷满网站文件就是成功了,接下来我们把网站推到bitbucket达到备份的目的

 

推送

git push origin master

一会儿他会要求你输入密码,就是登录bitbucket的密码(不能用ssh推文件真心不爽)

刷了几行字以后就备份好了(这些大服务器之间的文件传输速度真不是喵的)

提示:

如果push出现问题可以尝试先commit一次,或者pull一次

如果commit出现问题,尝试先add一次文件

如果pull出现问题,根据错误提示尝试使用一次git branch --set-upstream-to=origin/master master

 

后续备份

以后的备份也都是用以下命令,可以直接把他们放进sh脚本里

git add --ignore-removal .
git commit –m "随便写点东西"
git push origin master

忽略文件

通常像wordpress这样的博客框架里面有很多不用备份的东西,比如临时文件,博客基本代码(当然备份也无大碍,只是文件会略多)这时可以写个忽略文件”.gitignore”告诉git哪些目录或文件不要加入版本管理,这样用git add .的时候就不会把没用的文件加进备份了,格式如下

路径
路径
路径

如:
index.html
script\

 

移除文件

使用git rm --cached 文件名 来移除文件,千万不要用git rm 文件名(没有–cached参数)来移除文件,这样会把文件删掉(导致我写这篇文章的时候把演示站删了。。。)

__________________________________________________________
最后我用博客做了一次实际测试,备份过程只有5秒整个网站就到bitbucket去了இ௰இ,什么时候我能用上24M/s的网呢( •̥́ ˍ •̀ू )

 

 

注意:请给.git文件夹设置适当的权限,否则人家可以下载到你的整站源码

权限建议:把.git文件夹

chown -R root:root .git*
chmod -R 660 .git*

当然如果你没有root权限,可以设置成其他的组。



本文发布于 https://luojia.me

本站文章未经文下加注授权不得拷贝发布。

0 0 投票数
打分
订阅评论
提醒
guest
17 评论
内联反馈
查看所有评论
ryanivanka
游客
8 年 前

为什么不能用ssh登陆push?

佳佳菌
游客
8 年 前
回复给  ryanivanka

现在也忘了是那个时候butbucket没有ssh还是那时候我不会配置ssh秘钥了

pcwuyu
游客
9 年 前

专门去学习了git。。。

pcwuyu
游客
9 年 前

openshift是干嘛用的?

trackback

人到游戏必娱乐,游戏必有菲律宾太阳城。http://sunbetshenbo.net

人到游戏必娱乐,游戏必有申博联系方式。http://vip.sunbetshenbo.com

inlojv
游客
10 年 前

备份好复杂。。

风衣下的秘密
游客
10 年 前

oschina+1 我挺喜欢osc的

风衣下的秘密
游客
10 年 前
回复给  罗佳(博主)

窝服务器也在米国,速度也不赖

风衣下的秘密
游客
10 年 前
回复给  罗佳(博主)

为什么要屏蔽?理解不能

风衣下的秘密
游客
10 年 前
回复给  罗佳(博主)

两码事,很多技术都是国外来的,视频很多有版权

谦谦
游客
10 年 前

免费私有仓库可以用oschina!(虽然我有个傻逼基友做android开发比赛用了京东git)