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