我在另一台机器(linux)上有一大堆文件,我通常通过 ssh 访问(当然,如果我想传输,也可以使用 scp)。我自己的机器(mac os x)上也有很多matlab脚本,据我所知,这些脚本不能轻易地在另一台机器上运行。
理想情况下,我想做的是从我的机器上运行脚本,但在另一台机器上的数据上运行。是否可以通过 ssh 或类似的东西来做这种事情?还是我最好只是将(非常大的)一堆文件scp-ing到我自己的机器上,然后从那里进行分析。
提前干杯,亚当
我在另一台机器(linux)上有一大堆文件,我通常通过 ssh 访问(当然,如果我想传输,也可以使用 scp)。我自己的机器(mac os x)上也有很多matlab脚本,据我所知,这些脚本不能轻易地在另一台机器上运行。
理想情况下,我想做的是从我的机器上运行脚本,但在另一台机器上的数据上运行。是否可以通过 ssh 或类似的东西来做这种事情?还是我最好只是将(非常大的)一堆文件scp-ing到我自己的机器上,然后从那里进行分析。
提前干杯,亚当
也许是扩展评论而不是答案:
当您的 Matlab 代码运行所需的数据时,它必须与代码位于同一 RAM 中。无论何时存储持久存储数据的文件,这都是正确的。基本上有三种选择:
将您的 Matlab 代码复制到存储数据的机器上,并在远程机器的 RAM 中运行分析。这可能会最小化传输的数据量(将 Matlab 程序复制到远程机器),但您可能必须将结果拉回本地机器。您的问题表明您可能无法在远程机器上运行 Matlab,因此这可能不是您的选择。
在每个程序运行时,将数据一次一个文件从远程计算机复制到本地计算机。这将导致相对较多、相对较小的数据传输。
一次将数据从远程机器复制到本地机器,然后在本地运行所有程序。
您可能会看到我在做什么:为了最小化总执行时间,您应该使用选项 3 而不是选项 2 最小化数据传输时间(即延迟(每个文件时间)和带宽(每个字节时间))。所以是的,我认为你最好的选择是 scp 整个一堆文件从远程到本地。
我在这里看到两种可能性:
在执行之前,使用 rsync 将数据拉取到本地计算机。
使用 sshfs 在本地挂载远程数据,让数据传输隐式发生。
根据您优化的标准(本地磁盘使用情况、传输的数据量、延迟/吞吐量、手动步骤的数量……),您可能希望选择其中一个。