lftp выполняют файл банки после того, как зеркало изменило файлы?

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

Для тестирования я просто попытался выполнить другой файл удара после того, как синхронизация закончилась, но это не работает:

lftp.sh:

lftp -f "
open $HOST
user $USER $PASS
lcd $SOURCEFOLDER
mirror --delete --verbose --on-change=test.sh $SOURCEFOLDER $TARGETFOLDER
bye
"

test.sh:

echo test ok

Результат:

Неизвестная команда 'test.sh'.

Да ведь и как я могу улучшить это? Полный путь также перестал работать!

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

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

2
задан 1 February 2018 в 02:13

1 ответ

Руководства для lftp действительно указывают что:

- on-change=CMD выполните команду, если что-нибудь было изменено

Но идея состоит в том, что CMD является командой lftp, не Bash. Таким образом для выполнения локального сценария 'task.sh' мы должны использовать lftp выражение как source task.sh или ! task.sh.

SCRIPTFOLDER="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
lftp -c " 
open ${HOST}
user ${USER} ${PASS} 
lcd $LOCALTARGETFOLDER
mirror --delete --verbose --on-change='source $SCRIPTFOLDER/test.sh' $REMOTESOURCEFOLDER $LOCALTARGETFOLDER
bye
"
1
ответ дан 2 December 2019 в 04:47

Другие вопросы по тегам:

Похожие вопросы: