我设置了10个文件,每个文件的大小可以从1mb到10mb不等。我想通过基于sftp密钥的身份验证将这些文件传输到远程服务器(根据要求)。我编写了一个简单的Shell脚本,以从本地目录中选择文件并连接到远程服务器,然后放置所有文件。
我想知道下面是否有办法检查
之间的文件传输失败(10个文件中有5个文件传输失败,而5个文件没有传输)
部分文件的传输
在传输过程中中止脚本
示例代码:
cd local_directory
sftp -i私钥username @ ip_address << EOF 2 >> TMP_LOG
cd /数据
pwd
输入*
再见
EOF
如果[[$? != 0]]
然后
回声“失败”
其他
回声“很好”
fi
但这似乎工作不正常1.脚本中止时2.传输是部分的3。 sftp连接丢失。
请问对此有何建议?
谢谢。
答案 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进行比较。