正在寻找一个将 SFTP 同步到本地的应用程序

正在寻找一个将 SFTP 同步到本地的应用程序

Windows/Azure

我正在寻找一个应用程序(或其他解决方案),可以在外部 SFTP 站点和本地存储在之间动态执行双向同步。

具体来说,(以面向服务器的方式思考),有一个导入文件夹和一个导出文件夹。

因此,如果服务器端对导出文件夹中的文件进行了更改(包括新建/删除),则客户端也会反映该更改(在某个间隔内)。

类似地,如果客户端对导入文件夹中的文件进行了更改,则服务器端也会反映该更改。

我猜想这个应用可能需要同时存在于客户端和服务器上。也许它是一种特殊类型的 SFTP 服务器。

具体用例是针对每日存档的以时间戳命名的文件(复制到以时间戳命名的存档子文件夹,然后从主文件夹中删除)。

对云解决方案特别感兴趣,例如 Azure。

我发现许多传统的 DC SFTP 服务器仍然存在,而且提供商没有提供太多灵活性(例如,他们使用特定的 SFTP 产品并且不会改变)。因此,最理想的是与现有的旧式 SFTP 服务器共存的应用程序/解决方案。

答案1

Ftp Voyager 将执行此操作。(假设是 Windows,你没有说) https://thwack.solarwinds.com/resources/b/geek-speak/posts/ftp-voyager-debuts-as-solarwinds-free-tool

它将作为一项服务进行安装,并有一个调度程序来为站点创建连接配置文件,然后安排它们在时间/间隔内拉下数据。

如果你熟悉 ftp 命令,那么编写 SFTP 本机客户端脚本并不难,甚至 PSFTP(putty 项目的一部分),语法非常相似。https://www.puttygen.com/psftp

具体来说,使用开关 -B,你可以像在终端一样处理要执行的命令脚本,然后将其作为任务计划程序中的任务

-B – It specifies a file with batch commands. The ‘-b’ command helps user automate tasks by allowing them to set commands in advance.

无论哪种情况,以这种方式同步 SFTP 都不需要服务器端知道您正在自动化它,更不用说安装任何东西了,它只是通过代码执行用户相同的操作。 https://the.earth.li/~sgtatham/putty/0.52/htmldoc/Chapter6.html

使用 psftp 的示例:创建一个名为 dlall.txt 的简单文本文件

假设有一个名为 iQ 的队列文件夹,另一侧有一个名为 out 的目录,以下脚本...

lcd-将本地目录更改为 iQ

cd out-更改到远端的 out 目录

mget * - 获取多个文件,下载其中的内容。

退出 - 退出

lcd .\iQ
cd out
mget *
quit

然后像这样将其传递给 PSFTP

psftp user@host -P [port number] -b dlall.txt

现在这假设您知道如何进行身份验证,两者都将在命令行上接受凭据,或者您可以设置公钥身份验证。我不建议使用密码,因为要自动化它,您必须将密码以纯文本形式存储在某处。FtpVoyager 将存储密码,但至少会加密它们。不过,两者都将使用公钥,更安全。

还要注意的是,如果你想确保双方实际上相等,你使用了“同步”这个词,这比较难,而且可能会让你回到 FTPVoyager

https://support.solarwinds.com/SuccessCenter/s/article/How-Can-FTP-Voyager-Automatically-Synchronize-Folders-on-2-Different-Sites?language=en_US

或者,如果服务器支持,可以研究通过 ssh 进行 rsync 。

相关内容