使用Perl和SCP验证复制的文件

使用Perl和SCP验证复制的文件,perl,scp,verify,Perl,Scp,Verify,如何使用Perl在远程服务器上验证复制的文件,或者是否可能?下面是我正在使用的Perl命令。我不能使用,所以我的选择有点有限 $scpe->scp("/u02/oraclebackup/$tar_file","HOST:/u04/orabkup/oraclebackup/oemp/"); 好的,我已经找到了问题的解决方案,虽然它没有直接验证副本,但如果出现预期错误之外的错误,它将停止脚本。这是我的密码: $scpe->error_handler( \&scp_errors

如何使用Perl在远程服务器上验证复制的文件,或者是否可能?下面是我正在使用的Perl命令。我不能使用,所以我的选择有点有限

$scpe->scp("/u02/oraclebackup/$tar_file","HOST:/u04/orabkup/oraclebackup/oemp/");

好的,我已经找到了问题的解决方案,虽然它没有直接验证副本,但如果出现预期错误之外的错误,它将停止脚本。这是我的密码:

$scpe->error_handler( \&scp_errors );
$scpe->scp( "/u02/oraclebackup/$tar_file",
    "HOST:/u04/orabkup/oraclebackup/oemp/" );

#Error trapping with exception for known harmless error
sub scp_errors {
    my $line = shift;

    if ( $line =~ /scp timed out while trying to connect to/ ) { 
        return (0);
    } else {
        return (1);
    }   
}

这似乎解决了我的两个问题。谢谢@chrsblck

将遥控器复制回本地,
cmp
本地可能不可靠。。。您可以在远程端使用什么?顺便说一句,通过
scp
“错误”的拷贝是可能的?我同意@jm666;除非网络上发生了什么事情,否则你几乎总能保证它成功传输。也许我太谨慎了。这将作为cron中的脚本运行,因此我无法直接监视它,谁知道将来会出现什么样的网络问题。这是在复制我们的数据库备份,因此我想在删除本地副本之前确保它正常。我认为
scp
具有内置验证。我假设您使用的是
Net::scp::Expect
。阅读“错误处理程序(子参考)…”NP的这一部分。另外,请注意,如果不设置
错误\u处理程序
,将发生“简单的'croak()'调用”。如果您不熟悉,我建议您更改;)