perl - File::Copy 报告 NFS 写入错误错误?

标签 perl nfs

我的 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/

相关文章:

ubuntu - ZFS NFS 共享未导出 Ubuntu 16.04

kubernetes - 卷 "nfs": mount failed: exit status 32 的 MountVolume.SetUp 失败

perl - 如何在有向图中找到从源到汇的所有路径?

Javascript 正则表达式与 Perl 正则表达式的比较

perl - 将 Perl 模块安装到特定位置

linux - ESXi 5.1 虚拟机不再能够从其他虚拟机挂载 NFS 共享

c - 如何让 NFS 支持 posix_fallocate?

linux - Perl 5.005_03 无法识别 NFS 文件的存在

perl - 如何设置 perl 始终运行代码覆盖率

perl - perl split() 中的分隔符保留模式