可以同步文件的Node.js的FTP模块?

时间:2012-06-20 07:38:06

标签: javascript node.js ftp npm

我正在为Node.js寻找一个模块 - 最好通过npm提供,它可以与FTP服务器同步文件。 ftp模块具有所有基本功能,但在它上面编写一个完整的同步系统似乎很多工作。

3 个答案:

答案 0 :(得分:7)

我是jsftp的作者。只需遍历您要上传的目录,就可以轻松实现同步。 Jsftp可以处理并行被动请求(在内部它们仍然是顺序的,但您不必担心它),因此您可以使用顺序ftp.put调用,它应该可以在您没有太多脚本工作的情况下工作。< / p>

节点中更好,更惯用的方法是使用尚未记录的ftp.getPutSocket方法,它允许您获取原始PASV套接字并将其推入其中(例如,使用流) )。对于这种情况的特定示例,您可以查看vfs-ftp如何做到这一点。

如果您需要更多帮助来实施同步,请随时与我联系。

答案 1 :(得分:2)

我通过搜索npm,github和网络进行了一些研究,并且无法找到任何好看的同步解决方案。

我只是从使用一些好的ftp库编写自己的(简单)同步库开始。我个人觉得jsftp最吸引人(http://sergi.github.com/jsftp/)。只需将jsftp与一些文件系统行走结合起来 - 特别是如果您对简单的单向同步很好,这应该是不可能的。

实现的一些想法(从本地文件系统到ftp的单向同步):

  • 打开与ftp服务器的连接
  • 使用fs.readdir
  • 遍历本地文件系统
  • 从相应的ftp文件获取统计信息,如果本地版本较新则上传(Ftp.lsFtp.put,如果使用jsftp

或者,问问自己,你真的需要与node.js进行同步吗?例如,如果您可以在系统中运行Python脚本,则只需使用ftpsync2d,这是一个支持ftp(http://code.google.com/p/ftpsync2d/)的双向同步工具。

答案 2 :(得分:2)

查看node-ftpsyncgrunt-ftpsync

它利用Sergi的jsftp库将文件智能同步到远程服务器。

注意:目前,除了基于时间戳的更新比较之外,还实现了推送支持所需的一切。目前,只通过比较文件大小来确定更新。

node-ftpsync 提供CLI支持和编程API。首选解决方案是全局安装它并在包含config.json的目录中运行它。或者,它也可以作为lib实现,可以在代码中轻松配置,扩展和启动。

grunt-ftpsync 以相同的方式工作,除了配置和运行应用程序是通过grunt完成的。它甚至可以输出花哨的彩色日志。

免责声明:我是node-ftpsync和grunt-ftpsync的作者

相关问题