我有一堆服务器,可以为各种不同的系统构建各种不同的程序。
构建完成后,它会被归档为单个文件并压缩,然后md5sum
创建该文件。一台服务器可能会构建多个不同的版本,从而产生多个存档文件和 archive.md5 文件。
最后,在其他各个服务器上运行一个脚本,检查md5sum
每个文件的 s,将它们与本地的md5sum
s 进行比较,如果它们不同,则下载并解压更新的版本。
当前,md5sum
检查是按照对每个构建的 md5 进行比较的方式进行的。scp [email protected] /path/to/builds/*.md5 .
脚本运行时间的 99% 是scp
(即使只需要几秒钟)。我希望尽可能优化数据传输。请求来自列入白名单的服务器(如果解决方案有自己的端口,则可以是白名单),数据本身毫无意义,因此我无需担心身份验证或加密。我相信scp
我的前任在服务器、版本和构建都少得多的时候为了方便才这么做的。
我拥有所有服务器的完全 root 访问权限,因此我可以做任何我想做的事情。从远程服务器获取数据的最快方法是什么.md5
?它可能是文件本身,也可能是文件的内容(例如来自cat /path/to/builds/*.md5
)。
谢谢!
答案1
我想到以下选择:
- 通过 NFS 或 SMB(Samba)导出包含 MD5 文件的目录,并将其挂载到要进行比较的机器上
- 运行一个小型 Web 服务器,例如 lighttpd,通过 HTTP 提供文件服务
- 弄清楚如何让 SCP 更快——除非你遇到 DNS 问题,或者由于某种原因身份验证速度很慢,否则它不应该花费“几秒钟”的时间
这些假设您是在本地网络上而不是通过互联网执行此操作,否则即使文件“毫无意义”,也需要额外的安全考虑。