08 Nov 2016
目前公司实际情况:
目前面临的问题: 开发负责更新流程的svn提交和shell同步脚本的执行,运维只负责重启,所以无法控制备份时间,增加了实现按更新备份策略的难度
因为代码回滚的核心就在于是否可以按照更新的频率去提前备份代码,所以基于上面的困难,就产生了此文的需求,如何实现按更新频率备份代码
公司不想使用svn、git等版本控制来控制代码回滚,而我们通常用inotify+rsync来实现实时同步,但那并不能实现按照版本备份代码。
但是我们可以转变一下思路:
这样就可以实现,每日早上一次原始备份,在每次开发的更新行为之后进行一次实时备份,若开发更新频繁,则可控制保留最近的n次更新
#!/bin/bash src='/tmp/src1/' dest='/tmp/dest1' start_time=`date +%s` while true do changed=`inotifywait -rqt 10 -e modify,attrib,moved_to,moved_from,move,move_self,create,delete,delete_self $src` node_time=`date +%s` process_time=$(($node_time-$start_time)) [ -z "$changed" ] && { [ $process_time -gt 20 ] && { backdir=$dest/`date +%m%d-%H%M` mkdir -p $backdir rsync -av --delete $src $backdir } } done