我正在编写一个bash脚本来将文件从远程服务器复制到我的本地计算机。我需要检查文件是否可用,所以如果不存在,我可以采取替代措施。
我知道如何测试是否存在本地文件,但是,使用scp会使事情变得复杂。常识告诉我,一种方法是尝试scp文件无论如何,并检查scp命令的返回代码。这是正确的方法吗?
如果是,我如何测试scp调用的返回码?
答案 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
列出并查看该文件是否属于他们,然后继续操作。