0

我有一个由其他人编写的 Ruby 脚本,它为位于主文件夹中的文件创建硬链接,并使用以下命令将它们放入子文件夹中:

File.link('/mnt/server10/file1.lzo', '/mnt/server10/subfolder10/file2.lzo')

我在 Linux 服务器上挂载了 10 个相同的 Windows 服务器共享,并且 10 个挂载点中有 9 个对上述命令没有问题。但是,一个挂载点遇到了上述命令的问题并生成以下错误:

Hardlink failed: No such file or directory - /mnt/server10/file1.lzo or /mnt/server10/subfolder10/file1.lzo

我手动创建链接没有问题:

ln /mnt/server10/file1.lzo  /mnt/server10/subfolder10/file1.lzo

所有权限和设置都是相同的。

创建硬链接的 Ruby 脚本对于所有挂载点都是相同的。挂载点在 Linux 和 Windows 端具有相同的权限。

4

1 回答 1

0

bash 'ln' 命令似乎自己创建了所需的子文件夹。在红宝石中,你必须自己做。有一个不错的 gem,叫做 'rake',它为字符串、目录和文件名提供了路径映射方法。

在创建硬链接之前,您必须先创建子目录:

require 'rake'
def create_parent_dirs_for(filename)
  mkdir_p filename.pathmap('%d')
end

进一步阅读和观看: http: //www.virtuouscode.com/2014/04/24/rake-part-4-pathmap/

于 2016-08-17T21:47:18.200 回答