这很奇怪......我无法弄清楚为什么它会这样做。
trollop
获取命令行参数(我只是说明了以下代码)。到目前为止,构建/编译/缩小步骤就像魔法一样。这是#3,它被暮光之城区域所吸引。
#!/usr/bin/ruby
…
if opts[:deploy_local]
FileUtils.cp 'build.xml', '/path/to/destination/'
puts "Copied #{written_file_name} to #{output_destination}." if opts[:verbose]
end
当复制文件时,目标文件将被截断大约3/4。源文件很好。但是,出于某些奇怪的原因,移动文件就像魅力一样。
FileUtils.mv 'build.xml', '/path/to/destination/'
要添加另一层次的怪异,如果我只是进行系统复制,它也会被截断。
system("cp build.xml /path/to/destination")
FWIW,我是从zsh
开始运行此脚本而不是bash
。在这两种情况下(复制和移动),源文件和目标文件都没有被任何其他进程使用。
有人可以解释这种怪异的行为吗?
答案 0 :(得分:3)
一些事情:
您是否正在转移到相同的磁盘卷?如果是这样,那么,是的,cam关于原子性的评论肯定是正确的;操作系统可能只是在移动过程中弄乱了inode表,而不是写出数据。如果你在卷之间移动数据,那就不会那么简单了。
您是否尝试过传递
:verbose => true
到FileUtils.cp命令?这可能会对失败做出诊断。