我的 Perl 脚本正在使用 File::Copy 中的移动函数将文件移动到 NFS 安装的文件系统上。最近,某些文件返回错误,导致我的脚本打印消息“move returned 0, A file or directory in the path name does not exist.” (移动成功返回1,错误返回0,错误信息来自$!)
真正奇怪的是,处理文件的系统返返回告说它成功处理了失败的文件!之前没见过写成功报错的,所以想是不是跟NFS有关系。我认为奇怪的是,在移动了 28 个文件的运行中,前 24 个失败而后 4 个成功。该脚本已经运行了几个月没有错误,现在已经在 2 周内两次演示了这个问题。
主机在 AIX 上运行,但我怀疑这会产生影响。
最佳答案
我认为这是一个 NFS 问题,而不是 Perl。在某些情况下,NFS 可能真的很奇怪。
您应该统计/读取写入的文件,不要依赖报告的错误。
File::Copy::Reliable 模块使用相同的错误处理,它将因相同的错误而失败。
表单来源:
copy( $source, $destination )
|| croak("copy_reliable($source, $destination) failed: $!");
只需将副本放入 eval block 中,然后尝试读取/统计目标中的文件。
如果您非常谨慎,可以对两个文件使用 md5/sha1 散列来确保它们相同。
问候,
关于perl - File::Copy 报告 NFS 写入错误错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11007288/