1

我正在运行 shell 脚本,它是上传结果文件以删除服务器。某天,ftp服务器崩溃了,但没人不知道,所以每天的数据没有按时生成。

为防止出现此问题,我的经理要求我检查上传结果并尝试延迟上传。(每小时试2~3次。)

我有问题。1.如何判断文件上传是否成功?2. 有时如何重新安排文件上传?

仅供参考,我们的系统在 RHEL5 上运行,以下是文件上传代码。

ftp -n -v ${FTP_HOST} << END_SCRIPT

user ${FTP_USER} ${FTP_PASSWD}

prompt

binary

put  ${REPORT__NAME}.tar.gz

bye

END_SCRIPT
4

1 回答 1

1

一个懒惰(简单,但不是很聪明)的解决方案:

  • 1)计算文件的MD5sum: md5sum ZEFILE > ZEFILE-MD5.txt
  • 2)上传文件:put ZEFILE

如果您可以在远程服务器上运行命令:

  • 3)就在后面,第二个命令(所以它只在第一个命令之后运行):put ZEFILE-MD5.txt
  • 4) 在远程服务器上:它等到“ZEFILE”也有一个“ZEFILE-MD5.txt”,表明文件可能已完全上传。然后 IT 将 ZEFILE 的 md5sum 与 ZEFILE-MD5.txt 的内容进行比较,并警告您(邮件?)ZEFILE 已“损坏”

如果您无权访问远程服务器:

  • 3) 尝试以另一个名称再次下载 ZEFILE:get ZEFILE ZEFILE-from-remote
  • 4)diff ZEFILE ZEFILE-from-remote

如果您对远程服务器有(某些)访问权限,我还建议您使用“scp ZEFILE user@destination:/some/path/”而不是使用 FTP。

如果被迫使用 FTP:请阅读有关使用expect而不是编写无法“适应”远程发送的错误消息的静态脚本(也不要在发出相关命令之前等待适当的提示)

关于重新安排: man at

你可以这样做:( echo /path/to/myscript | at now + 3 hours请检查语法,从几年前阅读该手册页的记忆中写出来......)(脚本可以以这种方式重新提交,但要小心无限循环^^)

我希望这会有所帮助(并且有人提出了一个“更聪明”的想法^^)

于 2013-03-20T19:16:41.210 回答