Senior Geek Asked: 2023-12-21 13:25:03 +0800 CST2023-12-21 13:25:03 +0800 CST 2023-12-21 13:25:03 +0800 CST 如何配置多播以在批处理模式下与 rsync 一起使用 772 rsync 手册页显示“多播传输协议可用于同时将批量更新文件并行传输到许多主机,而不是单独向每个主机发送相同的数据。” 但我找不到任何有关如何做到这一点的信息。任何人都可以回复一个如何执行此操作的示例或提供该信息的 URL? rsync 1 个回答 Voted Best Answer A.B 2023-12-22T00:26:11+08:002023-12-22T00:26:11+08:00 rsync本身不支持多播,它只是建议将多播作为传输批处理(增量)文件的方法: 批处理模式 批处理模式可用于将同一组更新应用到许多相同的系统。假设有一棵树被复制到许多主机上。现在假设对此源树进行了一些更改,并且这些更改需要传播到其他主机。为了使用批处理模式执行此操作,rsync 使用 write-batch 选项运行,将对源树所做的更改应用到目标树之一。write-batch 选项使 rsync 客户端将针对其他相同目标树重复此操作所需的所有信息存储在“批处理文件”中。 生成一次批处理文件可以避免在更新多个目标树时多次执行文件状态、校验和和数据块生成。多播传输协议可用于同时将批量更新文件并行传输到许多主机,而不是单独将相同的数据发送到每个主机。 使用多播的一种方法是使用带有实验性多播选项的 TFTP。 在 Linux 上,支持多播选项的此类工具之一是atftp(客户端)/ atftpd(服务器)。 例如,在 IP 地址为 192.0.2.2 的主机上手动启动服务器,如下所示: /usr/sbin/atftpd --daemon --no-fork --port 69 --tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.255.0.0-255 --mcast-ttl 1 --maxthread 100 /srv/tftp 将允许它使用多播来提供文件/srv/tftp。 命令可以包含通过 TFTP 服务器提供批处理的rsync选项,然后多个客户端可以使用多播同时下载文件(如):--only-write-batch=/srv/tftp/foofoo/srv/tftp/foo atftp --option multicast --get --remote-file foo 192.0.2.2 如果满足条件,服务器将一次性将文件发送给多个多播对等体。rsync然后可以使用该选项将下载的文件应用到客户端系统上--read-batch=foo(或者如果仍然适用,则复制并使用foo.sh沿 创建的脚本foo,如BATCH MODE中所述。) 注意:systemd的默认 Linux 设置可能会阻止多播工作。systemd 套接字必须仅侦听 IPv4 0.0.0.0:69,而不是侦听双栈 IPv6 端口 69,这就是为什么我提供了一个手动启动它的示例(可能应该在前面加上systemctl stop atftpd.service atftpd.socket)。atftpd不支持 IPv6 组播。
rsync
本身不支持多播,它只是建议将多播作为传输批处理(增量)文件的方法:使用多播的一种方法是使用带有实验性多播选项的 TFTP。
在 Linux 上,支持多播选项的此类工具之一是
atftp
(客户端)/atftpd
(服务器)。例如,在 IP 地址为 192.0.2.2 的主机上手动启动服务器,如下所示:
将允许它使用多播来提供文件
/srv/tftp
。命令可以包含通过 TFTP 服务器提供批处理的
rsync
选项,然后多个客户端可以使用多播同时下载文件(如):--only-write-batch=/srv/tftp/foo
foo
/srv/tftp/foo
如果满足条件,服务器将一次性将文件发送给多个多播对等体。
rsync
然后可以使用该选项将下载的文件应用到客户端系统上--read-batch=foo
(或者如果仍然适用,则复制并使用foo.sh
沿 创建的脚本foo
,如BATCH MODE中所述。)注意:systemd的默认 Linux 设置可能会阻止多播工作。systemd 套接字必须仅侦听 IPv4 0.0.0.0:69,而不是侦听双栈 IPv6 端口 69,这就是为什么我提供了一个手动启动它的示例(可能应该在前面加上
systemctl stop atftpd.service atftpd.socket
)。atftpd
不支持 IPv6 组播。