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

oom*_*pah 11 bash scp

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

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

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

use*_*419 10

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

ssh remote-host 'sh -c "if [ -f ~/myfile ] ; then gzip -c ~/myfile ; fi" ' | gzip -dc > /tmp/pkparse.py
Run Code Online (Sandbox Code Playgroud)

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

如果你想使用scp你可以检查返回码如下:

if scp remote-host:~/myfile ./ >&/dev/null ; then echo "transfer OK" ; else echo "transfer failed" ; fi
Run Code Online (Sandbox Code Playgroud)

它真的取决于你知道文件是否存在的重要性; 在转移开始之前(使用ssh + sh)或在完成转移之后.