6

我创建了一个 lftp 脚本来将单个文件上传到网络托管服务提供商。

用例是我从存储库根目录调用它,因此这里和远程服务器中的相对路径是相同的。

#!/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

它有效,有一个小但烦人的错误。为了检查它是否真的上传了文件,我ls -l在最后放了一个。它失败了,我不明白为什么:

ls: Access failed: No such file(functions.php)   

我尝试使用relscache flush但徒劳无功。我正在使用 lftp 4.0.9。

4

1 回答 1

8

一些谷歌搜索终于在邮件存档中给出了结果

这是 lftp 中 SFTP 协议实现的一个限制。它不能列出单个文件,只能列出特定目录。

幸运的是,lftp 允许管道,所以

ls -l | grep  "$FILENAME"

解决问题。

于 2013-04-24T07:09:58.527 回答