lftp: сообщение "FEAT согласование", когда я пытаюсь синхронизировать удаленную (без SSL) папку с локальной папкой

Я хочу синхронизировать удаленную папку с локальной папкой, используя lftp.

Когда я впервые установил "lftp" и создал этот скрипт:

#!/bin/bash

#get username and password
USER=...        #Your username
PASS=...        #Your password
HOST="..."      #Keep just the address

echo Sync started ...

LCD="/var/www/myfolder/app" #Your local directory
RCD="/app"                  #FTP server directory

lftp -f "
open $HOST
user $USER $PASS
lcd $LCD
mirror --continue --reverse --delete --no-symlinks --exclude .gitkeep --exclude .gitignore --exclude .bower.json --verbose $LCD $RCD
bye
" 

Все мысли работали как шарм. После этого я попытался скомпилировать lftp с помощью ssl (я скачал исходный код, скомпилировал его в пакет deb и установил его) для синхронизации с ftp-сервером ssl. Я не понял, но мне больше не нужно, поэтому я хотел вернуться к стартовой ситуации.

Теперь, даже если я удаляю lftp и снова устанавливаю его без ssl, при выполнении сценария я получаю следующее сообщение:

mkdir `/app' [FEAT negotiation...]

Команда просто идет в тайм-аут (я видел это с отладкой). Я не знаю, как это решить.

Любая помощь? Благодарю.

1 ответ

Я столкнулся с точно такой же проблемой. Это было решено путем явного предоставления префикса протокола 'sftp' в строке подключения. По умолчанию lftp использует 'ftp' в качестве протокола.

HOST="sftp://<hostname>" # <-- make sure that you have specified the protocol here

lftp <<EOF 
set ssl:verify-certificate no  
set sftp:auto-confirm yes
open $HOST -p $PORT -u $USER,$PASSWORD
mirror $RCD $LCD
EOF

Я выключил функции FEAT, и это сработало как шарм. Просто используйте эту команду перед открытием соединения:

set ftp:use-feat false
Другие вопросы по тегам