我有兴趣安排通过 Internet 从一台服务器向另一台服务器复制和发送大文件。服务器不在同一网络上。
我不知道我解决这个问题的所有可用选项,但我隐约熟悉的几个协议/规范可能对这个任务有用,它们是 (1) FTP 和 (2) bittorrent。
我之前使用 Filezilla 在服务器组之间手动发送大文件。那个特定的 FTP 应用程序没有调度功能,因此它不足以满足我的调度要求。理想情况下,我想使用更具编程性(非基于 GUI)而非专有(如付费应用程序)的东西来完成此任务。
我已经在使用按计划运行的 Python 脚本,这些脚本在一组服务器上执行其他操作。服务器运行 Windows,脚本通过Windows 任务计划程序自动执行。如果我可以使用 Python 通过 FTP 发送文件,那对我来说特别理想,因为我可以将 FTP 代码放入我已经开始工作和安排的工作中。然而,我曾短暂地尝试过使用 Python 的“ftplib”,但对它一无所知。所以,在我尝试走那条路之前,我想先在这里发帖。
我不确定是否应该采用基于 FTP 的方法,因此我想就此提出一些建议。此外,我并不真正关心我使用什么编程语言来完成这项任务,尽管我更喜欢 Python,因为它似乎是一个自然的选择,因为我正在处理服务器端脚本。我也想就此提出建议。
由于这是我的第一篇 serverfault 帖子,您可能会认为我对上面提到的许多主题几乎一无所知。提前致谢。
我首先要说的是你会想要避免使用 FTP 和 Bit Torrent。Bit Torrent 是一项伟大的技术,当许多人拥有您想要的文件并且可以在所有人之间分发下载(例如,快速下载 linux ISO)。我不建议将它用于简单的站点 A 到站点 B 的传输。
FTP 在很大程度上被认为是过时的,因为它不安全。所有信息均以纯文本形式传输,很容易被可能正在监听您流量的恶意方拦截。您将希望通过安全通道完成此传输。
为此,您有几个选项来加密您的传输。
我会推荐以下内容
这可能是我推荐的最简单的方法。您的另一种选择是与远程计算机建立一个 VPN,并简单地编写一个单行脚本,将文件从您的本地服务器复制到远程服务器。
欢迎来到顺丰。
只需使用任何可编写脚本的 Windows FTP(或更好的 FTPS 或 SFTP)客户端。
例如,正如已经接受的答案所暗示的那样,WinSCP支持脚本和 FTP/FTPS/SFTP。
请参阅自动将文件传输到 FTP 服务器。
使用 WinSCP 上传文件的简单批处理文件如下所示:
您可以让WinSCP GUI为您生成批处理文件。
对于日程安排,只需使用 Windows Scheduler。
有关详细信息,请参阅计划文件传输到 FTP 服务器。
(我是 WinSCP 的作者)
对于基于 Windows 的解决方案,我建议查看 TeraCopy ( http://codesector.com/teracopy/ )。它的工作速度明显快于 Windows 复制,支持暂停/恢复,并在连接断开时重试。
有可用的命令行参数,因此您可以通过批处理文件或 Powershell 编写传输脚本,然后通过 Windows 任务计划程序进行安排。
我也不推荐FTP。它对防火墙不友好,恢复上传可能需要在 FTP 服务器端进行特殊配置。