我很好奇,是否有办法通过广播地址(例如 IPv4 地址)将文件发送到多个终端主机?
例如可以scp
执行文件广播到多个主机
scp myFile.txt [email protected]:/home/hostname
在两个或更多主机上进行即时操作的一个明显方法scp
是使用&&
运算符,但是当主机数量超过 20 时会发生什么?
答案1
是的,可以。Jakuje 说得对,在 TCP 中无法做到这一点,但他的回复并未涵盖 UDP,而 UDP 正是用于此目的。
我曾经用过一段时间这个 Java 程序这样做,但后来我发现克隆兹拉可以做到,
Clonezilla SE 支持多播,适合大规模克隆
这给了我动力去研究他们是如何做到的:Clonezilla 的作者们声明他们使用 UDPCast为此,这就是全部:UDPCast 的网页状态
UDPcast 是一种文件传输工具,可以同时向 LAN 上的多个目标发送数据。例如,它可用于一次性安装整个教室的 PC。与其他方法(nfs、ftp 等)相比,UDPcast 的优势在于它利用了 UDP 的多播功能:安装 15 台机器所花的时间不会比安装 2 台机器所花的时间长。
它位于我使用的发行版(Debian、Kubuntu、Arch Linux)的存储库中,因此我推测它几乎存在于所有存储库中。
答案2
不,它不是这样工作的。它scp
通过基于连接的协议 (TCP) 工作ssh
,因此它不能进行广播。它发送数据并接收确认,确认数据已被对方正确接收。
你可以通过对客户端进行重大修改来实现这一点,这将打开与更多服务器的连接并将数据发送到所有服务器,但这不是真实的播送。