通过 sftp 推送文件

通过 sftp 推送文件

客户希望我们每天使用 SFTP(基于 SSH 的 FTP)向他们推送数据文件。我们是一家 100% 的 Microsoft 公司,员工中没有 Linux 管理员。我正在寻找有关如何实现此目标的建议。我见过不同的应用程序通过 SFTP 自动发送文件,但我不知道它们是否是一种好方法。

您发现在 Microsoft 环境中处理此问题最简单的方法是什么?

答案1

我建议选择 PSFTP 作为将这些数据传输到远程目的地的客户端。 http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

他们的产品非常可靠,并且由于其 SSH 客户端 PUTTY 的成功而变得非常受欢迎。

答案2

您只需要一个 SFTP 客户端以及一种编写脚本和安排时间的方法。

  1. WinSCP 是客户端软件中很常见的一款。它可以编写脚本,因此...
  2. 您将希望使用任何您熟悉的并且最好是已经使用过的东西 - batch、powershell、VBScript、KiXtart 等等。
  3. 您可以使用计划任务中的构建来安排它。

这是最简单的方法,使用所有本机工具,并且仅使用一个第三方组件。棘手的部分是:

  1. 脚本的逻辑。您将如何处理错误?各种错误 - 您失去了互联网,因此他们那边瘫痪了。您从中提取的文件服务器配置错误,您无法在发送文件后删除它。实际上,这是另一个问题 - 您是否在发送后删除它们?您是在提供管道还是存档副本?
  2. 您将如何处理多个作业同时运行的可能性 - 例如,凌晨 1 点的作业耗时太长,因此在凌晨 2 点开始时它仍在运行。您可以使用调度程序的内置功能处理其中一些问题,例如终止耗时过长的任务。
  3. 这需要高可用性吗?如果您的服务器出现故障,您是否需要另一台服务器来接替它?

您可以让您的脚本循环运行并将其安装为服务,这样您就不必担心多个作业尝试获取相同的文件。

答案3

在过去的两年里,我一直在使用这个开源/免费的 .Net 组件将文件传送到 SFTP,没有任何问题。

如果您引用程序集文件(Tamir.SharpSSH.dll + 2),只需几行代码即可执行 SFTP。

            Sftp sftpClient = new Sftp(host, userName, password);
            sftpClient.Connect();

            sftpClient.Put(filePath, @"filename.txt");
            sftpClient.Close();

您可以开发一个 Windows 应用程序或 Windows 服务来交付燃料

在此处下载程序集:

http://www.tamirgal.com/blog/page/SharpSSH.aspx

描述: SharpSSH 是 SSH2 客户端协议套件的纯 .NET 实现。它提供了与 SSH 服务器通信的 API,可以集成到任何 .NET 应用程序中。该库是一个JCraft Inc. 的 JSch 项目的 C# 端口并根据 BSD 风格许可发布。

SharpSSH 允许您使用类似于 JSch 的 API 通过 SSH 通道读取/写入数据和传输文件。此外,它还提供了一些额外的包装器类,为 SSH 通信提供了更简单的抽象。

答案4

如果你正在寻找一个可编写脚本和自动化的 SFTP 客户端,它不仅可以在 Windows 上运行,而且设计时充分考虑了 Windows(它不模仿 Linux 风格的 shell 脚本,但它使用高级面向对象语言,例如 JavaScript)你可能想看看Syncplify.me FTP 脚本

相关内容