Я хочу синхронизировать каталог 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'.
Да ведь и как я могу улучшить это? Полный путь также перестал работать!
Если не возможный, как я могу поймать некоторый код состояния по выходу, чтобы определить, было ли изменение на синхронизации, и выполняют команду в случае, если?
Также было бы хорошо, если я мог бы просто получить количество новых переданных файлов.
Руководства для 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
"