Mac OS X 仅通过 FTP 上传零字节文件

Mac OS X 仅通过 FTP 上传零字节文件

我正在使用 Mac OS X Lion,我在使用 FTP 时也遇到了这个问题(请注意,任何 FTP 客户端都是如此。我尝试过 Transmit、FileZilla、Cyber​​duck 和终端,但结果都一样)

我可以在 FTP 客户端中浏览文件,但当我上传文件时,客户端会挂起几秒钟,然后认为文件上传成功,但它只会创建一个包含一个空白行的新文件。有时,它只能上传 4-5 行。

然后它返回:

226 - 从数据连接读取时出错
226 传输已中止

但 2xx 是成功消息。这不是服务器问题,因为任何 Windows 机器都可以使用同一网络正常上传。有人能找出问题所在吗?它使我的 Mac 无法用于 Web 开发。

SFTP 和带有 SSL/TLS 的 FTP 仍然存在该问题。

答案1

当您拿起路由器并直接通过 PPPoE 连接时,问题就消失。

乍一看,问题出在路由器上。但事实并非如此,问题出在通过路由器连接的 Mac 上,该路由器通过 PPPoE 连接并尝试使用 FTP 上传。我知道,这很具体。

问题在于 MTU(最大传输单元)。显然,Mac OS X 将文件拆分成太大的块,路由器无法发送,因为路由器的 MTU 设置得比 Mac OS X 的低。

这里的路由器是 1492,还可以,但 Mac 的 MTU 是 1500,这是不可接受的。真的不明白为什么它可以直接与 PPPoE 配合使用。

如果您遇到同样的问题,请按照以下方法诊断和修复:

在终端中,运行以下命令查看 en0(或 en1,我的是 en0)的 MTU 是多少:

ifconfig | grep mtu

如果是 1500,则运行

sudo ifconfig en0 mtu 1300

这应该可以解决问题。

如果是,可能只能等到下次重启。您也可以在系统偏好设置 \ 网络 \ 以太网 -> 高级 \ 硬件中更改 MTU


稍后编辑:

一行修复(如果您想将其用作 Alfred 扩展或在启动时运行它,请替换为您的 sudo 密码):

echo <password> | sudo -S ifconfig en0 mtu 1300;

相关内容