ls имя файла не работает в lftp

Я создал сценарий lftp для загрузки отдельных файлов на веб-хостинг-провайдера.

Вариант использования заключается в том, что я вызываю его из корня репозитория, поэтому относительный путь здесь и на удаленном сервере одинаков.

#!/bin/bash

DIRNAME=$(dirname $1)
FILENAME=$(basename $1)
REPO_ROOT=$(pwd)
ABSOLUTE_PATH=${REPO_ROOT}/$1

lftp -u user,passwd -p port sftp://user@hosting <<EOF
cd $DIRNAME
put  $ABSOLUTE_PATH 
ls -l $FILENAME
quit 0
EOF

Это работает, с одной небольшой, но досадной ошибкой. Чтобы убедиться, что он действительно загружает файл, я поставил ls -l в конце. Это терпит неудачу, и я не понимаю, почему:

ls: Access failed: No such file(functions.php)   

Я пытался использовать rels и cache flush, но тщетно. Я использую лфтп 4.0.9.


person Gergely    schedule 24.04.2013    source источник


Ответы (1)


Недолгое гугление наконец дало результат в mail-архиве

Это ограничение реализации протокола SFTP в lftp. Он не может перечислить один файл, только конкретный каталог.

К счастью, lftp позволяет использовать каналы, поэтому

ls -l | grep  "$FILENAME"

решает проблему.

person Gergely    schedule 24.04.2013