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
或者,如果服务器支持,可以研究通过 ssh 进行 rsync 。