如果目录包含特定文件,如何通过SFTP传输目录

时间:2019-03-07 10:20:42

标签: linux sftp mirror lftp

我正在浏览具有类似结构的目录

/

/.sftp (for certificate, thus the password in my script is blank)

/Test folder

/Test folder/.xferComplete (file that is automatically uploaded when the transfer of the main file is complete)

/Test folder/Some content (can be jpg or anything)

这是我到目前为止的代码

#!/usr/bin/env bash
while true; do
checkfile=$(lftp -c "open -u USERNAME,blank URLofSFTP -e 'set ftp:list-options -a'; find -d 3 / | grep .xferComplete")
if [[ $checkfile == *"/.xferComplete"* ]]
then
lftp -u USERNAME,blank URLofSFTP << EOF
mirror --Move -O /$HOME/Documents
EOF
else
echo "Nothing to transfer"
fi
sleep 1
done

我想获取测试文件夹的内容,创建一个具有相同名称的本地目录并传输内容,然后删除SFTP上的文件夹。

但是,隐藏.xferComplete文件时,不会使用mirror --Move删除该文件夹,因为该文件夹不为空。

但是,如果我在镜像之前使用set list-options -a,它会成功删除该文件夹,但是它也会使用.sftp文件夹,其中包含用于无密码身份验证的公钥。

另一个潜在的问题是多次上传。也就是说,如果两个人同时上传,脚本将看到#1人的.xferComplete,即使他们可能还没有完成上传,也会尝试镜像#2人的文件夹

0 个答案:

没有答案