确定SCP转移是否失败的最佳方法

时间:2013-05-17 12:10:48

标签: linux bash shell ssh scp

在脚本结束时,如果成功,它会创建一个文件(文件)并将其存储到目标目录中;然后我通过scp从服务器检索文件(文件)回到我的工作站。脚本的用户能够确定他们正在检索的文件(或多个文件)的输出位置。

确定文件(文件)是否成功传输的最佳方法是什么?我的主要问题是,如果用户将文件检索到/ home / $ USERNAME / Desktop这样的位置,并且桌面上有文件。确定桌面上是否有通过脚本检索的新文件的最佳方法是什么?

最后,我真的只想确定传输是否失败。当脚本结束时,我想通知用户该文件已成功传输到输出目录。

以下是我的想法......

if (ssh user@server "[ find /myFiles -maxdepth 0 -empty -exec return 0 \; ]")
then
    scp user@server:/myFiles localhost:/DirToSave 
fi

但这不起作用,但是,我认为使用这种方法只会让我知道我正在寻找的文件不在那里,从而简化了我的其他问题。有更好的方法吗?

1 个答案:

答案 0 :(得分:3)

尝试rsync。

rsync -arvz -e ssh user@server:/myFiles localhost:/DirToSave 

这将在输出中告诉您文件是否已更改。你可以便宜多次运行它

如果失败,将返回错误代码。可以测试: if [ $? -ne 0 ] 如果在代码写入时文件发生更改或无法设置权限(例如在时间戳上),这可能会很敏感。