如何在ruby脚本中复制损坏的符号链接

时间:2015-08-17 22:03:38

标签: ruby

我想在Ruby脚本中将所有内容从一个目录复制到另一个目录(包括损坏的符号链接)。我正在使用FileUtils.cp_r 'src/.', 'dest',但它抱怨破坏的符号链接。有人可以帮我这个吗?它现在对我来说是一个阻碍。

1 个答案:

答案 0 :(得分:1)

FileUtils.cp_r在内部将src文件夹递归地复制到dest。当找到符号链接时,它将使用File#symlink方法创建符号链接(参见fileutils.rb的第1369行)。

File#symlink的文档指出:

  

现有文件创建名为new_name的符号链接   旧名称。在没有的平台上引发NotImplemented异常   支持符号链接。

因此,如果其中一个符号链接被破坏并指向一个不存在的文件,似乎可能无法使用FileUtils.cp_r来复制目录。

解决方法

您可以从ruby脚本执行shell命令cp -r命令,它可能不是与平台无关的代码,可能不容易调试,但它可以帮助您绕过您考虑的给定方案成为 show-stopper

src = "/path/to/src/dir"
dest = "/path/to/dest/dir"

`cp -r #{src} #{dest}`