Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 从许多机器收集文件?_Linux_File_Networking_Rsync_Nfs - Fatal编程技术网

Linux 从许多机器收集文件?

Linux 从许多机器收集文件?,linux,file,networking,rsync,nfs,Linux,File,Networking,Rsync,Nfs,我有许多机器(20+连接在网络中)。每台计算机访问一个中央数据库,查询它,处理查询的信息,然后将结果写入其本地硬盘上的文件 在处理之后,我希望能够“抓取”所有这些文件(从所有远程机器)回到主机进行存储 我想到了三种可能的方法: (1) 从主机rsync到每个远程机器,并“请求”文件 (2) 从每个远程机器到主机的rsync,并“发送”文件 (3) 在每个远程计算机上创建NFS共享,主机可以访问和读取这些文件(在这种情况下不需要“rsync”) 其中一种方法比其他方法更好吗?有没有我不知道的更好的

我有许多机器(20+连接在网络中)。每台计算机访问一个中央数据库,查询它,处理查询的信息,然后将结果写入其本地硬盘上的文件

在处理之后,我希望能够“抓取”所有这些文件(从所有远程机器)回到主机进行存储

我想到了三种可能的方法:

(1) 从主机rsync到每个远程机器,并“请求”文件

(2) 从每个远程机器到主机的rsync,并“发送”文件

(3) 在每个远程计算机上创建NFS共享,主机可以访问和读取这些文件(在这种情况下不需要“rsync”)

其中一种方法比其他方法更好吗?有没有我不知道的更好的方法


所有机器都使用Ubuntu10.04LTS。提前感谢您的建议。

您可以在主计算机上创建一个NFS共享,并让每个远程计算机装载该共享。看起来工作量减少了。

从性能角度看,几乎是一样的。您仍然通过(相对)较慢的网络连接发送文件

现在,我要说的是,你采取哪种方法取决于你想在哪里处理错误或违规行为。如果你想让处理计算机承担责任,请使用rsync返回主计算机;或者反过来,如果你想让主要的一个来组装数据并确保一切都井然有序


至于共享空间方法,我将在主机上创建一个共享,并让其他人写入。它们可以在处理完成后立即启动,确保文件正确传输,然后验证校验和或其他任何内容。

我更喜欢选项(2),因为您知道处理在客户端计算机上何时完成。您可以在所有客户机上使用相同的SSH密钥,也可以在主机上的authorized_keys文件中收集不同的密钥。如果主机因某种原因不可用,则更可靠,您可以稍后在NFS设置中阻止客户端时同步结果。

谢谢Santiago。有什么方法可以进一步提高性能吗?我不是这方面的专家,但我要说的是,这实际上取决于计算量和要发回的结果文件的大小。如果每个文件都很大,您可能希望以这样一种方式处理工作机器的任务,即它们不会同时完成任务,然后通过网络努力获得结果,但除此之外,我不知道。谢谢。(2)是否比其他答案建议的简单安装更好?这取决于。与设置NFS相比,我更倾向于设置SSH密钥基础设施,但这也是一个品味问题。对于非常大的文件,与NFS相比,加密可能是一个CPU开销。我同意。问题是,由于主机的硬盘只能处理这么多的数据,所以整个过程不是很慢吗?(假设有20多台机器向其发送GBs的信息…)嗯,您没有指定文件的大小。处理是否必须同时进行?或者你可以错开它吗?大部分的处理是同时完成的。关于如何改进这个过程,您还有其他想法吗?好的,您可以一次处理所有这些想法,并将副本延迟n分钟,其中n是(副本长度)x(机器id),其中机器id是从0到m。谢谢Paul,非常感谢您的帮助