3

我的 Perl 脚本使用 File::Copy 中的 move 函数将文件移动到 NFS 挂载的文件系统上。最近部分文件返回错误,导致我的脚本打印消息“move返回0,路径名中的文件或目录不存在”。(move成功返回1,错误返回0,错误信息来自$!)

真正奇怪的是处理文件的系统已经报告它成功处理了失败的文件!我以前从未见过成功写入的错误消息,所以我想知道它是否与 NFS 有关。我觉得奇怪的是,在移动了 28 个文件的运行中,前 24 个文件失败,最后 4 个文件成功。该脚本已经运行了几个月,没有出现任何错误,现在已经在 2 周内两次证明了这个问题。

主机在 AIX 上运行,但我怀疑这会有所不同。

4

1 回答 1

0

我认为这是 NFS 问题,而不是 Perl。NFS 在某些情况下可能真的很奇怪。

您应该统计/读取写入的文件,并且不要依赖报告的错误。

File::Copy::Reliable 模块使用相同的错误处理,它会因相同的错误而失败。

表格来源:

copy( $source, $destination )
    || croak("copy_reliable($source, $destination) failed: $!");

只需将副本放入 eval 块中,然后尝试读取/统计目标中的文件。

如果你真的很谨慎,你可以在两个文件上使用 md5/sha1 哈希来确保它们是相同的。

问候,

于 2012-06-13T07:09:51.270 回答