目前我正在使用filezilla将新版本的站点部署到实时服务器。麻烦的是,有一个或两个配置,bootstrap等文件对于实时站点是不同的,我必须小心不要覆盖。还有很多代码永远不会改变(例如我使用的是zend框架,它始终是相同的)。
我希望能够每次都记录一个宏来上传同一堆文件和文件夹,不包括子目录和不应该被覆盖的文件。
有没有ftp客户端提供这个?
目前我正在使用filezilla将新版本的站点部署到实时服务器。麻烦的是,有一个或两个配置,bootstrap等文件对于实时站点是不同的,我必须小心不要覆盖。还有很多代码永远不会改变(例如我使用的是zend框架,它始终是相同的)。
我希望能够每次都记录一个宏来上传同一堆文件和文件夹,不包括子目录和不应该被覆盖的文件。
有没有ftp客户端提供这个?
Answers:
我已经设置了期望脚本来做这件事。如果你在客户端的Windows上,那么你需要安装cygwin with expect。在linux上,您只需要确保安装了expect解释器。这是一个示例脚本,我用来使用scp将文件从Windows框传输到Linux服务器。它捕获密码,然后使用它为单个文件多次调用scp。您可以使用sftp和通配符发送多个文件,甚至ftp,但我不喜欢ftp。 Ftp以明文方式发送密码。
#!/usr/bin/expect --
# Prompt for the password and store it in $PASS
send_user "\n"
send_user "Password? "
stty -echo
expect_user -re "(.*)\n" {set PASS $expect_out(1,string)}
send_user "\n"
stty echo
# Set user name and parameters
# You can remove the above password entry and just set it here.
set user "username"
set server "server.com"
# set PASS "superSecret"
set timeout 30
set destDir "/home/user/www/htdocs/updates/"
set scp "/usr/bin/scp"
set file "/cygdrive/c/Workspace/Release/index.html"
puts "\rSending $file to $server\r"
spawn -noecho $scp $file $user@$server:$destDir
match_max 100000
expect "*?assword:*"
send -- "$PASS\r"
send -- "\r"
expect eof
set file "/cygdrive/c/Workspace/Release/test.cfg"
puts "\rSending $file to $server\r"
spawn -noecho $scp $file $user@$server:$destDir
match_max 100000
expect "*?assword:*"
send -- "$PASS\r"
send -- "\r"
expect eof