我需要一个脚本解决方案,通过 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.bat
ithaka.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 支持。
所以:
- WINSCP 有什么问题吗
- 是否有支持 Windows 的 FTP 脚本解决方案?我研究了几种替代方案,但它们都有我不想要的图形用户界面。
答案1
WinSCP 脚本本身不支持并行传输。
但是您可以并行运行多个 WinSCP 脚本。
您只需将文件/目录集分成几批。
实际上有一个现成的基于的 PowerShell 脚本WinSCP .NET 程序集这样做。
您可以像这样运行脚本(例如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
)。
或者从命令行执行,如果将其合并为一行并^
删除所有内容。