为了将服务器上的日志(主要是IIS日志)上传到远程日志分析服务器上,我在存储上划分了一块区域,挂载到FTP服务器上,为了能让服务器在自动完成上传日志文件的工作,我使用FTP批处理脚本做了一个自动登录到远程服务上,并完成上传文件的批处理文件uploadLog.bat:

 
  
  1. echo off 
  2. rem 此脚本用于测试Window下FTP自动登录服务并上传文件 
  3. echo 初始化必要参数 
  4. set serverIP=192.168.*.*
  5. set userName=**
  6. set passWD=**
  7. set fileName=%date:~0,4%%date:~5,2%%date:~8,2% 
  8. echo 在当前目录创建一个100M左右大小的测试文件,文件以当前日期命名 
  9. fsutil file createnew %fileName% 102400000 
  10. echo open %serverIP% >temp.txt 
  11. echo %userName%>>temp.txt 
  12. echo %passWD%>>temp.txt 
  13. echo bin>>temp.txt 
  14. echo put %fileName% %fileName% >>temp.txt 
  15. echo bye>>temp.txt 
  16. echo 正在将测试文件上传到远程服务器上,请稍等。。。 
  17. ftp -s:temp.txt 
  18. echo 测试文件已经成功上传到服务器上 
  19. echo 删除临时文件 
  20. del /q /f %fileName% 
  21. del /q /f temp.txt 
  22. echo 此测试脚本测试完成 
  23. pause 
  24. end 

    FTP批处理脚本请参考:http://support.microsoft.com/kb/96269/zh-cnhttp://technet.microsoft.com/zh-cn/library/cc756013(v=ws.10).aspx,创建用于上传的测试文件是使用了Windows自带的fsutil命令,具体可以参考文档:http://technet.microsoft.com/zh-cn/library/cc755628(v=ws.10).aspx ,在测试的过程中发现上传大一点的文件会经常出现上传不成功的现象,程序会一直处在如图所示的状态,到现在还没有找到原因处在那里。

    于是在网上找Windows下的可用于命令行的FTP客户端,最终发现了NcFTPclient,官网网址:http://www.ncftp.com,它是一款非常优秀免费的跨平台FTP客户端,关于它的使用可以参考这篇文章,http://www.ibm.com/developerworks/cn/aix/library/au-ncftp_flex/,其提供的ncftpput命令很容易实现文件的上传,而且其官方提供的msi安装包也很容易在网络中部署。接下来使用ncftpput实现文件的上传,修改后的uploadLog.bat:

 
  
  1. echo off 
  2. rem 此脚本用于测试Window下FTP自动登录服务并上传文件 
  3. echo 初始化必要参数 
  4. set serverIP=192.168.*.* 
  5. set userName=** 
  6. set passWD=**
  7. set fileName=%date:~0,4%%date:~5,2%%date:~8,2% 
  8. echo 在当前目录创建一个100M左右大小的测试文件,文件以当前日期命名 
  9. fsutil file createnew %fileName% 102400000 
  10. echo 正在将测试文件上传到远程服务器上,请稍等。。。 
  11. ncftpput -u %userName% -p %passWD% %serverIP% . %fileName% 
  12. echo 测试文件已经成功上传到服务器上 
  13. echo 删除临时文件 
  14. del /q /f %fileName% 
  15. echo 此测试脚本测试完成 
  16. pause 
  17. end 

    是否觉得非常简单明了,而且在上传的过程中可以实时看到文件上传的进度,上传的结果如图:

    在测试的过程中即使是上传上GB的大文件上传时也很稳定,暂时没有发现问题,接下来我会在实际的生产环境中以这种方式实现日志文件的上传工作。