我正在尝试使用以下命令从我的 Macbook(运行 Snow Leopard)上传 Flex 生成的 SWF 文件(500 kb)
scp main.swf server.com:/
我设置了密钥身份验证,以避免每次都输入用户名/密码。使用我家里的网络(下行 768kbps/上行 300+ kbps),这个过程通常需要两分钟。
有趣的是,当我在 Windows XP 机器上使用 WinSCP 时,该过程最多只需 30-40 秒。
我的 MacBook 和 Windows XP 机器使用相同的互联网连接。MacBook 通过电缆连接到路由器(应该更快吧?),而 Windows XP 通过 Wifi 连接。
如果您需要更多信息来诊断问题,请告诉我。
谢谢!
更新:
按照 xenny 的提示,发布关于这两个设置的附加信息。
OSX: Core 2 Duo 2.0 GHz 4GB RAM
Windows XP Pentium D 2.8 GHz 2GB RAM
以下是 WinSCP 设置:会话协议 = SSH-2 SSH 实现 = OpenSSH_4.7p1 Debian-8ubuntu1.2 加密算法 = aes 压缩 = 否 文件传输协议 = SFTP-3
我在 OSX 中尝试了 -c aes,但它显示了“未知密码类型”消息。
答案1
MacBook 使用比 PC 上的 WinSCP 计算成本更高、更复杂的密码,这导致了速度变慢。
如果 MacBook 目前受到 CPU 限制,那么通过压缩数据流增加负载可能会使情况变得更糟。
如果您使用 ssh -c 选择较便宜的密码,您的问题应该会得到解决。我建议首先查看 XP 计算机使用的密码,假设两台计算机的处理器性能相当。
答案2
您应该检查的主要内容是您可以预期它的速度有多快。如果您的互联网上传速度为 300Kbps,则 wifi 和路由器的有线连接都不应该成为瓶颈。使用一些简单的数学运算来验证或反驳这一点;如果它的大小为 1 兆字节,您应该预计它需要 3 秒(左右)。
如果不是本地配置问题,或者无法修复,您可以使用scp -C
压缩来加速大量传输。或者您可以使用同步,如果您一遍又一遍地上传同一个 swf 的新版本;如果它大部分是相同的,那么加速效果就会相当大。
答案3
您也可以尝试使用rsync
而不是scp
进行更新。这将允许在直接替换.swf
文件时仅传输新版本的更改数据。
建议的语法:rsync --compress --times --progress main.swf server.com:/path/to/final/directory/on/the/webserver
有关更多信息,请参见man rsync
手册页,并做好准备。
答案4
可能值得一提的是如何在 PC 上获取 blowfish 密码:
scp -o 密码=blowfish-cbc...
这对我来说几乎没有什么区别。我现在的 wifi 速度只有可怜的 75kb/s。