2011-03-28 118 views
9

我正在編寫一個bash腳本來將文件從遠程服務器複製到本地機器。我需要檢查文件是否可用,所以如果不存在,我可以採取其他措施。bash:使用scp檢查遠程文件是否存在

我知道如何測試一個本地文件是否存在,但是,使用scp使事情稍微複雜一些。常識告訴我,有一種方法是嘗試scp文件,並檢查從scp命令返回的代碼。這是否是正確的方法?

如果是,我該如何測試scp調用的返回碼?

回答

9

使用ssh +一些嵌入cmd行的shell代碼;在文件傳輸失敗之前需要做出決定時使用此方法;

ssh remote-host 'sh -c "if [ -f ~/myfile ] ; then gzip -c ~/myfile ; fi" ' | gzip -dc > /tmp/pkparse.py 

,如果你要轉移的目錄,你可能會想「焦油」 - 它首先

,如果你想使用scp可以檢查返回碼這樣

if scp remote-host:~/myfile ./ >&/dev/null ; then echo "transfer OK" ; else echo "transfer failed" ; fi 

它真的取決於何時對你來說重要的是要知道該文件是否存在;在傳輸開始之前(使用ssh + sh)或完成之後。

0

好吧,既然您可以使用scp您可以嘗試使用ssh列出並在繼續之前查看文件是否是他們的文件。

相關問題