我创建了一个lftp脚本,用于将单个文件上传到Web托管服务提供商。
用例是我从存储库根目录中调用它,因此这里和远程服务器中的相对路径是相同的。
#!/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
它有效,只有一个小而烦人的bug。要检查它是否真的上传了文件,我最后放了一个ls -l
。它失败了,我不明白为什么:
ls: Access failed: No such file(functions.php)
我尝试使用rels
和cache flush
,但徒劳无功。我正在使用lftp 4.0.9。
答案 0 :(得分:7)
最后一些谷歌搜索在mail-archive
中得出了结果这是lftp中SFTP协议实现的限制。这不可以 列出单个文件,只列出特定目录。
幸运的是,lftp允许管道,所以
ls -l | grep "$FILENAME"
解决了这个问题。