前段時間,在某台CenterOS伺服器上搭建了Gitlab環境,并且大家陸陸續續的都把代碼從svn遷移到了gitlab,但是之前的CenterOS伺服器并不是搭建在公司的機房環境,而是搭建在辦公室的某台閑置的電腦上,是以為了保證資料安全性,上司要求為将之前的Gitlab資料全部重新遷移到公司機房的伺服器上面去。
首先我們得把老伺服器上的Gitlab整體備份,使用Gitlab一鍵安裝包安裝Gitlab非常簡單, 同樣的備份恢複與遷移也非常簡單. 使用一條指令即可建立完整的Gitlab備份。
使用以上指令會在/var/opt/gitlab/backups目錄下建立一個名稱類似為1502357536_2017_08_10_9.4.3_gitlab_backup.tar的壓縮包, 這個壓縮包就是Gitlab整個的完整部分, 其中開頭的1502357536_2017_08_10_9.4.3是備份建立的日期
/etc/gitlab/gitlab.rb 配置檔案須備份
/var/opt/gitlab/nginx/conf nginx配置檔案
/etc/postfix/main.cfpostfix 郵件配置備份

生成完後,/var/opt/gitlab/backups目錄建立一個名稱類似為1502357536_2017_08_10_9.4.3_gitlab_backup.tar的壓縮包
當然你也可以通過/etc/gitlab/gitlab.rb配置檔案來修改預設存放備份檔案的目錄
/var/opt/gitlab/backups修改為你想存放備份的目錄即可,例如下面代碼将備份路徑修改為/mnt/backups
修改完成之後使用下面指令重載配置檔案即可.
在crontab檔案裡面,每一行代表一項任務,每行的每個字段代表一項設定,它的格式共分為六個字段,前五段是時間設定段,第六段是要執行的指令段,每個字段之間用空格分割,沒用的段用*代替,格式如下:
其中:
m: 表示分鐘,可以是從0到59之間的任何整數。
h:表示小時,可以是從0到23之間的任何整數。
dom:表示日期,可以是從1到31之間的任何整數。
mon:表示月份,可以是從1到12之間的任何整數。
dow:表示星期幾,可以是從0到7之間的任何整數,這裡的0或7代表星期日。
user : 表示執行的使用者。
command:要執行的指令,可以是系統指令,也可以是自己編寫的腳本檔案(如shell檔案)。
實作每天淩晨2點進行一次自動備份:通過crontab使用備份指令實作,需重新開機cron服務
方法1、在指令行輸入: crontab -e 然後添加相應的任務,wq存盤退出。
方法2、直接編輯/etc/crontab 檔案,即vi /etc/crontab,然後添加相應的任務
然後再編輯框内輸入相應的任務
或者直接定時執行一個腳本 auto_backup.sh ,腳本内容為
然後再 /etc/crontab中,添加相關任務定時執行 auto_backup.sh 腳本檔案
/etc/crontab 中添加執行腳本的定時任務,代碼如下:
編寫完 /etc/crontab 檔案之後,需要重新啟動cron服務
實際運作如下
關于Cron表達式可以參考連結:
<a href="http://www.cnblogs.com/junrong624/p/4239517.html" target="_blank">http://www.cnblogs.com/junrong624/p/4239517.html</a>
<a href="http://blog.csdn.net/xiyuan1999/article/details/8160998" target="_blank">http://blog.csdn.net/xiyuan1999/article/details/8160998</a>
<a href="http://www.cnblogs.com/kaituorensheng/p/4494321.html" target="_blank">http://www.cnblogs.com/kaituorensheng/p/4494321.html</a>
關于gitlab備份可以參考連結:
<a href="http://blog.csdn.net/utopiaprince/article/details/50039989" target="_blank">http://blog.csdn.net/utopiaprince/article/details/50039989</a>
<a href="http://www.cnblogs.com/shansongxian/p/6599144.html" target="_blank">http://www.cnblogs.com/shansongxian/p/6599144.html</a>
<a href="http://www.ttlsa.com/linux/gitlab-backup-restore/" target="_blank">http://www.ttlsa.com/linux/gitlab-backup-restore/</a>
<a href="https://github.com/sund/auto-gitlab-backup" target="_blank">https://github.com/sund/auto-gitlab-backup</a>
<a href="https://gitlab.com/help/raketasks/backup_restore.md" target="_blank">https://gitlab.com/help/raketasks/backup_restore.md</a>
<a href="http://blog.csdn.net/felix_yujing/article/details/52918803" target="_blank">http://blog.csdn.net/felix_yujing/article/details/52918803</a>
關于如何将gitlab備份檔案備份到遠端備份伺服器,參考連結:
<a href="http://blog.csdn.net/ouyang_peng/article/details/77334215" target="_blank">Git學習–>如何通過Shell腳本自動定時将Gitlab備份檔案複制到遠端伺服器?</a>
<a href="http://blog.csdn.net/ouyang_peng/article/details/77334215" target="_blank">http://blog.csdn.net/ouyang_peng/article/details/77334215</a>
設定隻儲存最近7天的備份,編輯 /etc/gitlab/gitlab.rb 配置檔案,找到gitlab_rails[‘backup_keep_time’],設定為你想要設定的值,然後儲存。
第一步,新伺服器上的Gitlab的版本必須與建立備份時的Gitlab版本号相同. 比如新伺服器安裝的是最新的9.4.3版本的Gitlab, 那麼遷移之前, 最好将老伺服器的Gitlab 更新為9.4.3再進行備份.
可以參考之前的部落格:
<a href="http://blog.csdn.net/ouyang_peng/article/details/72903221" target="_blank">git學習——>在CenterOS系統上安裝GitLab并自定義域名通路GitLab管理頁面</a>
第二步,如果你沒修改過預設備份目錄的話,需要将老伺服器上的備份檔案目錄(/var/opt/gitlab/backups目錄)下的備份檔案拷貝到新伺服器上的/var/opt/gitlab/backups目錄。
使用scp指令從遠端伺服器copy檔案或者目錄到本地
[使用者名 @IP 位址 :] 可以不輸入 , 可能需要輸入遠端使用者名所對應的密碼 .
可能有用的幾個參數 :
-v 和大多數 linux 指令中的 -v 意思一樣 , 用來顯示進度 . 可以用來檢視連接配接 , 認證 , 或是配置錯誤 .
-C 使能壓縮選項 .
-P 選擇端口 . 注意 -p 已經被 rcp 使用 .
-4 強行使用 IPV4 位址 .
-6 強行使用 IPV6 位址 .
例如我使用如下指令,從遠端伺服器copy剛才的備份檔案到了新伺服器的/var/opt/gitlab/backups/ 目錄下
copy完後,檢視copy的檔案如下
第一步,将備份檔案權限修改為777,不然可能恢複的時候會出現權限不夠,不能解壓的問題
第二步,執行指令停止相關資料連接配接服務
第三步,執行指令從備份檔案中恢複Gitlab
例如我們的備份檔案的編号是1502357536_2017_08_10_9.4.3,是以執行下面的指令即可恢複gitlab
敲完指令後,出現第一個互動頁面,
輸入“yes”繼續。
恢複過程中。。。。。
出現第二個互動頁面,
第四步,啟動Gitlab
對比,可以發現,除了兩台伺服器的ip位址不一樣之外,其他的内容完全一模一樣,遷移成功!
<a href="http://www.xuliangwei.com/xubusi/803.html">Gitlab備份與恢複、遷移與更新</a>
<a href="http://www.xuliangwei.com/xubusi/803.html">http://www.xuliangwei.com/xubusi/803.html</a>
<a href="https://segmentfault.com/a/1190000002439923">使用Gitlab一鍵安裝包後的日常備份恢複與遷移</a>
<a href="https://segmentfault.com/a/1190000002439923">https://segmentfault.com/a/1190000002439923</a>
<a href="http://www.cnblogs.com/shansongxian/p/6599144.html">http://www.cnblogs.com/shansongxian/p/6599144.html</a>
<a href="http://blog.csdn.net/jenyzhang/article/details/53928438">http://blog.csdn.net/jenyzhang/article/details/53928438</a>
<a href="http://www.cnblogs.com/junrong624/p/4239517.html">http://www.cnblogs.com/junrong624/p/4239517.html</a>
<a href="http://blog.csdn.net/xiyuan1999/article/details/8160998">http://blog.csdn.net/xiyuan1999/article/details/8160998</a>
<a href="http://www.cnblogs.com/kaituorensheng/p/4494321.html">http://www.cnblogs.com/kaituorensheng/p/4494321.html</a>
<a href="http://blog.csdn.net/utopiaprince/article/details/50039989">http://blog.csdn.net/utopiaprince/article/details/50039989</a>
<a href="http://www.ttlsa.com/linux/gitlab-backup-restore/">http://www.ttlsa.com/linux/gitlab-backup-restore/</a>
<a href="https://github.com/sund/auto-gitlab-backup">https://github.com/sund/auto-gitlab-backup</a>
<a href="https://gitlab.com/help/raketasks/backup_restore.md">https://gitlab.com/help/raketasks/backup_restore.md</a>
<a href="http://blog.csdn.net/felix_yujing/article/details/52918803">http://blog.csdn.net/felix_yujing/article/details/52918803</a>
<a href="http://blog.csdn.net/ouyang_peng/article/details/77334215">Git學習–>如何通過Shell腳本自動定時将Gitlab備份檔案複制到遠端伺服器?</a>
<a href="http://blog.csdn.net/ouyang_peng/article/details/77334215">http://blog.csdn.net/ouyang_peng/article/details/77334215</a>
作者:歐陽鵬 歡迎轉載,與人分享是進步的源泉! 如果本文對您有所幫助,歡迎您掃碼下圖所示的支付寶和微信支付二維碼對本文進行打賞。