#!/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
为了便于多台主机之间同步文件(二进制、配置文件等),通过一个脚本来解决问题比较方便。
在自己写脚本之前,用了两三套自动部署工具,都是组里面别的同学写的,写得非常棒,但使用过程中总是遇到这样那样的问题,而且自己无法解决,必须要作者协助。干脆自己写一个,慢一点,自动化程度低一点,但是控制力更强,相反让效率更高了。
作者微博: