由于前期部署了gerrit代碼稽核系統,開發調整後的線上代碼都放到gerrit上,這就要求我們要保證代碼的安全。是以,對gerrit代碼的備份至關重要!
備份的政策是:
1)先首次将gerrit項目代碼git clone下來,然後後續備份前進行git pull
2)編寫備份腳本,crontab定時執行
3)除了本機備份外,還可以備份到遠端
下面是操作記錄:
比如,備份gerrit上的下列項目代碼

檢視各個項目的gerrit代碼下載下傳位址(ssh方式)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<code>1)首先在本地将gerrit項目代碼下載下傳下來(本地的wangshibo使用者下的公鑰已經放到gerrit上,在wangshibo使用者下git clone)</code>
<code>[root@115r gerrit.bak]</code><code># su - wangshibo</code>
<code>[root@115r gerrit.bak]$ </code><code>pwd</code>
<code>/home/wangshibo/gerrit</code><code>.bak</code>
<code>[root@115r gerrit.bak]$ git clone </code><code>ssh</code><code>:</code><code>//wangshibo</code><code>@103.110.186.130:29418</code><code>/huanqiu_ios</code> <code>&& </code><code>scp</code> <code>-p -P 29418 [email protected]:hooks</code><code>/commit-msg</code> <code>huanqiu_ios/.git</code><code>/hooks/</code>
<code>[root@115r gerrit.bak]$ git clone </code><code>ssh</code><code>:</code><code>//wangshibo</code><code>@103.110.186.130:29418</code><code>/huanqiu_android</code> <code>&& </code><code>scp</code> <code>-p -P 29418 [email protected]:hooks</code><code>/commit-msg</code> <code>fangfull_huanqiu/.git</code><code>/hooks/</code>
<code>[root@115r gerrit.bak]$ git clone </code><code>ssh</code><code>:</code><code>//wangshibo</code><code>@103.110.186.130:29418</code><code>/huanqiu_old_android</code> <code>&& </code><code>scp</code> <code>-p -P 29418 [email protected]:hooks</code><code>/commit-msg</code> <code>huanqiu_old_android/.git</code><code>/hooks/</code>
<code>[root@115r gerrit.bak]$ git clone </code><code>ssh</code><code>:</code><code>//wangshibo</code><code>@103.110.186.130:29418</code><code>/huanqiu_old_ios</code> <code>&& </code><code>scp</code> <code>-p -P 29418 [email protected]:hooks</code><code>/commit-msg</code> <code>huanqiu_old_ios/.git</code><code>/hooks/</code>
<code>[root@115r gerrit.bak]$ git clone </code><code>ssh</code><code>:</code><code>//wangshibo</code><code>@103.110.186.130:29418</code><code>/static-huanqiu</code> <code>&& </code><code>scp</code> <code>-p -P 29418 [email protected]:hooks</code><code>/commit-msg</code> <code>static-huanqiu/.git</code><code>/hooks/</code>
<code>[root@115r gerrit.bak]$ ll</code>
<code>總用量 32</code>
<code>drwxr-xr-x. 5 wangshibo wangshibo 4096 9月 14 13:10 huanqiu_ios</code>
<code>drwxr-xr-x. 5 wangshibo wangshibo 4096 8月 24 09:49 huanqiu_android</code>
<code>drwxr-xr-x. 4 wangshibo wangshibo 4096 8月 24 09:49 huanqiu_old_android</code>
<code>drwxr-xr-x. 4 wangshibo wangshibo 4096 8月 24 09:49 huanqiu_old_ios</code>
<code>drwxr-xr-x. 10 wangshibo wangshibo 4096 8月 29 11:29 static-huanqiu</code>
<code>[root@115r gerrit.bak]$ </code><code>cd</code> <code>huanqiu_old_ios/</code>
<code>[root@115r huanqiu_old_ios]$ git branch -av </code><code>//</code><code>檢視發現git分支也已經下載下傳下來了</code>
<code>* master fd4c4f6 90</code>
<code>remotes</code><code>/origin/HEAD</code> <code>-> origin</code><code>/master</code>
<code>remotes</code><code>/origin/dev</code> <code>a5bdc2c 送出客戶resetCookie</code>
<code>remotes</code><code>/origin/huanqiu_old_ios</code> <code>e00aa7e DEL:</code><code>rm</code> <code>readme </code><code>file</code> <code>into fangfull_old_ios</code>
<code>remotes</code><code>/origin/master</code> <code>fd4c4f6 90</code>
<code>[root@115r gerrit.bak]$ </code><code>cat</code> <code>/home/wangshibo/gerrit-bak</code><code>.sh</code>
<code>#!/bin/bash</code>
<code>cd</code> <code>/home/wangshibo/gerrit</code><code>.bak</code><code>/huanqiu_android</code> <code>&& </code><code>/usr/local/bin/git</code> <code>pull</code>
<code>cd</code> <code>/home/wangshibo/gerrit</code><code>.bak</code><code>/huanqiu_ios</code> <code>&& </code><code>/usr/local/bin/git</code> <code>pull</code>
<code>cd</code> <code>/home/wangshibo/gerrit</code><code>.bak</code><code>/huanqiu_old_android</code> <code>&& </code><code>/usr/local/bin/git</code> <code>pull</code>
<code>cd</code> <code>/home/wangshibo/gerrit</code><code>.bak</code><code>/huanqiu_old_ios</code> <code>&& </code><code>/usr/local/bin/git</code> <code>pull</code>
<code>cd</code> <code>/home/wangshibo/gerrit</code><code>.bak</code><code>/static-huanqiu</code> <code>&& </code><code>/usr/local/bin/git</code> <code>pull</code>
<code>然後</code><code>crontab</code><code>計劃任務制定,每小時備份一次</code>
<code>[root@Zabbix-server gerrit.bak]$ </code><code>crontab</code> <code>-l</code>
<code>10 * * * * </code><code>/bin/bash</code> <code>-x </code><code>/home/wangshibo/gerrit-bak</code><code>.sh > </code><code>/dev/null</code> <code>2>&1</code>
<code>2)第一步隻是在本地備份,可以将本地備份的git做副本放到遠端機器上</code>
<code>下面是遠端機器上的操作(遠端機器已和本地機器做了</code><code>ssh</code><code>信任關系)(192.168.1.15是本地機器)</code>
<code>[root@bastion-IDC ~]</code><code># cd /home/backup/</code>
<code>[root@bastion-IDC backup]</code><code># ls</code>
<code>192.168.1.15-gerrit gerritbak.sh</code>
<code>[root@bastion-IDC backup]</code><code># cat gerritbak.sh</code>
<code>#/bin/bash</code>
<code>/usr/bin/rsync</code> <code>-e </code><code>"ssh -p22"</code> <code>-avpgolr [email protected]:</code><code>/home/wangshibo/gerrit</code><code>.bak </code><code>/home/backup/192</code><code>.168.1.15-gerrit/`</code><code>date</code> <code>+gerrit-%Y-%m-%d`/</code>
<code>[root@bastion-IDC backup]</code><code># cd 192.168.1.15-gerrit/</code>
<code>[root@bastion-IDC 192.168.1.15-gerrit]</code><code># ls</code>
<code>gerrit-2016-9-17</code>
<code>[root@bastion-IDC 192.168.1.15-gerrit]</code><code># cd gerrit-2016-9-17/</code>
<code>[root@bastion-IDC gerrit-2016-9-17]</code><code># ls</code>
<code>gerrit.bak</code>
<code>[root@bastion-IDC gerrit-2016-9-17]</code><code># ll gerrit.bak</code>
<code>total 32</code>
<code>drwxr-xr-x. 5 512 512 4096 Aug 24 09:49 huanqiu_android</code>
<code>drwxr-xr-x. 4 512 512 4096 Aug 24 09:49 huanqiu_ios</code>
<code>drwxr-xr-x. 4 512 512 4096 Aug 24 09:49 huanqiu_old_android</code>
<code>drwxr-xr-x. 4 512 512 4096 Aug 24 09:49 huanqiu_old_ios</code>
<code>drwxr-xr-x. 10 512 512 4096 Aug 29 11:29 static-huanqiu</code>
<code>[root@bastion-IDC 192.168.1.15-gerrit]</code><code># cd huanqiu_old_ios/</code>
<code>[wangshibo@bastion-IDC huanqiu_old_ios]$ git branch -av </code><code>//</code><code>檢視,說明git分支也已經備份下來了</code>
<code>制定計劃任務,每30分鐘備份過來一次</code>
<code>[root@bastion-IDC backup]</code><code># crontab -l</code>
<code>*</code><code>/30</code> <code>* * * * </code><code>/bin/bash</code> <code>-x </code><code>/home/backup/gerritbak</code><code>.sh > </code><code>/dev/null</code> <code>2>&1</code>
***************當你發現自己的才華撐不起野心時,就請安靜下來學習吧***************
本文轉自散盡浮華部落格園部落格,原文連結:http://www.cnblogs.com/kevingrace/p/5881288.html,如需轉載請自行聯系原作者