有没有带宏的免费 ftp 客户端

有没有带宏的免费 ftp 客户端

目前,我正在使用 filezilla 将网站的新版本部署到实时服务器。问题是,对于实时网站,有一两个配置、引导程序等文件是不同的,我必须小心不要覆盖。此外,还有大片代码永远不会改变(例如,我使用 zend 框架,它始终是相同的)。

我希望能够录制一个宏,以便每次上传同一组文件和文件夹,但不包括不应被覆盖的子目录和文件。

有任何 ftp 客户端提供此功能吗?

答案1

FTP服务器支持宏。但我宁愿使用真正的脚本语言,然后只传输需要传输的内容。我更喜欢 ssh/sftp 而不是 ftp。

答案2

我已经设置了 expect 脚本来执行此操作。如果您在 Windows 上安装客户端,则需要安装带有 expect 的 cygwin。在 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

相关内容