在 Windows 上编写并行 FTP 下载脚本(多个连接)

在 Windows 上编写并行 FTP 下载脚本(多个连接)

我需要一个脚本解决方案,通过 FTP 下载多个(超过 100 个)网站以进行备份。对于每个网站,我都需要一个脚本解决方案,该解决方案支持 10 个并行连接到一个网站。

  • 每个网站都有自己的 FTP 地址。
  • 将整个任务分成 10 个不同的批次是可以的,但仍然会有一个连接到 1 个服务器,这会导致下载速度非常慢。在服务器上创建 tar 不是一个选项,也不在这个问题范围内 :-)

我正在使用 Windows 8.1,64 位。

我尝试过 Windows FTP,但它仅支持与 1 台服务器建立 1 个并行连接。

此外,WinSCP 不支持多于 1 个 FTP 服务器命令行模式的并行连接。我尝试了几种方法,也许我在这里做错了什么???

download.bat> 此文件以管理员权限启动

md n:\backupftp\ithaka.im\public_html
winscp.exe /script="ithaka.txt"  

ithaka.txt

open ftp://xxx:[email protected]/domains/ithaka.im/public_html
lcd n:\backupftp\ithaka.im\public_html
get *

winscp.exe是可移植的可执行文件,与和winscp.com位于同一目录中download.batithaka.txt

因此,我看不到 GUI 界面。只能在任务管理器中看到一项任务。如果我打开日志记录,我每次只能看到与 1 个 FTP 服务器的 1 个连接。无法从 1 个 FTP 服务器并行下载。

如果我将 改为download.bat(请注意,我改为.exe.com

md n:\backupftp\ithaka.im\public_html
winscp.com /script="ithaka.txt"  

其结果将是:

modules                   |            0 B |    0,0 KB/s | binary |   0%
php                       |            0 B |    0,0 KB/s | binary |   0%
php.test                  |           4 KB |    6,9 KB/s | binary | 100%
php.module                |           7 KB |    6,6 KB/s | binary | 100%
php.install               |           1 KB |    1,8 KB/s | binary | 100%
php.info                  |          274 B |    1,3 KB/s | binary | 100%
block                     |            0 B |    1,3 KB/s | binary |   0%

等等等等......这些下载不是并行的并且不受 WinSCP 支持。

所以:

  1. WINSCP 有什么问题吗
  2. 是否有支持 Windows 的 FTP 脚本解决方案?我研究了几种替代方案,但它们都有我不想要的图形用户界面。

答案1

WinSCP 脚本本身不支持并行传输。

但是您可以并行运行多个 WinSCP 脚本。

您只需将文件/目录集分成几批。

实际上有一个现成的基于的 PowerShell 脚本WinSCP .NET 程序集这样做。

通过 SFTP/FTP 协议自动并行下载

您可以像这样运行脚本(例如parallel_download.ps1):

powershell.exe -File parallel_download.ps1 -sessionUrl ftp://xxx:[email protected]/ ^
    -remotePath /domains/ithaka.im/public_html/ ^
    -localPath n:\backupftp\ithaka.im\public_html\ ^
    -batches 3

上述命令可以直接在批处理文件中使用(.bat)。
或者从命令行执行,如果将其合并为一行并^删除所有内容。

相关内容