unix - ls 文件名在 lftp 中不起作用

标签 unix lftp

我创建了一个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)   

我尝试使用rels缓存刷新但没有成功。我使用的是lftp 4.0.9。

最佳答案

一些谷歌搜索最终给出了结果 mail-archive

It is a limitation of SFTP protocol implementation in lftp. It cannot list a single file, only a specific directory.

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

ls -l | grep  "$FILENAME"

解决了问题。

关于unix - ls 文件名在 lftp 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16185575/

相关文章:

java - LFTP - Java 原生库

ftp - 使用许多目录加速 lftp 镜像

bash - 从 grep 输出创建文件时,为什么我会得到一些额外的、奇怪的字符?

c - fork的共享内存

sockets - 我不明白有关多播的段落

linux - 使用 sed "s| ACT: ||"

linux - Bash 不支持浮点运算——但为什么我可以使用 BC?

python - 使用 lftp 提取文件并遍历提取的文件

linux - 如何将结果 "!find ..."命令重定向到放置 lftp 命令

gitlab - 自动化 .gitlab-ci.yml lftp 配置