镜像改变文件后lftp运行jar文件?

镜像改变文件后lftp运行jar文件?

我想同步一个 ftp 目录lftp,然后运行一个 jar 文件,但前提是任何文件都发生了更改。

为了测试,我只是尝试在同步完成后执行另一个 bash 文件,但它不起作用:

lftp.sh:

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

测试.sh:

echo test ok

结果:

未知命令“test.sh”。

为什么?我该如何改进?绝对路径也会失败!

如果不可能,我如何在退出时捕获某种状态代码来确定同步是否发生了变化,并在必要时执行命令?

如果我能够得到新的文件已传输。

答案1

lftp 手册指出

--on-change=CMD 如果发生任何变化则执行命令

但想法是 CMD 是 lftp 命令,而不是 Bash。因此,要执行本地脚本“task.sh”,我们应该使用类似source task.sh或 的lftp 表达式! 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
"

相关内容