0

我正在尝试在一堆负载平衡的 Web 节点(w1、w2、w3)上同步一堆域(a.com、b.com 和 c.com)。

我计划构建到节点 1 (w1),然后通过类似这样的方式与其他节点进行 rsync:

rsync -arv /var/www/vhosts/a.com/ root@w1:/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/ root@$NODE:/var/www/vhosts/$DOMAIN/"
                echo "$COMMAND"
                "$COMMAND"
        done
done

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

有人愿意帮我调试吗?谢谢。

4

1 回答 1

1

你那里有一些过度引用。更改此行:

"$COMMAND"

对此:

$COMMAND

当您在整个事物周围加上引号时,shell 会将其解释为单个“标记”。这是一个简单的例子:

$ COMMAND="echo hello"
$ "$COMMAND"
bash: echo: command not found...
$ $COMMAND
hello
于 2012-05-10T20:28:42.170 回答