我如何才能 rsync 到所有远程连接的主机?

我如何才能 rsync 到所有远程连接的主机?

我正在使用以下命令将文件传输rsync到仅一个连接的主机:

rsync -az -e ssh /path/to/source 192.168.8.8:/path/to/destination

这是静态 IP 地址的情况。但在其他情况下,有多个系统使用 DHCP 连接。

我试过了:

rsync -az -e ssh /path/to/source 192.168.8.*:/path/to/destination

但它显示错误

ssh: could not resolve the hostname 192.168.8.*: Name or service not known

答案1

通配符和简单的正则表达式(例如ls /usr/bin/x[bc]*)仅适用于本地文件系统。

通配符无法知道您要将文件夹复制到哪个远程主机。您需要一个循环来实现这一点:

for i in $(seq 8 18); do; \
   rsync -az -e ssh /path/to/source 192.168.8.$i:/path/to/destination; \
done

这会将 复制source到从 192.168.8.8 到 192.168.8.18 的所有主机。

答案2

rsync一次只能复制到一个目的地,就像ssh每次调用只能连接到一个目的地。

不过,你可能想看看这个包密码(用于并行 SSH),它还提供并行 rsync:

- Parallel rsync (parallel-rsync, upstream calls it prsync), efficiently
  copies files to multiple hosts in parallel

相关内容