windows下ftp自动更新
服务器(windows 2008 RC2
)迁移到阿里云
后, 原来的ftp自动更新脚本(php脚本,使用了ftp模块的函数)出现问题了,连接到海外的FTP服务器(澳大利亚的主机)后,列目录会出错,具体就是ftp_nlist
函数执行超时,无法下载文件,具体原因未知。
当前服务器已开通FTP服务,测试用FTP脚本连接本地FTP没有问题的,于是现在解决方案为:
在本地新建一个帐户,想办法用其他方法将海外FTP的文件同步到本地FTP,将FTP脚本的配置修改为本地连接的帐户,使用同步后的文件更新,这样自动更新脚本的逻辑无需更改。
使用windows自带的ftp命令
先写一个批处理 auto.ftp
:
1 2 3 4 5 6 | open aaa.com.au user 用户名 密码 dir get XXX.zip bye |
然后在命令行下执行:
1 | ftp -n -s:auto.ftp
|
在本地执行可成功列目录和下载文件,但是放到服务器执行,到列目录时半天没响应,尝试以失败告终。
使用 wget
这是个在linux下很流行的一个工具,在windows下也有相应的版本,它不但支持http协议,也支持FTP下载,下载后直接扔%path%
目录里去就行了,完成写个批处理,内容如下:
1 2 3 4 5 6 | rem 使用wget获取到本地ftp。 cd /d F:\myftp md logs del *.zip* wget ftp://aaa.com.au/file_%date:~0,4%%date:~5,2%.zip --ftp-user=用户名 --ftp-password=密码 wget -q http://myhost/ftp-import.php --output-document=logs\%date:~0,4%%date:~5,2%%date:~8,2%.update.log |
执行后文件将被下载到f:\myftp
目录下。值得注意的是批处理的日期表示法。