通过SFTP成功检查文件传输

时间:2019-03-21 13:02:35

标签: shell sftp file-transfer

我设置了10个文件,每个文件的大小可以从1mb到10mb不等。我想通过基于sftp密钥的身份验证将这些文件传输到远程服务器(根据要求)。我编写了一个简单的Shell脚本,以从本地目录中选择文件并连接到远程服务器,然后放置所有文件。

我想知道下面是否有办法检查

  1. 之间的文件传输失败(10个文件中有5个文件传输失败,而5个文件没有传输)

  2. 部分文件的传输

  3. 在传输过程中中止脚本

示例代码:

cd local_directory

sftp -i私钥username @ ip_address << EOF 2 >> TMP_LOG

cd /数据

pwd

输入*

再见

EOF

如果[[$? != 0]]

然后

回声“失败”

其他

回声“很好”

fi

但这似乎工作不正常1.脚本中止时2.传输是部分的3。 sftp连接丢失。

请问对此有何建议?

谢谢。

1 个答案:

答案 0 :(得分:0)

是的,sftp在退出状态报告方面不能很好地工作。

您可以使用diff来查找是否存在差异,默认情况下, diff会在存在差异时将退出状态设为1 ,这意味着您可以在脚本中使用它。

要比较本地文件和远程文件与diff:

ssh user_name@remotehost ls -R /remote/dir > remotedirfiles.txt 
ls -R /local/dir > localdirfiles.txt
diff remotedirfiles.txt localdirfiles.txt

如果ssh提示您输入密码,那将不起作用,您将需要将两个结果都重定向到文本文件,并将它们与diff进行比较。