由于前期部署了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

gerrit代码简单备份方案分享的更多相关文章

  1. 04.简单了解一下Redis企业级数据备份方案

    一.企业级的持久化的配置策略 (1)每隔1分钟去检查如果超过10000个可以变更,则生成一个快照.RDB最多丢1分钟的数据. save 60 10000 (2)AOF一定要打开,fsync,every ...

  2. Mysql备份系列(1)--备份方案总结性梳理

    mysql数据库备份有多么重要已不需过多赘述了,废话不多说!以下总结了mysql数据库的几种备份方案: 一.binlog二进制日志通常作为备份的重要资源,所以再说备份方案之前先总结一下binlog日志 ...

  3. Excel与XML相互转换 - C# 简单实现方案

    Excel与XML相互转换 - C# 简单实现方案 在日常工作中,我需要将数据存储在Excel中进行数据分析和处理,然后再将数据转换为XML格式进行跨平台的数据交换.网上搜索Excel转换为XML的实 ...

  4. 原创|高逼格企业级MySQL数据库备份方案,原来是这样....

    很多人,这里说的是运维工程师们,一提到写某某方案,很是头疼.不是上某度一统搜索,就是同样一句话在N个群全部群发一遍:“有没有某某方案,可以共享一下的吗??求助,各位大佬们”,估计十有八九,全部石沉大海 ...

  5. Gerrit代码Review实战

    代码审核(Code Review)是软件研发质量保障机制中非常重要的一环,但在实际项目执行过程中,却因为种种原因被Delay甚至是忽略.在实践中,给大家推荐一款免费.开放源代码的代码审查软件Gerri ...

  6. 高逼格企业级MySQL数据库备份方案,原来是这样....

    很多人,这里说的是运维工程师们,一提到写某某方案,很是头疼.不是上某度一统搜索,就是同样一句话在N个群全部群发一遍:“有没有某某方案,可以共享一下的吗??求助,各位大佬们”,估计十有八九,全部石沉大海 ...

  7. 13.在项目中部署redis企业级数据备份方案以及各种踩坑的数据恢复容灾演练

    到这里为止,其实还是停留在简单学习知识的程度,学会了redis的持久化的原理和操作,但是在企业中,持久化到底是怎么去用得呢? 企业级的数据备份和各种灾难下的数据恢复,是怎么做得呢? 1.企业级的持久化 ...

  8. VS Code项目中通过npm包的方式共享代码片段的方案实现

    VS Code项目中通过npm包的方式共享代码片段的方案实现 上周在 "VS Code项目中共享自定义的代码片段方案" 的文章中提到过一个共享代码片段的方案,上周经过调研后并没有发 ...

  9. Mysql备份方案总结性梳理

    Mysql备份方案总结性梳理   服务器 mysql 日志 数据库 配置 Mariadb binlog   mysql数据库备份有多么重要已不需过多赘述了,废话不多说!以下总结了mysql数据库的几种 ...

随机推荐

  1. .net core 导出Excel(epplus 创建excel )

    [Route("getopenfrequencyexcel")] [HttpGet] public IActionResult GetOpenFrequencyExcel(int ...

  2. Pygame安装教程

    1.python --version  查看安装的Python版本, pip --version  查看安装的pip版本, 升级pip命令: python -m pip install --upgra ...

  3. Find a way

    Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year ...

  4. Tronado自定义Form组件

    Tronado自定义Form组件 一.获取类里面的静态属性以及动态属性的方法 方式一: # ===========方式一================ class Foo(object): user ...

  5. python随机生成6位数验证码

    #随机生成6位数验证码 import randomcode = []for i in range(6):    if i == str(random.randint(1,5)):        cod ...

  6. WebService(基于AXIS的WebService编程)

    一.服务端代码 1.创建Maven工程 注意pom.xml文件的配置,需要引入axis的相关包 <project xmlns="http://maven.apache.org/POM/ ...

  7. IntelliJ IDEA2018.3 最新破解方法 无需改host

    文章转自 https://blog.csdn.net/SmileLvCha/article/details/78936659 刚把idea升级到最新版,发现要重新激活,网上查了有改host的方法可行, ...

  8. mysql 存儲emjoy表情是報錯Incorrect string value:

    解决方法: [mysqld] character-set-client-handshake=FALSE character-set-server=utf8mb4 collation-server=ut ...

  9. Qt读取文件时中文乱码问题

    在默认情况下,Qt 以 Unicode 格式处理文本字符,因此,字符本身是不会有问题的.之所以出现乱码,原因在于 Qt 不知道将 Unicode 字符以何种方式显示出来.        文本文件含有简 ...

  10. B类——Stas and the Queue at the Buffet

    http://codeforces.com/contest/1151/problem/D 题意: n个学生,每个学生都有自己的位置,最后要使