我将文件从location 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.这种“睡眠10秒”有时是不够的,其抛出错误为"cp: read error: Input/output error",我认为第二个"cp“命令在第一个"copy”命令仍在写入时试图访问该文件。使用Perl v5.6.1
有什么办法可以避免这种情况吗?谢谢。
发布于 2014-09-15 17:25:32
我猜您将从copy模块中获得您的File::Copy例程。
在对CPAN进行了简短的搜索之后,我发现了一个名为File::Copy::Vigilant的模块,它似乎适合您的需要,并且有来自Perl5.6的成功测试报告。
我还找到了File::Copy::Reliable,但只有perl 5.8的报告,尽管这证明什么都没有。就这个模块而言,你可能只是一个时间旅行的先锋.
https://stackoverflow.com/questions/25852045
复制相似问题