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