4

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

4

3 回答 3

7

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

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

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

于 2012-08-06T14:23:56.493 回答
2

我通过搜索 npm、github 和 web 进行了一些研究,但找不到任何好看的同步解决方案。

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

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

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

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

于 2012-06-20T12:18:06.990 回答
2

看看node-ftpsyncgrunt-ftpsync

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

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

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

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

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

于 2013-11-27T10:17:38.867 回答