2013-04-24 23 views
4

我創建了一個lftp腳本來將單個文件上傳到虛擬主機提供商。ls文件名不能在lftp中工作

用例是我從存儲庫根目錄調用它,所以相對路徑在這裏和遠程服務器中是相同的。

#!/bin/bash 

DIRNAME=$(dirname $1) 
FILENAME=$(basename $1) 
REPO_ROOT=$(pwd) 
ABSOLUTE_PATH=${REPO_ROOT}/$1 

lftp -u user,passwd -p port sftp://[email protected] <<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。

回答

5

一些谷歌搜索,最後給出一個結果mail-archive

正是在lftp的SFTP協議實現的限制。它不能 列出單個文件,只有特定的目錄。

幸運的是,lftp的允許管道,所以

ls -l | grep "$FILENAME" 

解決了這個問題。