这两天我突然想备份一下网站,总是担心啥时候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
本站文章未经文下加注授权不得拷贝发布。
为什么不能用ssh登陆push?
现在也忘了是那个时候butbucket没有ssh还是那时候我不会配置ssh秘钥了
专门去学习了git。。。
openshift是干嘛用的?
人到游戏必娱乐,游戏必有菲律宾太阳城。http://sunbetshenbo.net
人到游戏必娱乐,游戏必有申博联系方式。http://vip.sunbetshenbo.com
备份好复杂。。
从第二大点开始才是正文呢,而且看起来有点复杂但是以后备份只要一个命令(写进sh文件)就能完成这多方便
oschina+1 我挺喜欢osc的
不过我的博客服务器在米国还是用米国服务器好了
窝服务器也在米国,速度也不赖
osc没有对国外屏蔽?
为什么要屏蔽?理解不能
不知吖,优酷什么的不就对国外屏蔽的吗
两码事,很多技术都是国外来的,视频很多有版权
óòǒ~
免费私有仓库可以用oschina!(虽然我有个傻逼基友做android开发比赛用了京东git)
oschina竟然有这服务