之前一直很纠结这个问题,本地项目需要上传到服务器上的时候,一般都是采用FTP这种方式。这种方式的问题就是很麻烦,需要手工上传,当目录很深或者有多个服务器的时候很麻烦。另外也用过SVN的自动部署,文件修改后,check in到SVN,然后到服务器端svn update 以下,比较方便,但是遇到冲突也会很麻烦。所以之前在公司用的都是一个Java开发的上传工具,只要写好配置文件后就可以了,支持多服务器,多工程。
比如这样:
代码如下
server.names=192.168.12.221,192.168.9.26,192.168.5.186,114.80.212.238
work.dir=e:Ftp_Upload_Log
server.cfg.192.168.12.221=FtpConfigFtp_192_168_12_221.properties
server.cfg.114.80.212.238=FtpConfigFtp_114_80_212_238.properties
然后是单独的配置文件:
代码如下
server.ip = 192.168.5.186
server.account = fff
server.pwd = fff
server.apps = home,wenku
local.source.home =D:/devspace/home
remote.home = /usr/xxtsrc/home
local.bak.home = e:/bak/home
local.source.wenku =D:/devspace/wenku
remote.wenku = /usr/xxtsrc/wenku
local.bak.wenku = e:/bak/wenku
但是,有一个问题就是配置麻烦,而且不支持SFTP协议。这对于需要在windows和Linux之间传文件很重要。想要重构以前的软件就得改动不少地方。然后就想到了能不能换种方式实现上传下载,最后转了一圈,想到的最简单的方法就是用FTP的队列工具。比如,FlashFxp就有队列功能。但是它不支持自动管理,需要手工添加文件到队列。再想,何不去解析这个队列文件的格式,然后自动生成队列文件呢?
FlashFxp的帮助文档已经对其队列文件(.fqf)的格式解析的很清楚了。fqf文件是按行组织的。每一行用ASCII 1分割(还有用3的),回车换行结束。具体的格式如下:
代码如下
解释:
其格式如下图所示:
格式知道了,那就很好实现了。用LUA根据上传列表自动生成队列文件,然后调用FlashFxp,即可实现自动上传了。
当上传比较频繁的时候,还是可以减少一些工作量的。不过依赖于FTP工具。如果时间充足的话,还是考虑重构之前的工具,增加对SFTP协议的支持,重构界面