我有几个大文件需要尽快从一台 Linux 机器复制到大约 20 台其他 Linux 机器,所有机器都位于同一个 LAN 上。哪些工具/方法最适合复制这些文件,请注意这不是一次性复制。这些机器永远不会连接到互联网,而且安全性也不是问题。
更新:
我之所以问这个问题,是因为(据我所知)我们目前使用scp
串行方式将文件复制到每台机器,我被告知这“太慢了”,正在寻找更快的替代方案。据我所知,尝试并行化调用scp
只会因硬盘寻道而进一步减慢速度。
答案1
BitTorrent。这是 Twitter 在内部部署某些东西的方式。
http://engineering.twitter.com/2010/07/murder-fast-datacenter-code-deploys.html(网络档案链接)
答案2
怎么样通用FTP,它使用多播通过 UDP 一次向多个客户端传送文件。不是每个人都适用,我也不是这方面的专家,但听起来它能满足你的要求。
答案3
您是否尝试过使用 复制这些数据rsync
?如果您拥有 1 Gbit LAN 或更快的速度,则复制超过 4*20 GB 的数据应该不成问题。
复制的频率是多少?如果要花几分钟才能完成,这有关系吗?
答案4
设置 NFS 共享并让每台机器从这个共享存储库中提取大文件可能是最快的方法(NFS 非常快并且开销很小)。
您可以向源服务器添加一个或两个额外的 NIC,并将它们绑定在一起,以获得更好的吞吐量。
实现可以是每个目标服务器上的一个简单的 cron 作业,每小时/每天/任何时候盲目地从共享中获取文件。您还可以设置守护进程来轮询新文件;您还可以编写一个控制会话脚本,以通过 SSH(使用密钥对)进入每个目标框,并指示它们在您执行脚本时获取文件。