我将文件从位置 windowsLocation1 复制到 LinuxLocation1,格式为“windowsLocation1->windowsLocation2-> LinuxLocation1”,windowsLocation2 是可从 Windows 和 Linux 计算机访问的交换区域
copy("//server1/dir1/myfile.txt", "$copy_dir/myfile.txt") or die "Copy failed: $!";
<telnet into Linux machine>
$obj->{telnet}->print( "sleep 10; cp /net/dir1/myfile.txt /tmp/files/");
#added "sleep 10, to avoid the race condition between copy and cp.
这个“ sleep 10”秒有时是不够的,它抛出错误为“cp:读取错误:输入/输出错误”,我认为第二个“cp”命令在第一个“复制”时尝试访问文件命令仍在写入。使用 Perl v5.6.1
有办法避免这种情况吗?谢谢。
最佳答案
我猜测您是从 File::Copy
模块获取 copy
例程。
在对 CPAN 进行简短搜索后,我发现了一个名为 File::Copy::Vigilant
的模块看起来它可能适合您的需求,并且有来自 perl 5.6 的成功测试报告。
我还发现了File::Copy::Reliable
但只有 perl 5.8 的报告,尽管这并不能证明什么。就本模块而言,您可能只是一位时间旅行先驱......
关于Perl复制命令等待复制完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25852045/