【Shell】Gerrit同步备份脚本的实现
本期分享下gerrit如何实现备份,由于之前的一台代码服务器直接down掉,所以为了以防万一,开始备份gerrit数据,有人说,gerrit不过是个审查代码的工具,备份这个做什么,git是分布式代码管理的,即使服务器不工作了,很多人本地的代码也是保存着的,慌什么!!!说得对,git管理的代码不会丢失,但是gerrit上最直观的的open merged abandoned这几个状态的审查不见了,研发不开心了。说是工具,有时候依赖工具也不是什么坏事,毕竟是能提升工作效率的,所以就需要进行gerrit的备份,后就有今天gerrit实现同步备份的分享了。
1.备份服务器gerrit的安装一系列
2.ldap的同步备份
3.gerrit的同步备份(今天要说的!)
说下基本思路:
a.暂停主服务器gerrit服务
GERRIT_BIN="/home/lenovo/review_site/bin/"
GERRIT_BIN44="/ccf_disk/sdd/Gerrit_Backup/review_site/bin/"
cd $GERRIT_BIN
./gerrit.sh stop
b.登录备份服务器,暂停备份服务器gerrit服务,退出备份服务器
ssh lxxxx_xx@10.4.xx.xx > /dev/null 2>&1 << end
cd $GERRIT_BIN44
./gerrit.sh stop
exit
end
c.同步(rsync)主服务器、备份服务器gerrit目录
rsync -vzrtopg --progress -e ssh --delete /home/lenovo/review_site/ lxxx_xx@10.4.xx.xx:/ccf_disk/sdd/Gerrit_Backup/review_site/
d.开启主服务器gerrit服务
cd $GERRIT_BIN
./gerrit.sh start
e.登录备份服务器修改备份服务器gerrit配置及启动脚本,启动备份服务器gerrit服务后退出备份服务器
ssh lxxx_xx@10.4.xx.xx > /dev/null 2>&1 << end
sed -i "s/home\/lenovo/ccf_disk\/sdd\/Gerrit_Backup/g" /ccf_disk/sdd/Gerrit_Backup/review_site/bin/gerrit.sh
sed -i "s/226/69/g" /ccf_disk/sdd/Gerrit_Backup/review_site/etc/gerrit.config
sed -i "s/home\/lenovo/ccf_disk\/sdd\/Gerrit_Backup/g" /ccf_disk/sdd/Gerrit_Backup/review_site/etc/gerrit.config
cd $GERRIT_BIN44
./gerrit.sh start
exit
end
rsync的使用(高效)
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
-z, --compress compress file data during the transfer
-v, --verbose increase verbosit
-P same as --partial --progress
-e, --rsh=COMMAND specify the remote shell to use
--progress show progress during transfer
--delete delete extraneous files from destination dirs
rsync -vzrtopg --progress -e ssh --delete /home/lenovo/review_site/ lxxx_xx@10.4.xx.xx:/ccf_disk/sdd/Gerrit_Backup/review_site/
简单化=======>
rsync -avP --delete /home/lenovo/review_site/ lxxx_xx@10.4.xx.xx:/ccf_disk/sdd/Gerrit_Backup/review_site/
敲黑板!!ssh互信免密:
主服务器登录备份服务器时免输入密码,让脚本继续执行,不会因为需要输入密码而暂停。
ssh-keygen+ssh-copy-id
ssh -o StrictHostKeyChecking=no gerrit2@10.0.xx.xx ls -lh review_site
一般情况下, 我使用 rsync 来备份我的文件, 而且迄今为止一直工作的很好。 唯一的不足就是无法把文件恢复到某个特定的时间点。 因此, 我开始寻找替代品, 结果发现了 BUP, 一款基于 git 的软件, 它将数据存储在一个仓库中, 并且有将数据恢复到特定时间点的选项。
要使用 BUP, 你先要初始化一个空的仓库, 然后备份所有文件。 当 BUP 完成一次备份是, 它会创建一个还原点, 你可以过后还原到这里。 它还会创建所有文件的索引, 包括文件的属性和验校和。 当要进行下一个备份时, BUP 会对比文件的属性和校验和, 只保存发生变化的数据。 这样可以节省很多空间。
https://github.com/ailala1993929/bup
期待下一期...