我需要在 ruby 中本地缓存一个 ftp 文件夹。现在我正在使用 ftp_sync下载ftp文件夹但是速度很慢,你们知道有什么库可以并行下载文件夹文件吗? 谢谢!
最佳答案
syncftp gem 可以帮助您:
http://rubydoc.info/gems/syncftp/0.0.3/frames
Ruby 有一个不错的内置 FTP 库,以防你想自己动手:
http://www.ruby-doc.org/stdlib-1.9.3/libdoc/net/ftp/rdoc/Net/FTP.html
要并行下载文件,可以使用带超时的多线程:
并行框架 Celluloid 是完成并行工作的好方法:
https://github.com/celluloid/celluloid
总而言之,如果下载速度受限于您的整体网络带宽,那么这些方法都无济于事。
在这种情况下,要加快传输速度,请确保您只下载更改的信息:新文件和现有文件的更改部分。
分段下载在某些情况下可以提供巨大的加速,例如下载的大日志文件,其中只有一小部分文件发生了变化,并且变化都在文件末尾,并且都是附加的。
您还可以考虑对命令行进行 shell 处理。有许多工具可以帮助您解决这个问题。一个很好的通用工具是“curl”,它也支持 FTP 文件的简单范围,例如,您可以像这样使用 FTP 获取文档的前 100 个字节:
curl -r 0-99 ftp://www.get.this/README
您是否对 FTP 以外的其他协议(protocol)开放?看看“rsync”命令,它非常适合下载同步。 rsync 命令有许多优化以仅传输更改的数据。例如 rsync 可以像这样将远程目录同步到本地目录:
rsync -auvC me@my.com:/remote/foo/ /local/foo/
关于ruby-on-rails - 如何在 Ruby 中并行递归下载 FTP 文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13318549/