linux - 我怎样才能将我所有的 web 节点从一个 master 上同步?

标签 linux bash shell load-balancing rsync

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

我计划构建到节点 1 (w1),然后使用类似这样的方法与其他节点同步:

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 脚本出现故障。

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

最佳答案

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

"$COMMAND"

对此:

$COMMAND

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

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

关于linux - 我怎样才能将我所有的 web 节点从一个 master 上同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10541581/

相关文章:

c++ - 有没有办法获取正在运行或新打开的资源管理器窗口的IExplorerBrowser接口(interface),以便后续调用BrowseToXXX?

linux - VMWare Mavericks 中的跳跃、生涩、不稳定的鼠标

bash - 您如何从挖掘结果中解析 SRV 记录的端口?

linux - 在 bash 脚本中扩展变量以在单引号中传递其值

linux - Bash Shell - 引用问题

shell - 仅当目录尚不存在时如何 mkdir ?

c++ - 长双增量运算符不适用于大数

python - 将 py 和 sh 代码合并到一个文件中

linux - Linux中的可变页面大小

php - 使用短标签从命令行运行 php