Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.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/4/r/80.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
Ruby on rails 如何在Ruby中并行递归下载FTP文件夹?_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 如何在Ruby中并行递归下载FTP文件夹?

Ruby on rails 如何在Ruby中并行递归下载FTP文件夹?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我需要在ruby中本地缓存一个ftp文件夹。现在我用它来下载ftp文件夹,但是速度太慢了,你们知道有哪个库可以并行下载文件夹文件吗? 谢谢 syncftp gem可能会帮助您: Ruby有一个像样的内置FTP库,以备您自己使用: 要并行下载文件,可以使用多个超时线程: 完成并行工作的一个好方法是赛璐珞,即并发框架: 尽管如此,如果下载速度仅限于您的总体网络带宽,那么这些方法都不会有多大帮助 在这种情况下,要加快传输速度,请确保只下载更改的信息:新文件和现有文件的更改部分 分段下载在某些情

我需要在ruby中本地缓存一个ftp文件夹。现在我用它来下载ftp文件夹,但是速度太慢了,你们知道有哪个库可以并行下载文件夹文件吗?
谢谢

syncftp gem可能会帮助您:

Ruby有一个像样的内置FTP库,以备您自己使用:

要并行下载文件,可以使用多个超时线程:

完成并行工作的一个好方法是赛璐珞,即并发框架:

尽管如此,如果下载速度仅限于您的总体网络带宽,那么这些方法都不会有多大帮助

在这种情况下,要加快传输速度,请确保只下载更改的信息:新文件和现有文件的更改部分

分段下载在某些情况下会带来巨大的加速,例如下载的大日志文件中只有一小部分文件发生了更改,这些更改都在文件末尾,并且都是附件

<>你也可以考虑在命令行中脱壳。有许多工具可以帮助您实现这一点。一个很好的通用工具是“curl”,它也支持FTP文件的简单范围,例如,您可以使用FTP获得文档的前100个字节,如下所示:

curl -r 0-99 ftp://www.get.this/README
rsync -auvC me@my.com:/remote/foo/ /local/foo/ 
除了FTP,您还接受其他协议吗?看看“rsync”命令,它非常适合下载同步。rsync命令有许多优化,只传输更改的数据。例如,rsync可以将远程目录同步到本地目录,如下所示:

curl -r 0-99 ftp://www.get.this/README
rsync -auvC me@my.com:/remote/foo/ /local/foo/ 
看一看。它是一个围绕Curl的包装器,可以并行地进行多个连接

这是以下内容的修改版本:


这将同时引入Ruby和Python源代码(这两个源代码都非常大,因此它们将花费大约一分钟的时间,具体取决于您的internet连接和主机)。直到最后一个块写入文件时,您才会看到任何文件出现。

为什么必须用Ruby完成?有一些很好的、已经建立起来的工具,比如rsync,可以从Ruby内部调用。我最终不需要实现并行ftp下载,但最好使用rsync或Ruby内部的其他工具。