2

В данный момент я использую filezilla для развертывания новых версий сайта на работающем сервере. проблема в том, что есть один или два файла config, bootstrap и т. д., которые отличаются для живого сайта, и я должен быть осторожен, чтобы не перезаписать. Также есть большие области кода, которые никогда не меняются (например, я использую Zend Framework, который всегда одинаков).

Я хотел бы иметь возможность записывать макрос для загрузки одной и той же группы файлов и папок каждый раз, исключая подкаталоги и файлы, которые не следует перезаписывать.

Любой клиент FTP предлагает это?

2 ответа2

0

У меня есть сценарии установки ожидают, чтобы сделать эту самую вещь. Если вы используете Windows для клиента, то вам нужно будет установить Cygwin с ожидаемым. В Linux вам просто нужно убедиться, что установлен ожидаемый интерпретатор. Вот пример сценария, который я использовал для переноса файлов из окна Windows на сервер Linux с помощью scp. Он захватывает пароль, а затем использует его для вызова 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
0

ncftp поддерживает макросы. но я бы предпочел использовать настоящий язык сценариев, а затем передавать только то, что должно быть передано. и я предпочел бы ssh/sftp вместо ftp.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .