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

全体を引用符で囲むと、シェルはそれを単一の「トークン」として解釈します。簡単な例を次に示します。

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