清除目录并通过批处理文件上传文件时遇到问题

清除目录并通过批处理文件上传文件时遇到问题

我在 Windows 2012R2 Standard 服务器上运行 Filezilla-Server。我正尝试通过 FTP 连接另一台 Windows 2012R2 Standard 服务器并从该服务器发送文件。

我正在运行这个批处理文件:

@echo off
cls
echo open xxx.xxx.xxx.xxx> ftpcmd.dat
echo user xxxxxxxxx>> ftpcmd.dat
echo xxxxxxxx>> ftpcmd.dat
echo bin>> ftpcmd.dat
echo lcd %1>> ftpcmd.dat
echo lcd %1zip>> ftpcmd.dat
echo pwd>> ftpcmd.dat
echo mdelete *>> ftpcmd.dat
echo mkdir %1>> ftpcmd.dat
echo cd %1>> ftpcmd.dat
echo mput *.*>> ftpcmd.dat
echo quit>> ftpcmd.dat
@echo on
ftp -i -n -s:ftpcmd.dat 

这是我运行的结果:

C:\backup>ftp -i -n -s:ftpcmd.dat
ftp> open xxx.xxx.xxx.xxx
Connected to xxx.xxx.xxx.xxx.
220-FileZilla Server version 0.9.44 beta
220-written by Tim Kosse ([email protected])
220 Please visit http://sourceforge.net/projects/filezilla/
ftp> user xxxxxxxxx
331 Password required for xxxxxxxxx

230 Logged on
ftp> bin
200 Type set to I
ftp> lcd ppsvm
Local directory now C:\backup\ppsvm.
ftp> lcd ppsvmzip
Local directory now C:\backup\ppsvm\ppsvmzip.
ftp> pwd
257 "/" is current directory.
ftp> mdelete *
_   <-- it just sticks here and goes nowhere

从上面的 ^ 可以看出,它停在 mdelete 处,并且不执行任何其他操作。

我检查了 Filezilla-Server 日志,其中显示以下内容:

8:28:21 AM - (not logged in)> Connected, sending welcome message...
8:28:21 AM - (not logged in)> 220-FileZilla Server version 0.9.44 beta
8:28:21 AM - (not logged in)> 220-written by Tim Kosse ([email protected])
8:28:21 AM - (not logged in)> 220 Please visit http://sourceforge.net/projects/filezilla/
8:28:21 AM - (not logged in)> USER xxxxxxxxxxxxx
8:28:21 AM - (not logged in)> 331 Password required for xxxxxxxxxxxxx
8:28:21 AM - (not logged in)> PASS ****************
8:28:21 AM - xxxxxxxxxxxxx> 230 Logged on
8:28:21 AM - xxxxxxxxxxxxx> TYPE I
8:28:21 AM - xxxxxxxxxxxxx> 200 Type set to I
8:28:21 AM - xxxxxxxxxxxxx> XPWD
8:28:21 AM - xxxxxxxxxxxxx> 257 "/" is current directory.
8:28:21 AM - xxxxxxxxxxxxx> TYPE A
8:28:21 AM - xxxxxxxxxxxxx> 200 Type set to A
8:28:21 AM - xxxxxxxxxxxxx> PORT xxx,xxx,xxx,xxxx,xxxx,xxxx
8:28:21 AM - xxxxxxxxxxxxx> 200 Port command successful
8:28:21 AM - xxxxxxxxxxxxx> NLST *
8:28:21 AM - xxxxxxxxxxxxx> 150 Opening data channel for directory listing of "/*"
8:28:32 AM - xxxxxxxxxxxxx> 425 Can't open data connection for transfer of "/*"

我已将 Filezilla-Server 添加到我的防火墙设置中:

在此处输入图片描述

我甚至关闭了防火墙以验证它没有干扰,所以我不相信它是防火墙。

我不知道发生了什么事。有人有什么建议吗?

答案1

主动 FTP 是双向的(控制连接从客户端到服务器,数据连接从服务器到客户端),因此它需要允许服务器特定端口上的传入连接客户。

以下是一段引文FileZilla 维基(对 ftp 内部原理有很好的解释)

FTP 与大多数其他协议的区别在于它使用辅助连接进行文件传输。当您连接到 FTP 服务器时,实际上是在建立两个连接。首先,建立所谓的控制连接,通过该连接传输 FTP 命令及其响应。然后,为了传输文件或目录列表,客户端通过控制连接发送特定命令以建立数据连接。

(...)

在主动模式下,客户端在本地机器上打开一个套接字,并使用 PORT 命令将其地址告知服务器。一旦客户端发出传输文件或列表的命令,服务器就会连接到客户端提供的地址。

您还可以在 wiki 中找到有关客户端和服务器防火墙配置的信息。

相关内容