понедельник, 20 октября 2008 г.

Работа с hardlinks и symlinks

В Windows, при использовании файловой системы NTFS, можно делать так называемые хардлинки и симлинки. Постараюсь пояснить, что это такое.

Допустим, у нас есть каталог, в котором есть какие-то файлы. Мы пишем скрипт (программу и т.п.), где в коде жёстко зашиваем все пути к файлам. Потом переносим этот скрипт на другой компьютер и сталкиваемся с ситуацией, что структура каталогов несколько другая.

Чтобы решить проблему, нужно либо переписать скрипт с учётом новой структуры каталогов, либо сделать так, чтобы он "не заметил" никаких изменений.

Есть консольная команда SUBST, которая позволяет привязать к букве диска любой каталог на любом диске. Но если нам хочется гибкости, то придётся использовать линки. Люди из мира UNIX очень часто пользуются этой возможностью, в Windows эта технология применяется не так широко.

Линк - это ссылка на файл либо каталог. Скажем, каталог - "C:\MyDocs\", а симлинк на него - "C:\MyLinks\Docs\". Для программ нет никакой разницы, к какому пути обращаться. Если мы удалим файлы из "C:\MyLinks\Docs\" - это моментально отразится в исходном "C:\MyDocs\".

Как штатным образом увидеть этот линк, скажем, в Проводнике - я не знаю. Буду благодарен тому, кто подскажет :) Потому что на вид линк на каталог либо на файл ничем от своего оригинала не отличается.

Есть ещё и хардлинки - они, в отличие от симлинков, могут указывать только на файлы. Основное отличие от хардлинков в Linux то, что при удалении хардлинка исходный файл не удаляется. В остальном - тот же симлинк.

В новой версии WinScript будет поддержка создания хардлинков и симлинков. Экспериментируйте, буду ждать замечаний и предложений.

Комментариев нет: