服务器之间的预定文件传输

服务器之间的预定文件传输

我对安排通过互联网将大型文件从一台服务器复制并发送到另一台服务器感兴趣。这些服务器不在同一网络上。

我不知道解决这个问题的所有可用选项,但我熟悉的几个可能对这个任务有用的协议/规范是(1)FTP 和(2)bittorrent。

我以前使用 Filezilla 在服务器组之间手动发送大型文件。该特定 FTP 应用程序没有调度功能,因此无法满足我的调度要求。理想情况下,我希望使用更具编程性(非基于 GUI)而不是专有(如付费应用程序)的东西来完成此任务。

我已经在使用按计划运行的 Python 脚本,这些脚本在一组服务器上执行其他操作。服务器运行的是 Windows脚本通过以下方式自动执行:Windows 任务计划程序如果我可以使用 Python 通过 FTP 发送文件,那对我来说就太理想了,因为我可以将 FTP 代码放入我已经运行并安排好的程序中。但是,我曾短暂尝试过使用 Python 的“ftplib”,但一无所知。所以,在我尝试走这条路之前,我想先在这里发帖。

我不确定是否应该采用基于 FTP 的方法,因此我希望得到一些建议。此外,我并不真正关心使用哪种编程语言来完成这项任务,尽管我更喜欢 Python,因为它似乎是自然而然的选择,因为我正在处理服务器端脚本。我也希望得到一些建议。

由于这是我的第一篇关于 serverfault 的帖子,您可能可以想象我对上面提到的许多主题几乎一无所知。提前致谢。

答案1

首先我想说的是,你应该避免使用 FTP 和 Bit Torrent。当许多人拥有你想要的文件并且可以在所有人之间分发下载时(例如快速下载 Linux ISO),Bit Torrent 是一项很棒的技术。我不建议将它用于简单的从站点 A 到站点 B 的传输。

FTP 在很大程度上被视为过时的,因为它不安全。所有信息都以纯文本形式传输,很容易被可能正在监听您的流量的恶意方拦截。您需要通过安全通道完成此传输。

为此,您有几种选择来加密您的传输。

  • SSH 隧道(scp/sftp)
  • VPN

我建议以下

  • 下载并安装温SCP在两个节点上
  • 查看脚本文档并编写一个脚本来安全地将文件从 A 点复制到 B 点。您会注意到,该脚本也可以使用 Windows Scheduler 轻松地进行安排。

这可能是我推荐的最简单的方法。另一个选择是与远程机器建立 VPN,然后只需编写一行脚本即可将文件从本地服务器复制到远程服务器。

欢迎来到 SF。

答案2

只需使用任何可编写脚本的 Windows FTP(或更好的 FTPS 或 SFTP)客户端。

例如,正如已接受的答案所暗示的那样,温SCP支持脚本和 FTP/FTPS/SFTP。

自动将文件传输到 FTP 服务器

使用 WinSCP 上传文件的简单批处理文件如下所示:

winscp.com /log=c:\path\ftp.log /command ^
    "open ftp://user:[email protected]/" ^
    "put c:\local\path\* /remote/path/" ^
    "exit"

您可以拥有WinSCP GUI 生成的批处理文件为你。


对于调度,只需使用 Windows Scheduler。
有关详细信息,请参阅安排文件传输到 FTP 服务器

(我是 WinSCP 的作者)

答案3

对于基于 Windows 的解决方案,我建议研究 TeraCopy(http://codesector.com/teracopy/)。它的运行速度明显快于 Windows 复制,支持暂停/恢复以及连接断开时的重试。

有可用的命令行参数,因此您可以通过批处理文件或 Powershell 编写传输脚本,然后通过 Windows 任务计划程序进行安排。

我也不推荐使用 FTP。它对防火墙不友好,恢复上传可能需要在 FTP 服务器端进行特殊配置。

相关内容