#!/bin/bash DIR=`dirname $0` BIN_DIR=${DIR}/bin ETC_DIR=${DIR}/etc LIB_DIR=${DIR}/lib REMOTE_ADDR=xiao@10.1.1.1:~/tb/ob-test2/ CS_CMD=chunkserver CS_CONF=chunkserver.conf MS_CMD=mergeserver MS_CONF=mergeserver.conf UPS_CMD=updateserver UPS_CONF=updateserver.conf RS_CMD=rootserver RS_CONF=rootserver.conf set_env() { export LD_LIBRARY_PATH=$LIB_DIR:/usr/local/lib:$LD_LIBRARY_PATH ulimit -n 65535 >/dev/null 2>&1 ulimit -c unlimited } #$1 local file path sync_file() { scp $1 ${REMOTE_ADDR}$1 } #$1 local dir path sync_files() { scp -r $1/* ${REMOTE_ADDR}$1/ } #main set_env cd $DIR case $1 in conf) sync_files ${ETC_DIR} ;; ms_conf) sync_file ${ETC_DIR}/$MS_CONF ;; cs_conf) sync_file ${ETC_DIR}/$CS_CONF ;; clean) rm log -rf ;; *) echo "Usage: $0 conf|ms_conf|cs_conf|clean)" ;; esac
为了便于多台主机之间同步文件(二进制、配置文件等),通过一个脚本来解决问题比较方便。
在自己写脚本之前,用了两三套自动部署工具,都是组里面别的同学写的,写得非常棒,但使用过程中总是遇到这样那样的问题,而且自己无法解决,必须要作者协助。干脆自己写一个,慢一点,自动化程度低一点,但是控制力更强,相反让效率更高了。
http://weibo.com/raywill2