在这种情况下,scp 命令返回响应代码 > 0,但文件已成功复制并最终加载到数据库中,这意味着它们没有损坏。
尽管响应代码 > 0,Unix SCP 命令是否继续复制文件?如果 resp > 0,文件是否会损坏或根本不传输?我预计 resp > 0 意味着复制已停止,没有复制任何文件。
使用的代码:
scp -r [!.]* [email protected]:/home/user/DATA_* /app/data
if (($? > 0)); then touch conn_error_172_0_0_1.bad; fi
根据本手册,响应代码 > 0 是错误http://support.microfocus.com/kb/doc.php?id=7021696–
答案1
Unix SCP 命令是否继续复制文件,尽管响应代码 > 0
这个问题没有意义——它scp
返回该代码,并且只有在完成它所做的任何事情后才会返回。因此,当您获得返回代码时,scp
就完成了。之后什么也没有发生。没有 scp 可以继续做任何事情!
是否scp
能够复制任何文件、所有文件或仅复制某些文件,这取决于错误(以及错误发生的时间点)。
如果您需要原子副本,请使用rsync
选项--delay-updates
而不是scp
。
答案2
各州的文件scp
,
成功时实用
scp
程序退出 0,如果发生错误则退出 >0。
这不是特别精确,所以我们需要尝试一个实验:
scp remoteHost:/etc/no_such_file /tmp; echo SS=$? # "SS=1"
scp remoteHost:/etc/hosts /tmp; echo SS=$? # "SS=0"
scp no_such_host:/etc/hosts /tmp; echo SS=$? # "SS=255"
现在让我们看一个组合:
scp remoteHost:/etc/no_such_file remoteHost:/etc/hosts /tmp; echo SS=$? # "SS=1"
这里请注意,虽然退出状态不为零,但文件/etc/hosts
已成功复制。我想这就是您的情况,其中一些文件被复制,而另一些则没有。
无论是否使用-O
(强制scp
协议而不是新的默认协议),每种情况的退出状态都是相同的。sftp
我得出的结论只是文档的结论,如果退出状态非零,则会发生某种错误,如果退出状态为零,则任何传输都不会发生错误。