Точка соединения NTFS

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Точка соединения NTFS (англ. NTFS Junction Point) — нововведение в файловой системе NTFS 5.0 (файловая система по умолчанию в Windows 2000). Суть нововведения заключается в том, что указанный логический диск либо папка будет отображаться как папка на другом логическом диске либо в другой папке. Эта возможность позволяет создавать некоторые эффекты с файловой системой (например, хранить два профиля одного и того же пользователя и переключаться между ними без особых проблем). Точка соединения реализована в NTFS как особый тип точки повторной обработки (англ. reparse point)[1].

Данную функцию можно настроить в оснастке «Управление дисками»: правой кнопкой на подключаемом диске, пункт «Изменить букву диска или путь к диску…», далее в списке будут отображены все возможные пути к диску, по умолчанию диск доступен по своей букве («Х:» — где Х буква диска). Менять пути к диску можно соответствующими кнопками под списком.

Для создания точки соединения на папку можно воспользоваться утилитой linkd, которая входит в комплект Windows 2000 and Windows XP Resource Kits. В Windows Vista точку соединения или символьную ссылку можно создать с помощью стандартной консольной команды mklink.

Для доступа к такой папке не нужны никакие дополнительные настройки приложений, то есть доступ осуществляется введением адреса папки. Таким образом, исчезает ограничение на 26 локальных томов на одном компьютере (количество букв английского алфавита для именования дисков), так как том может существовать без присвоения ему имени.

Предупреждение[править | править вики-текст]

  • Microsoft настоятельно рекомендует:[2]
    • Используйте списки управления доступом (ACL) NTFS для защиты точек соединения от непредумышленного удаления.
    • Используйте списки управления доступом (ACL) NTFS для защиты файлов и каталогов, являющихся объектами точек соединения, от непредумышленного удаления и других операций файловой системы.
    • Не удаляйте точку соединения с помощью проводника, команды del /s или других средств файловой системы, рекурсивно работающих с деревьями каталогов. Данные средства воздействуют на целевой каталог и все его подкаталоги. Для безопасного удаления точек соединения рекомендуется использовать только специальные утилиты для работы с точками соединения.
    • Проявляйте осторожность, применяя списки управления доступом или изменяя степень сжатия файлов в дереве каталогов, в которое входят точки соединения NTFS.
    • Не создавайте циклы пространства имен с точками соединения NTFS или DFS.
    • Размещайте все точки соединения в безопасном месте в пространстве имен, в котором их тестирование будет безопасным и в котором другие пользователи не смогут по ошибке удалить их или войти в них.
  • Существуют проблемы с точками соединения на контроллерах доменов MS Windows 2000 и некоторых файлах Active Directory.[3]

Замеченные особенности[править | править вики-текст]

Windows 2000/XP/2003[править | править вики-текст]

Проводник Windows[править | править вики-текст]

  • Удаление точки соединения средствами Проводника при использовании shift-delete приведёт к немедленному удалению целевых файлов.
  • Если точка соединения отправлена в корзину, целевые файлы будут казаться незатронутыми, но будут удалены при очистке корзины.
  • Перемещение точки соединения в пределах диска просто перемещает точку соединения. Однако перемещение на другой диск превратит её в обычную директорию и переместит вместе с ней все файлы (оставив оригинальную целевую директорию пустой). Отмена перемещения вернет папку и всё её содержимое назад на изначальный диск, но целевая директория останется пустой (то есть точка соединения не пересоздаётся).
  • При просмотре папки через Проводник, рекомендуется использовать shift-delete для удаления папок; файлы же удаляются обычным способом. Отключение корзины диска, на котором находится точка соединения, позволит удалять папки обыкновенным способом.

Интерпретатор командной строки (cmd.exe)[править | править вики-текст]

  • В Windows 2000 и более поздних версиях команда dir распознаёт точки соединения, отображая в списке содержимого <JUNCTION> вместо <DIR> (используйте dir с опцией /A или /AL).
  • Любые команды для работы с файлами обычной директории здесь будут работать так же. Поэтому не следует использовать команду del myjunction, — в результате уничтожатся все файлы целевой директории.
  • Команды rmdir и move отлично работают с соединениями с той оговоркой, что move (в противоположность Проводнику, как отмечалось выше) не даст переместить соединение на другой раздел.
  • Команда rmdir безопасна в том смысле, что она удаляет только точку соединения, не целевые файлы.
  • При просмотре директории через интерфейс командной строки можно удалять файлы, но в отличие от Проводника, директории также могут быть удалены (например, с помощью rmdir /s dirname).
  • Используя команду linkd с ключом /d можно безопасно удалить точку соединения.

Общее[править | править вики-текст]

  • Поместив точку соединения непосредственно в указываемую ей директорию, в файловой структуре можно создать бесконечный цикл. Это может запутать некоторые программы, такие как антивирусы, сканирующие целиком дерево папок; выйти из рекурсии они смогут только при аварийном завершении или попытке обратиться к пути с длиной более 255 символов, что породит ошибку Windows API. Пример такой ситуации можно найти в Windows Vista и Windows 7: "C:\Users\%USERNAME%\AppData\Local\Application Data". Здесь "Application Data" — точка соединения, указывающая на "C:\Users\%USERNAME%\AppData\Local\" для совместимости с устаревшими приложениями.
  • Наследование прав ACL изначально базируется на разделы и не работает с соединениями.

Windows Vista/7[править | править вики-текст]

Проводник Windows[править | править вики-текст]

  • Точки соединения обозначаются значком трехзвенной цепочки.
  • Теперь Проводник позволяет безопасно удалять точки соединения.
  • Точка соединения может быть восстановлена из корзины.

Символьные ссылки[править | править вики-текст]

Windows Vista поддерживает новую возможность — символьные ссылки, заменяющие точки соединения в Windows 2000 и Windows XP. Они созданы помочь миграции приложений и для улучшения их совместимости с операционными системами UNIX.[4]

В отличие от точек соединения, символьные ссылки могут быть связаны с файлом или даже с удалённым сетевым путём SMB. К тому же, реализация символьных ссылок NTFS предоставляет полную поддержку ссылок между файловыми системами. Однако для подобной межкомпьютерной функциональности символьных ссылок требуется их поддержка удалённой системой, что тем самым ограничивает их поддержку до Windows Vista и последующих операционных систем.

Ссылки[править | править вики-текст]

  1. Создание символьной ссылки Windows на C/C++
  2. Создание точек соединения NTFS и управление ими. Microsoft. Проверено 13 декабря 2010. Архивировано из первоисточника 15 марта 2012.
  3. Neohapsis.
  4. Symbolic Links. MSDN. Архивировано из первоисточника 15 марта 2012.