2012-05-10 106 views
0

我试图在一堆负载均衡的网络节点(w1,w2,w3)上同步一堆域(a.com,b.com和c.com)。如何将我的所有网络节点rsync关闭?

我计划建立到节点1(W1),然后rsync将别人的东西是这样的:

rsync -arv /var/www/vhosts/a.com/ [email protected]:/var/www/vhosts/a.com/ 

有了这样一个动态脚本(假设我在W1的话):

#!/bin/bash 

DOMAINS="a.com b.com c.com" 
NODES="w2 w3" 

for DOMAIN in $DOMAINS; do 
     for NODE in $NODES; do 
       COMMAND="rsync -arv --exclude 'logs' --exclude '.git' /var/www/vhosts/$DOMAIN/ [email protected]$NODE:/var/www/vhosts/$DOMAIN/" 
       echo "$COMMAND" 
       "$COMMAND" 
     done 
done 

第一个,手册,rsync工作得很好。但由于某种原因,我的批处理rsync脚本正在崩溃。

有人帮我调试吗?谢谢。

+1

用'-x'('sh -x yourscript')运行它,看看它到底在做什么。 – larsks

+0

忘记它。这是我的节点别名问题。我的错。我会回复这个问题并给你答案。谢谢。 – Ryan

回答

1

你有一些过度的报价去那里。改变这一行:

"$COMMAND" 

要这样:

$COMMAND 

当你把周围的整个事情的报价,外壳将其解释为一个单一的“令牌”。这里有一个简单的例子:

$ COMMAND="echo hello" 
$ "$COMMAND" 
bash: echo: command not found... 
$ $COMMAND 
hello