我正在寻找 Node.js 的模块 - 最好通过 npm 获得,它可以与 FTP 服务器同步文件。ftp 模块具有所有基本功能,但在其上编写一个完整的同步系统似乎需要大量工作。
3 回答
我通过搜索 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/ )。
看看node-ftpsync和grunt-ftpsync
它利用 Sergi 的jsftp库将文件智能同步到远程服务器。
注意:目前,推送支持所需的一切都已实现,除了基于时间戳的更新比较。目前更新仅通过比较文件大小来确定。
node-ftpsync提供 CLI 支持和编程 API。首选的解决方案是全局安装它并在包含 config.json 的目录中运行它。或者,它也被实现为一个可以在代码中轻松配置、扩展和启动的库。
grunt-ftpsync的工作方式相同,除了配置和运行应用程序是通过 grunt 完成的。它甚至可以输出精美的彩色日志。
免责声明:我是 node-ftpsync 和 grunt-ftpsync 的作者