由于前期部署了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. HTML语言和CSS开发

    第一张 HTML基础1.HTML:超文本标记语言(它除了文字,还能写图片.视频.音频.交互),他不是编程语言,它是标记语言2. <!DOCTYPE html> HTML5版本申明 < ...

  2. Android ListView在增加HeaderView之后使用getLocationInWindow和getLocationOnScreen获得值不正确的解决方法

    近日遇到一个很恶心的问题,把解决方法放到空间里来分享给大家: 问题发生的条件: 1)ListView 控件中使用addHeaderView,为其添加了一个header view.(基本常识:heade ...

  3. LCD显示异常分析——撕裂(tear effect)【转】

    转自:LCD显示异常分析--撕裂(tear effect) 概述 在上一篇<LCD显示异常分析--开机闪现花屏>中,我们一起分析了开机花屏的问题,在这一篇中,我将对LCD撕裂(tear e ...

  4. Mac命令行使用tree查看目录结构

    默认tree命令是无法使用的,可以使用homebrew install tree安装. 如果直接使用tree,查看的目录里面含有中文字符的目录或文件时会出现汉字不能显示的问题,可以使用tree -N查 ...

  5. ssh无法访问服务器报“ssh-dss”认证错误

    故障描述: 在windows下的ssh客户端直接报错,内容为: Unable to negotiate with legacyhost: no matching host key type found ...

  6. docker修改容器gogs时区时间

    问题描述: 公司内部搭建了一个gogs-git,是用docker部署的,但是发现提交的代码什么的时间跟服务器时间不一致 提交上去的世界是UTC时间不是中国的时间CST,相当于慢了8个小时 1.dock ...

  7. Win10系统电脑桌面图标没有了怎么办

    win10系统相对来说还是有些不稳定的,有时候打开电脑会发现,桌面上的图标不见了,遇见这种情况,先别着急,可以使用两种很简单的方法来解决. 方法一: 在桌面上右键,点击查看,看“显示桌面图标”这一项前 ...

  8. python----运算符、布尔值

    一.运算符: + - * / ** // % 1,.   in ,not in 用法(判断某个东西是否在某个东西里面) name = '郑建文' 其中‘郑建文’是字符串, ‘郑’或‘建’或‘文’是一个 ...

  9. 在同一个服务器(同一个IP)为不同域名绑定的免费SSL证书

    越来越多的浏览器不在支持http协议了,这就要求你为你的网站必须绑定SSL证书.谷歌浏览器也将要在今年取消对http协议的支持,申请CA证书迫在眉睫.我购买有两个域名,一个虚拟机,没事鼓捣鼓捣,图个乐 ...

  10. MySql/Oracle和SQL Server的分页查

    假设当前是第PageNo页,每页有PageSize条记录,现在分别用Mysql.Oracle和SQL Server分页查询student表. 1.Mysql的分页查询: 1 SELECT 2 * 3 ...