2016-08-17 2 views
0

У меня есть сценарий Ruby, написанный кем-то другим, что создает жесткие ссылки на файлы, расположенные в основной папке, поместив их в подпапку с помощью:Как создать жесткую-ссылку на Linux на акцию для Windows

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

I имеют 10 идентичных разделов серверов Windows, установленных на сервере Linux, и 9 из 10 точек монтирования не имеют проблем с указанной выше командой. Однако, одна точка монтирования возникла проблема с вышеуказанной команды и генерирует следующее сообщение об ошибке:

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.

+1

Пожалуйста, используйте форматирование, чтобы сделать текст более легко читать. Это помогает другим понять этот вопрос. –

+0

Это не похоже на проблему с Ruby, если код тот же, и он работает для большинства случаев. Я бы искал различия между серверами Windows. [su], вероятно, лучший сайт, чтобы спросить об этом, поскольку это похоже на проблему, связанную с ОС. –

ответ

0

Команда bash 'ln', кажется, создает необходимые подпапки сама по себе. в рубине вы должны сделать это сами. Существует красивый драгоценный камень под названием «rake», который предоставляет метод pathmap для строк, каталогов и имен файлов.

Перед созданием жесткой связи вы можете создать подкаталог первым:

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/

+0

Вложенные папки уже созданы - код ruby ​​их не создает. Итак, это не проблема. – browser30

Смежные вопросы