通常那些網站上的文件內容都是存儲在一個git倉庫裡的.(對於非從事軟件行業的人來說,可以把"git"理解為是一個可以讓你以邏輯方式保存文件的所有歷史變化內容的,用於版本控制的系統).當我要使用時,我需要把它放到我本地電腦上(而用額外的硬盤來做備份).
但是,假如我沒有個人電腦但是又需要編輯或創建的話呢?顯然,我需要從服務器上("雲上")拷貝源文件.本篇內容簡單描述關於我是怎麼考慮在S3使用私有Git倉庫的.我知道很多地方都有相關的內容,但是這是有用的內容值得再次提及
其實我的第一想法是GitHub。這是一個為各種軟件實現托管的社會協作網站。雖然它能起作用,但是如果我想保持內容是私人的話(像匯票等)我將不得不付費使用。公共的(免費的)沒有多大意義:這是一個個人的博客網站,不是真正的協作。
接下來,我認為只是放一個git倉庫在服務器上,我從Sonic.net訪問,我的舊ISP,我一直有一個賬戶。這兒的問題有是shell賬戶我不一定需要總是可用的。我發現我不得不安裝git本身表明他們不是真的希望我做這樣的事情。在任何情況下,該帳戶並不是真的意味著可靠和可用的備份。
然而我意識到:我有一個龐大而且廉價的地方來存儲我的數據,那就是"S3",一個非常可靠的地方。唯一的難點就是我需要將我本地的GIT倉庫內容導入到我的S3容器中。我google了一下發現Jgit和很多的寫這個項目的博客文章。
注:我已經使用亞馬遜的S3來存儲我的網站,這是顯而易見的。然而我懷疑這個可能適用於其他的支持Jgit的“雲存儲”或者你可以修改它來支持你的托管。
創建一個S3容器
首先你需要有一個AWS的賬戶以及一個S3的容器,比如我的站點初始名稱是"r343l.com",我命名我的GIT倉庫容器為"r343l.gitrepos"。S3的容器必須有一個全球唯一名稱因此我的大部分容器都是以這樣的前綴方式進行命名。
步驟如下:
用你的ASW賬戶登錄。
進入ASW的管理控制台選擇S3。
點擊“創建”並設置一個名稱,默認情況下該容器僅對你授權,請仔細檢查。
這個步驟是用來獲取訪問倉庫的AWS訪問賬號和密碼的。例如,我們使用"main"作為賬號。如果我們將bucket分享給其他人,你可以創建一些規則,將這些訪問權限授權給在bucket上的這些用戶。但是我們假設的是做的最簡單的方式。值得注意的是一旦你在本地機器上擁有了一個文件,你必須對待他們像SSH私有證書一樣。
1.在右上角的菜單 My Account / Console menu 中的下拉菜單獲取安全證書
2.在你的home文件夾下創建一個名為“.jgit_s3_public”的文件(我用的是Mac,不確定在windows下是否正確)。確保只有你是可讀的 (訪問權限是600)。在unix-ish系統中的命令是
touch ~/.jgit_s3_public; chmod 600 ~/.jgit_s3_public
3.在AWS證書頁面,向下滾動知道看到“Your access keys”。點擊“Show”來獲取密鑰。像下面的例子一樣,將賬號和密鑰拷貝到新創的文件中:
accesskey: [access ID for AWS]
secretkey: [secret key for AWS]
acl: private
Download下載軟件。我選擇的是包含shell腳本的版本,它該版本包含了一個運行Jgit的腳本(一個javav應用程序)和其java的代碼。該命令位於項目根目錄的 "bin" 文件夾,其別名 "jgit" 命令。
我們假設你的bucket是foo.gitrepos,其存儲了你所有的給個人git倉庫。就我而言,我把我的網站主放到了那麼,而另外一個使用則可能是在另一個網站托管的的博客文章。你知道為什麼大家說在博客軟件之外編輯嗎,因為你的浏覽器有可能崩潰。現在好了,比在博客軟件之外編輯更好的是將這些文件保存到一個單獨的地方,以防托管的博客丟失。例如下面的例子,我們假設你又一耳光tumblr.
cd ~/
mkdir myrants-tumblr
cd myrants-tumblr
... create some files
git init
git add *
git commit -m "my new files yay!"
git remote add s3 amazon-s3://[email protected]/projects/myrants-tumblr
jgit push s3 refs/heads/master ### 注意:是jgit,不是git
現在在S3上你有自己的文件了!
從 S3 獲取你的文件
當你在另外一台電腦上,並且非常想要獲取到你自己的文件該怎麼辦呢?現在好了,你只要安裝 JGit 並且像以前一樣設置一下其客戶端的證書就可以了。然後克隆下git倉庫中的內容
jgit clone amazon-s3://[email protected]/projects/myrants-tumblr
然後你就可以根據需要編輯或者是增加文件了。把文件備份到S3就像之前PUSH的一樣。需要注意的是,一旦在多個地方建立了本地倉庫,在某些時候,是需要更新本地倉庫代碼的。用jgit的命令如下:
jgit fetch ## gets updates from the S3 master
git merge s3/master
基本上,操作本地倉庫時(添加,提交,合並)用git的本地命令,和S3 bucket交互時發送或者是接受數據則使用jgit
本文到此結束,希望本文對您有所幫助!
Linux git命令參數及用法詳解 http://www.linuxidc.com/Linux/2012-01/51205.htm
Fedora通過Http Proxy下載Git http://www.linuxidc.com/Linux/2009-12/23170.htm
在Ubuntu Server上安裝Git http://www.linuxidc.com/Linux/2009-06/20421.htm
服務器端Git倉庫的創建(Ubuntu) http://www.linuxidc.com/Linux/2011-02/32542.htm
Linux下Git簡單使用教程(以Android為例) http://www.linuxidc.com/Linux/2010-11/29883.htm
Git權威指南 PDF高清中文版 http://www.linuxidc.com/Linux/2013-10/91053.htm
Git 的詳細介紹:請點這裡
Git 的下載地址:請點這裡