bash:使用scp检查远程文件是否存在

时间:2011-03-28 06:57:54

标签: bash scp

我正在编写一个bash脚本来将文件从远程服务器复制到我的本地计算机。我需要检查文件是否可用,所以如果不存在,我可以采取替代措施。

我知道如何测试是否存在本地文件,但是,使用scp会使事情变得复杂。常识告诉我,一种方法是尝试scp文件无论如何,并检查scp命令的返回代码。这是正确的方法吗?

如果是,我如何测试scp调用的返回码?

2 个答案:

答案 0 :(得分:10)

使用ssh +嵌入cmd行的一些shell代码;在文件传输失败之前需要做出决定时使用此方法;

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

如果你想传输目录,你可能想要“tar” - 首先

如果你想使用scp,可以像这样检查返回代码:

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

这实际上取决于何时知道文件是否存在对您来说很重要;在转移开始之前(使用ssh + sh)或在转移完成之后。

答案 1 :(得分:0)

好吧,因为您可以使用scp,所以您可以尝试使用ssh列出并查看该文件是否属于他们,然后继续操作。