gpt4 book ai didi

Ruby:FileUtils.cp 截断文件; FileUtils.mv 不是吗?

转载 作者:数据小太阳 更新时间:2023-10-29 08:53:51 24 4
gpt4 key购买 nike

这很奇怪……我想不明白为什么会这样。

  1. 我有一个文件夹,里面装满了各种 CoffeeScript、SASS、HTML 和 XML 文件。
  2. 我有一个 Ruby 脚本,可以将它们全部提取、编译并将它们缩小到一个主 XML 文件中(用于 iGoogle 小工具开发)。
    • 此脚本使用 trollop 获取命令行参数(我只是说明这一点以澄清下面的代码)。
  3. 我希望此脚本将该文件从创建它的当前目录复制到它将运行的目标目录。

到目前为止,构建/编译/缩小步骤运行起来就像变魔术一样。第 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 运行这个脚本。在这两种情况下(复制和移动),源文件和目标文件均未被任何其他进程使用。

谁能解释一下这种怪异的行为?

最佳答案

一些事情:

  • 您要移动到同一个磁盘卷吗?如果是这样,那么,是的,cam 关于原子性的评论绝对是正确的;操作系统可能只是在移动过程中弄乱了 inode 表,而不是写出数据。如果您要在卷之间移动数据,那就不会那么简单了。

  • 你试过通过吗

    :verbose => true

    到 FileUtils.cp 命令?这可能会诊断出故障。

关于Ruby:FileUtils.cp 截断文件; FileUtils.mv 不是吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6459553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com