gerrit代碼簡單備份方案分享


 

由於前期部署了gerrit代碼審核系統,開發調整后的線上代碼都放到gerrit上,這就要求我們要保證代碼的安全。所以,對gerrit代碼的備份至關重要!

備份的策略是:
1)先首次將gerrit項目代碼git clone下來,然后后續備份前進行git pull
2)編寫備份腳本,crontab定時執行
3)除了本機備份外,還可以備份到遠程

下面是操作記錄:

比如,備份gerrit上的下列項目代碼

查看各個項目的gerrit代碼下載地址(ssh方式):

1)首先在本地將gerrit項目代碼下載下來(本地的wangshibo用戶下的公鑰已經放到gerrit上,在wangshibo用戶下git clone)
[root@115r gerrit.bak]# su - wangshibo
[root@115r gerrit.bak]$ pwd
/home/wangshibo/gerrit.bak
[root@115r gerrit.bak]$ git clone ssh://wangshibo@103.110.186.130:29418/kevin_ios && scp -p -P 29418 wangshibo@103.110.186.130:hooks/commit-msg kevin_ios/.git/hooks/
[root@115r gerrit.bak]$ git clone ssh://wangshibo@103.110.186.130:29418/kevin_android && scp -p -P 29418 wangshibo@103.110.186.130:hooks/commit-msg fangfull_kevin/.git/hooks/
[root@115r gerrit.bak]$ git clone ssh://wangshibo@103.110.186.130:29418/kevin_old_android && scp -p -P 29418 wangshibo@103.110.186.130:hooks/commit-msg kevin_old_android/.git/hooks/
[root@115r gerrit.bak]$ git clone ssh://wangshibo@103.110.186.130:29418/kevin_old_ios && scp -p -P 29418 wangshibo@103.110.186.130:hooks/commit-msg kevin_old_ios/.git/hooks/
[root@115r gerrit.bak]$ git clone ssh://wangshibo@103.110.186.130:29418/static-kevin && scp -p -P 29418 wangshibo@103.110.186.130:hooks/commit-msg static-kevin/.git/hooks/
 
[root@115r gerrit.bak]$ ll
總用量 32
drwxr-xr-x. 5 wangshibo wangshibo 4096 9月 14 13:10 kevin_ios
drwxr-xr-x. 5 wangshibo wangshibo 4096 8月 24 09:49 kevin_android
drwxr-xr-x. 4 wangshibo wangshibo 4096 8月 24 09:49 kevin_old_android
drwxr-xr-x. 4 wangshibo wangshibo 4096 8月 24 09:49 kevin_old_ios
drwxr-xr-x. 10 wangshibo wangshibo 4096 8月 29 11:29 static-kevin
 
[root@115r gerrit.bak]$ cd kevin_old_ios/
[root@115r kevin_old_ios]$ git branch -av                     //查看發現git分支也已經下載下來了
* master fd4c4f6 90
remotes/origin/HEAD -> origin/master
remotes/origin/dev a5bdc2c 提交客戶resetCookie
remotes/origin/kevin_old_ios e00aa7e DEL:rm readme file into fangfull_old_ios
remotes/origin/master fd4c4f6 90
 
[root@115r gerrit.bak]$ cat /home/wangshibo/gerrit-bak.sh
#!/bin/bash
cd /home/wangshibo/gerrit.bak/kevin_android && /usr/local/bin/git pull
cd /home/wangshibo/gerrit.bak/kevin_ios && /usr/local/bin/git pull
cd /home/wangshibo/gerrit.bak/kevin_old_android && /usr/local/bin/git pull
cd /home/wangshibo/gerrit.bak/kevin_old_ios && /usr/local/bin/git pull
cd /home/wangshibo/gerrit.bak/static-kevin && /usr/local/bin/git pull
 
然后crontab計划任務制定,每小時備份一次
[root@Zabbix-server gerrit.bak]$ crontab -l
10 * * * * /bin/bash -x /home/wangshibo/gerrit-bak.sh > /dev/null 2>&1
 
2)第一步只是在本地備份,可以將本地備份的git做副本放到遠程機器上
下面是遠程機器上的操作(遠程機器已和本地機器做了ssh信任關系)(192.168.1.15是本地機器)
[root@bastion-IDC ~]# cd /home/backup/
[root@bastion-IDC backup]# ls
192.168.1.15-gerrit gerritbak.sh
[root@bastion-IDC backup]# cat gerritbak.sh
#/bin/bash
/usr/bin/rsync -e "ssh -p22" -avpgolr wangshibo@192.168.1.15:/home/wangshibo/gerrit.bak /home/backup/192.168.1.15-gerrit/`date +gerrit-%Y-%m-%d`/
 
[root@bastion-IDC backup]# cd 192.168.1.15-gerrit/
[root@bastion-IDC 192.168.1.15-gerrit]# ls
gerrit-2016-9-17
[root@bastion-IDC 192.168.1.15-gerrit]# cd gerrit-2016-9-17/
 
[root@bastion-IDC gerrit-2016-9-17]# ls
 
gerrit.bak
[root@bastion-IDC gerrit-2016-9-17]# ll gerrit.bak
total 32
drwxr-xr-x. 5 512 512 4096 Aug 24 09:49 kevin_android
drwxr-xr-x. 4 512 512 4096 Aug 24 09:49 kevin_ios
drwxr-xr-x. 4 512 512 4096 Aug 24 09:49 kevin_old_android
drwxr-xr-x. 4 512 512 4096 Aug 24 09:49 kevin_old_ios
drwxr-xr-x. 10 512 512 4096 Aug 29 11:29 static-kevin
 
[root@bastion-IDC 192.168.1.15-gerrit]# cd kevin_old_ios/
[wangshibo@bastion-IDC kevin_old_ios]$ git branch -av                    //查看,說明git分支也已經備份下來了
* master fd4c4f6 90
remotes/origin/HEAD -> origin/master
remotes/origin/dev a5bdc2c 提交客戶resetCookie
remotes/origin/kevin_old_ios e00aa7e DEL:rm readme file into fangfull_old_ios
remotes/origin/master fd4c4f6 90
 
制定計划任務,每30分鍾備份過來一次
[root@bastion-IDC backup]# crontab -l
*/30 * * * * /bin/bash -x /home/backup/gerritbak.sh > /dev/null 2>&1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM