用来分发builder建好的索引.
usage:
for file in $file_list do $BASE_HOME/bin/lcp.sh "$list" $AUCTION_DIR/index/$file $DEST_HOME/rundata/auction/index.0/$file 1 0 done
调用时,最后一个0是没有用到的.
用时注意: "$list"里已经没有本机了,不然会出现给本机多传一次.
主要代码
for server in $server_list do if [ $flag -eq 1 ]; then echo "==== scp $hostn:$src_file => $server:$dest_file =====" scp -p -o ConnectTimeout=5 $src_file $server:$dest_file >/dev/null 2>&1 0>&1 ret=$? if [ $ret -ne 0 ]; then echo "SCP失败: $hostn:$src_file => $server:$dest_file" writeLog "SCP失败: $hostn:$src_file => $server:$dest_file" continue; fi ssh -o ConnectTimeout=5 $server "$DEST_HOME/bin/lcp.sh '$server_list' $dest_file" >/dev/null 2>&1 0>&1 & pid=$! echo $pid >> $DEST_HOME/logs/lcp.pid break; fi if [ $hostn == $server ]; then flag=1 fi done
flag的意思表明本进程是发起进程,不用做跳过的判断.注意在递归调用lcp时,在最后有一
个&,是放到后台的.
假设A上有一个文件file,要从A传到B,再传到C, 再从C到D. A会先传给B,如果失败,则向
C传. 假设成功. 然后ssh调用B上的lcp(后台执行). 执行到同样的循环,先跳过前面所有
已经传过的机器,向排在自己后面的一个机器(C)传file, 再ssh到C, 调用lcp,如此循环下
去.