我想知道是否有一個簡單的方法,即像一個簡單的cron作業,定期拉從遠程git存儲庫到本地只讀鏡像備份的目的?通過拉動來鏡像git存儲庫?
理想情況下,它會拉所有的分支和標籤,但主/行李箱/頭就足夠了。
我只是需要一種方法來確保如果主git服務器死亡,我們有一個備份位置,我們可以手動故障轉移到。
我想知道是否有一個簡單的方法,即像一個簡單的cron作業,定期拉從遠程git存儲庫到本地只讀鏡像備份的目的?通過拉動來鏡像git存儲庫?
理想情況下,它會拉所有的分支和標籤,但主/行李箱/頭就足夠了。
我只是需要一種方法來確保如果主git服務器死亡,我們有一個備份位置,我們可以手動故障轉移到。
首先創建的鏡像
git clone --mirror [email protected]:repo.git
然後設置一個cron作業是這樣的:
*/1 * * * * gitbackup cd /backup/repo.git && git fetch -q --tags
這將備份每分鐘的變更。也許你不想經常這樣做。
你有直接訪問服務器嗎?那麼你可以只是rsync
.git
目錄
正如安德魯指出的,每個git倉庫的克隆都是倉庫的完整備份。也就是說,如果您想要自動備份到特定計算機的某些內容,您可以在備份服務器上創建一個裸回購,並將其與所有需要備份的分支一起推入,以便最初填充它。然後,只需在「主」回購庫上設置一個後續更新掛鉤,以便一旦有提交進入,它就會繼續前進,並將它們推送到備份回購站。不需要一個cron作業或rsync,它幾乎是一個現場拷貝。
+1用於添加一般性好的解決方案(因此是一個很好的參考),但不回答問題。我們正在問如何拉動NAT,因爲我們需要通過NAT – corydoras 2010-05-04 07:46:08
bash腳本想法有什麼問題?你可以修改它做一次探測/拉動,然後把它安裝成cron作業,不是嗎? – Santa 2010-05-03 07:50:50
該腳本將會很好。你知道每個git repo的克隆都是完整的備份嗎?所以你很可能已經有很多的回購副本了。 – 2010-05-03 08:23:34
@安德魯,好點。在我們的情況中,儘管我們有例子,在任何地方都沒有克隆,也就是說我們有一些由客戶端通過FTP更新的代碼。我們使用git來跟蹤客戶正在做什麼,並且沒有克隆它的任何地方。 – corydoras 2010-05-04 07:31:40