用于节点的FTP模块.js可以同步文件

FTP module for Node.js that can sync files?

本文关键字:同步 文件 js 模块 节点 FTP 用于      更新时间:2023-09-26

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

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

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

如果您需要有关实现同步的更多帮助,请随时与我联系。

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

只是通过使用一些好的ftp库来编写我自己的(简单的)同步库。就我个人而言,我认为jsftp是最有吸引力的(http://sergi.github.com/jsftp/)。只需将jsftp与一些文件系统行走相结合 - 特别是如果您对简单的单向同步感到满意,这应该不是不可能做到的。

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

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

或者,问问自己是否真的需要与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的作者